From HackerspaceWiki
Jump to: navigation, search
Why Creating Synergies Between Hacker Spaces Wikis
Where Metalab, NYC Resistor, Syn2Cat, /tmp/lab, HäckLäb, Alpha One Labs, KwartzLab
Who astera, hellekin, georgyo, Tschew, kwisatz, HansF, elmom, psytek, Jeroen De Dauw
More Info
Tags WikiSpaces, MediaWiki, Semantic MediaWiki, hackerspaces

This page is a draft, for the current project, see the wikispaces wiki.


The primary goal of the WikiSpaces project is to provide a 'startup' wiki, which is basically a MediaWiki distribution especially for hackerspaces. This distribution will provide a working, up to date, MediaWiki installation, with the commonly needed extensions installed and configured. These extensions would include everything that is in Semantic Bundle, most notably Semantic MediaWiki and Semantic Forms. Also included will be ready to use (semantic) data structures, templates and category pages. The whole deal will then be available as a copy of the complete file structure, and a MySQL database dump.

This goal will make it a lot easier for people who are not experienced with MediaWiki and Semantic MediaWiki to get started, as well as prevent everyone from doing the same work over and over again. Obviously this will also greatly increase the overall quality of the wiki's and their data structures.

A secondary goal is to enable the sharing of data between wiki's, most importantly events. The biggest challenge here is that everyone should use similar data structures, which will be the case if the primary goal is successful.

Starting up the project[edit]

This project is still in planning phase.

Development tools[edit]

To develop this 'startup' wiki distribution, we need several things:

  • Source code repository (SVN or GIT?) for the MediaWiki files and extensions.
  • A place to run a 'clean' version of the wiki on which data structures, templates, and other content can be developed. This wiki might contain a few examples, but is not to be used for any real data entry.
  • Some 'project home' place, where stable releases can be posted (Google code?).
  • A place to document the project (here on

Any other things?


Please add your name to the list if you want to help out in any aspect of the project, and describe what you want to do.

  • Jeroen De Dauw I'm willing to do all the needed work on the MW/extension installation and configuration part, and willing to help out with the data structures. Keeping the software up to date should also be no problem.
  • Kwisatz I can help out with data structures, templating and forms. I can also set up an SVN repository, but unfortunately not git.
  • carlynorama I can help with data structures templating, etc... we're developing our's now, so not duplicating work sounds good!
  • Bolster Currently playing with the SpaceAPI, more than happy to contribute


A name for the distribution/bundle would be useful. Any idea's? Please list ideas here:

  • HackerSpacesMediaWiki (simple, descriptive, but too long?)

Distribution contents[edit]

The software in this bundle should be kept up to date, and free of compatibility problems by the people involved in this project. The contents will be mainly based on what's in Semantic Bundle, but also contain some other useful extensions. It's probably best to just update the whole deal every time a new SB is released.

  • MediaWiki
    • Admin Links - defines a special page that serves as a "control panel" for administrative tasks
    • Array Extension - defines useful parser functions for manipulating arrays
    • Data Transfer - allows importing data into and out of the wiki via XML and CSV formats
    • External Data - allows for displaying data from outside APIs in the wiki
    • Header Tabs - allows to convert top-level sections of the page into tabs; often used with Semantic Forms to make long forms more user-friendly
    • Maps - allows for displaying individual points and geocoding addresses using various map services; required by Semantic Maps
    • Page Object Model (POM) - a code library that helps extension and bot developers manipulate parts of structured wiki text easily using a model similar to the W3C DOM. It is also a MediaWiki API extension to perform such modifications remotely.
    • Parser Functions - adds useful parser functions for programming logic and string manipulation
    • Replace Text - provides a form for administrators to do a text search-and-replace across the wiki
    • Validator - validates the input for parser functions and the like; required by both Maps and Semantic Maps
    • Widgets - allows adding widgets to wiki by simply creating pages in the Widget namespace
    • Cite - allows editors to create footnotes
    • Captchas
      • Confirm Edit - enables a simple text Captcha that will probably not allow most bots to edit your site OR
      • ReCAPTCHA - better Captcha but requires Google API key

Wiki contents[edit]

This is mainly to decide upon data structures. The layout parts of the templates can be created on the go once the wiki is up and the data structures are in place. Feel free to add your own idea's, but keep in mind that once the wiki itself is up, this draft should be easily convertible to documentation. If you simply have an idea but don't know how to implement it, add it to the discussion page.


Category: People[edit]

Existing stuff that might be used or copied: 0x20

This category could contain a Map showing all people that have entered an address.
The category should ideally use the User:namespace. The Semantic Forms Extension allows this: See how & See also

Template: Person[edit]

Existing stuff that might be used or copied:

Used semantic properties:

  • Has firstname, type String
  • Has surname, type String
  • Has email, type URL
  • Has jabber, type URL
  • Has website, type URL
  • Has callsign, type String. For radio amateurs.
  • Has location, type Page.
  • Is member of, type String (Array). List relevant club memberships beside the hackerspace.

The template could show various queried information, including attended events and participated projects, as well was their planned versions.

Form: Person[edit]

Existing stuff that might be used or copied: 0x20


Category: Events[edit]

Existing stuff that might be used or copied: 0x20

This category could contain calenders, timelines and simple tables to show events by date, and a map to show them by location.

Note that some of the visualization methods used herein might also be used on other pages. (I.e. Upcoming Events on syn2cat)

Template: Event[edit]

Existing stuff that might be used, copied and merged:

Used semantic properties (click on a property to see detailed instructions):

  • Has event type, type String [1]
  • Has location, type Page. These pages are in the locations category, and have default form Location.
  • Has venue, type Page. Defines the venue of an event.
  • Has attendees, list of type Page. These pages are in the people category, and have default form Person.
  • Has presenters, list of type Page. These pages are in the people category, and have default form Person.
  • Has start date, type Date.
  • Has end date, type Date.
  • Has cost, type Currency
  • Has website, type URL. Link to an event's external website, if available.
  • Has superevent, type Page. Link to a superevent, if available.
  • Is recurring, type String.

Form: Event[edit]

Existing stuff that might be used or copied: 0x20

Auto-completion possible on location, attendees and presenters fields.


Category: Locations[edit]

Existing stuff that might be used or copied: 0x20

Template: Location[edit]

Existing stuff that might be used or copied: 0x20

Used semantic properties:

  • Has address
  • Has city
  • Has state
  • Has country

From these properties can then be derived:

  • Has coordinates, type Geographic Coordinate. The exact coordinates of an event.
    • An option should be made available to give exact coordinates for locations that don't have an address or where the geoservice information is incorrect.
  • Has location, type String. A concaternation of the address, city, state and country, holding into account empty values, so this property can be used to display the actual location as text.

Form: Location[edit]

Existing stuff that might be used or copied: 0x20


Category: Projects[edit]

Template: Project[edit]

Stuff that could be used, copied or merged:

Used semantic properties:

  • Has description, type String. A short description of the project
  • Has contact, type Page
  • Has meeting, type Page. A link to the corresponding meeting
  • Has member, type Page
  • Has status, type String
  • Has project type, type String
  • Has repository, type String. Used if the project is of type software or misc and uses a sourcecode repository (Not URL, because URL checks on protocol does not accept svn://)

Form: Project[edit]

Stuff that could be used, copied or merged:

News items[edit]

Category: News items[edit]

Existing stuff that might be used or copied: 0x20

Template: News item[edit]

Existing stuff that might be used or copied: 0x20

Used semantic properties:

  • ...
  • ...

Form: News item[edit]

Existing stuff that might be used or copied: 0x20

Semantic Drilldown[edit]

It's probably also a good idea to define drill-down filters for the above data structures.

Property details[edit]

Some properties have specific characteristics or need to be handled in a special way, require extraordinary parser functions, etc.. These are listed here and explained in detail:

Has attendees[edit]

Has attendees is a comma separated list of values that is handled by the #arraymap parser function included in Semantic Forms. An example of such a handling would be:

{{#arraymap:{{{contact|}}}|,|x|[[Has Contact::User:x|x]] ([[Special:EmailUser/x|mail]])|, }}

Is recurring[edit]

Linked by an #ifeq: parser function to #set_recurring_event functionality. I.e.

{{#ifeq: {{{recurring|}}} | weekly | {{RecurringEvent | startDate={{{from}}} | endDate={{{till}}} | unit=week | period=1 }} }}
{{#ifeq: {{{recurring|}}} | bi-weekly | {{RecurringEvent | startDate={{{from}}} | endDate={{{till}}} | unit=week | period=2 }} }}
Allowed values: no, daily, weekly, bi-weekly, monthly, weekdayofmonth, bi-monthly, yearly
Generates: Has date

Has status[edit]

Allowed values: planning, running, concluded

Has event type[edit]

Sets page category

Has project type[edit]

Sets page category

Allowed values: security, hardware, software, charity, media, misc, art

Has location[edit]

See also[edit]

  1. It would be cool though to have a type "Category" to link these directly to their respective categories