Wiki of the Month September 2014
This website is no longer using SMW.
|Table of Contents|
Funtoo Linux is a Linux-based operating system that is a variant of Gentoo Linux and run by Daniel Robbins.
Funtoo Linux uses Semantic MediaWiki as its official Web site. Our official home page, documentation, tutorials, and package pages are all stored as Semantic MediaWiki pages.
First and foremost, we store our official installation documentation on the wiki. This is the most critical document related to Funtoo Linux. While this document does not store its own semantic data, it does contain a semantic query near the end to display relevant additional topics for exploration by new Funtoo Linux users.
Semantic User Pages
I first started using Semantic MediaWiki to create standardized user pages on our wiki. Semantic Forms is used to provide a form for users to fill out to provide information about themselves, such as their contact information and geographic location. This information is displayed on the right-hand side of their user page (see example here) using a template. Their geographic location is also used to render a global "Usermap", which allows Funtoo Linux users to see the location of everyone in the Funtoo Linux community. Gravatar integration is used to render user avatars.
As Funtoo Linux infrastructure evolved, I developed a custom LDAP authentication engine, which was integrated into our wiki using the MediaWiki LDAP Authentication Extension. As more user data started being stored in LDAP rather than the wiki, the External Data extension was used to integrate much of this data into the existing user pages, so that information wasn't duplicated between LDAP and the user pages.
Funtoo Linux then began using Semantic MediaWiki to track information related to Funtoo Linux Optimization Proposals, or "FLOPS". FLOPS are proposals for improving Funtoo Linux. A semantic form is used to define a FLOP, and relevant metadata such as the submission date and author are stored semantically. Our FLOP template integrates with our user pages and displays the user's full name if specified, rather than simply the username, but still properly links to the userpage.
Linux Packages and Repositories
Since beginning to use MediaWiki, we have tried several approaches for storing Linux package information in our wiki, and none really worked well for us until a semantic solution was implemented. Package pages (see example here) are used to store documentation and other relevant information about Linux packages that are part of Funtoo Linux. The wiki aspect of the package pages allow anyone to improve our documentation, while the semantic features allow for packages to be categorized and queried. In addition, as with our user pages, the External Data extension is used to integrate information from our official package repositories so that we have a single authoritative source for package data and do not need to duplicate or manually synchronize information between our package repository and wiki.
In addition to storing Linux package information on the wiki, we also store information related to package repositories (see example here.) Every package has a "home" where it lives, which is typically a git repository. By storing package repository information semantically on our wiki, we are able to create a coherent data model so that users can understand where to find the actual source code for every package we document.
Semantic MediaWiki has proven itself to be a very capable platform, and is a technology I plan to leverage even more in the future. Integrating external data into Semantic MediaWiki is a very powerful capability. In the future, I'd like to identify those who support Funtoo Linux financially by providing them with a cool icon on their user profile. There are also quite a few cool things we can start to do as we get more packages added to the wiki. The potential of Semantic MediaWiki as a platform for integrating automatically-generated information with user-created documentation is one of its very compelling features.
Below, you can find links mentioned above:
- Our install documentation - a semantic query at the very end to show relevant links
- an example package page
- Example Repository
- Example FLOP
- Example User Page
- Our Usermap