Difference between revisions of "Free Software Directory:Hack"

From Free Software Directory
Jump to: navigation, search
(directory-dev isn't up)
(12 intermediate revisions by 2 users not shown)
Line 1: Line 1:
this page is a work in progress
+
__NOTOC__
 +
__NOEDITSECTION__
 +
This is a work in progress. We'll be adding more info as we go, but this should be a good start if you want to hack on the Free Software Directory.
  
== A guide for hacking on the Directory ==
+
=== Getting Started ===
The Free Software Directory is built-upon MediaWiki and a set of extensions. [[Special:Version|Check out the list]] of what software we are using along with links to documentation. This guide will help you get started using and exploring some of the functionality provided by MediaWiki and these extensions. There are some limitations to what pages a non-administrative user can edit, but all of the examples in this guide can be done directly through your User page.
+
Create a user account and login so you can follow along with this guide. To learn about Semantic MediaWiki, first you need to cover some basics about MediaWiki. Start out learning from these links:
  
 +
* [http://www.mediawiki.org/wiki/Help:Formatting syntax]
 +
* [http://www.mediawiki.org/wiki/Help:Categories categories]
 +
* [http://www.mediawiki.org/wiki/Templates templates]
 +
* [http://www.mediawiki.org/wiki/Help:Talk_pages#User_talk_pages user talk page]
 +
* [http://www.mediawiki.org/wiki/Help:Namespaces namespaces]
 +
* [http://www.mediawiki.org/wiki/Help:Extension:ParserFunctions parser functions (extension)]
  
OUTLINE
+
=== Semantic MediaWiki ===
  
* Getting started
+
The Free Software Directory makes heavy use of The Semantic MediaWiki extension, so in order to help with development, take a look at the following introduction on SMW's site: [http://semantic-mediawiki.org/wiki/Introduction_to_SMW Introduction to SMW]. For a briefer introduction, you could start by reading up on the following topics:
** Editing your user page
 
** Getting help from other users via the talk page
 
** [[Special:SpecialPages|Special pages]]
 
** All of your user pages ( e.g., [http://directory.fsf.org/wiki?title=Special%3APrefixIndex&prefix=Jgay&namespace=2 User:Jgay's pages]).
 
* MediaWiki functionality
 
** Transclusion
 
** Templates and template directives
 
** Categories
 
** Namespaces
 
* Parser Functions
 
** Magic words
 
** Arrays
 
** Strings
 
** Conditionals
 
** Switch statements
 
** Misc
 
* Semantic MediaWiki Basics
 
** Properties
 
** Types
 
** Assignments
 
** inline queries
 
* Semantic MediaWiki advanced
 
** #set
 
** Arrays
 
** advanced queries
 
** Misc. such as concept pages, etc.
 
* Semantic Forms
 
** Form definitions
 
** Linking to forms
 
** Passing variables to forms
 
* Paradigms and styling
 
** Basic example of how we use MVC in Template:Show
 
** Inline styles
 
** User CSS pages
 
** Backend CSS
 
* Other topics
 
  
 +
* [http://semantic-mediawiki.org/wiki/Help:Properties_and_types properties and types]
 +
* [http://semantic-mediawiki.org/wiki/Help:Inline_queries inline queries (the fun stuff)]
 +
* [http://semantic-mediawiki.org/wiki/Help:Properties_and_types#Silent_annotations_using_.23set #set]
 +
* [http://www.mediawiki.org/wiki/Extension:Arrays arrays]
 +
* [http://www.mediawiki.org/wiki/Extension:Semantic_Forms semantic forms (extension)]
  
 +
=== The Free Software Directory ===
 +
 +
A few details about how the directory is organized:
 +
* [[Form:Entry]] is used to conveniently edit values that are stored on a program's page. Those values are passed through [[Template:Entry]]. Within Template:Entry, all of the displaying of values is performed by [[Template:Show]], which queries the semantic values that are set by the rest of Template:Entry.
 +
* all logged-in users have the ability to edit pages in the User: and Review namespaces
 +
* See [[:Category:Documentation]], particularly [[FSD:Workflow]].
 +
 +
Think before you edit:
 +
* '''do not casually edit Templates''' that are in wide use, especially by ''every program'' in the directory. This will create a huge work queue that will take hours to complete, slowing down the site. If a mistake gets made, it could render the site broken until the introduced bugs get fixed (after another long wait to update all the pages.) We have a development site ([http://directory-dev.fsf.org directory-dev.fsf.org]) that we use to test systemic changes before implementing them. (Update: It isn't up as of Friday, June 29th 2012. A ticket has been made, so hopefully it will be up soon.)
 +
 +
 +
The idea behind the Free Software Directory relaunch is that we would like a system where all users can submit changes and new entries, and where elevated users can implement those changes on the actual entries themselves.
 +
 +
We would also like the FSD to be more than just a directory of programs. We have different [[FSD:Features]] in mind that we would like to implement. One of those would be the ability for users to list which programs they use, either by tagging a program page itself, or by creating a queryable list of programs on user talk pages that would be displayed in any number of ways. If you have other ideas, we would be happy to hear about them and get your help in developing a number of ideas.
  
  
 
[[Category:Documentation]]
 
[[Category:Documentation]]

Revision as of 15:43, 29 June 2012


This is a work in progress. We'll be adding more info as we go, but this should be a good start if you want to hack on the Free Software Directory.

Getting Started

Create a user account and login so you can follow along with this guide. To learn about Semantic MediaWiki, first you need to cover some basics about MediaWiki. Start out learning from these links:

Semantic MediaWiki

The Free Software Directory makes heavy use of The Semantic MediaWiki extension, so in order to help with development, take a look at the following introduction on SMW's site: Introduction to SMW. For a briefer introduction, you could start by reading up on the following topics:

The Free Software Directory

A few details about how the directory is organized:

  • Form:Entry is used to conveniently edit values that are stored on a program's page. Those values are passed through Template:Entry. Within Template:Entry, all of the displaying of values is performed by Template:Show, which queries the semantic values that are set by the rest of Template:Entry.
  • all logged-in users have the ability to edit pages in the User: and Review namespaces
  • See Category:Documentation, particularly FSD:Workflow.

Think before you edit:

  • do not casually edit Templates that are in wide use, especially by every program in the directory. This will create a huge work queue that will take hours to complete, slowing down the site. If a mistake gets made, it could render the site broken until the introduced bugs get fixed (after another long wait to update all the pages.) We have a development site (directory-dev.fsf.org) that we use to test systemic changes before implementing them. (Update: It isn't up as of Friday, June 29th 2012. A ticket has been made, so hopefully it will be up soon.)


The idea behind the Free Software Directory relaunch is that we would like a system where all users can submit changes and new entries, and where elevated users can implement those changes on the actual entries themselves.

We would also like the FSD to be more than just a directory of programs. We have different FSD:Features in mind that we would like to implement. One of those would be the ability for users to list which programs they use, either by tagging a program page itself, or by creating a queryable list of programs on user talk pages that would be displayed in any number of ways. If you have other ideas, we would be happy to hear about them and get your help in developing a number of ideas.



Permission is granted to copy, distribute and/or modify this document under the terms of the GNU Free Documentation License, Version 1.3 or any later version published by the Free Software Foundation; with no Invariant Sections, no Front-Cover Texts, and no Back-Cover Texts. A copy of the license is included in the page “GNU Free Documentation License”.

The copyright and license notices on this page only apply to the text on this page. Any software or copyright-licenses or other similar notices described in this text has its own copyright notice and license, which can usually be found in the distribution or license text itself.