History: Software_Project
Source of version: 40
Copy to clipboard
{maketoc} A __software project__ profile is a high priority as it could help attract programmers to our project. Please see: http://en.wikipedia.org/wiki/Forge_(software) As an example, let's look at the [http://www.openmoko.org|Open Moko project], which uses several applications to manage its community. # [http://www.mediawiki.org/|MediaWiki] for the main site # Not [http://docs.openmoko.org/trac/|one] but [http://admin-trac.openmoko.org/trac|two] instances of [http://trac.edgewall.org/|Trac] for bug tracking, and more (they migrated from [http://www.bugzilla.org/|Bugzilla]) # [http://www.planetplanet.org/|Planet] for RSS aggregation # [http://gforge.org/|Gforge] for project management # [http://www.gnu.org/software/mailman/|Mailman] for the mailing lists/forums They appear to have used the "best of breed" strategy when picking applications. However, now, it must be quite a challenge to integrate these various applications. Pretty much all this functionality could have been handled by a single ((tw:all-in-one)) application like TikiWiki or with a framework/CMS with additional modules (like Drupal, Joomla!, Plone, Xoops, etc). The following profile is to meet this use case. Open Moko is a fairly large project though so let's keep in mind that most projects are much smaller. In using TikiWiki instead of the above combination: __The "bad"__ *not everything is done exactly the same. **Tiki forums are not the same as mailman mailing lists, and Open Moko wiki cleverly notes [http://wiki.openmoko.org/wiki/Discussion_Forums#Why_aren.27t_there_Web_forums.3F|that "Apparently, there are two groups of people: one group does not like Web forums; the other group prefers Web forums"] so we should set-up the ((doc:Forum and List Synchronization)) **Project management would be the TikiWiki way and not the [http://gforge.org/|gforge] way. *not all features are necesarily as advanced. *Some feature are just missing. **[http://dev.tikiwiki.org/wish1995|TikiWiki doesn't offer the svn browser feature that Trac does]. __The "good"__ *Tiki does have features that they may want. **For example, blogs and news articles. It would be even worse if they installed a [http://wordpress.org/|WordPress] blog on top of what they have. **Surveys **Etc. *Tiki would offer **Single Sign On (single user system, groups & permissions) **Global search engine **Consistent look & feel *Tighter integration permits better internal linking In this profile, we need *Wiki *Forums **((doc:Forum and Mailing List Synchronization)) *Improve the ((Bug_Tracker)) profile *RSS aggregator *Categories *((dev:Source browser)) *((dev:Code review)) *etc Things we should improve to make Tiki an even more compelling software collaboration tool: * http://blog.lphuberdeau.com/wordpress/2009/01/25/adding-collaboration-and-durability-to-code-reviews/ Related: ((Support_Mozilla_com)) We'll start below {maketoc} !Features & settings {CODE(caption=>YAML)} preferences: feature_articles: y feature_file_galleries: y feature_forums: y feature_trackers: y feature_categories: y feature_search: y feature_minichat: y feature_wiki: y feature_wiki_print: y feature_wiki_attachments: y feature_wiki_comments: y feature_backlinks: y style: coelesce.css feature_useGroupHome: y allowRegister: y forgotPass: y feature_userPreferences: y wiki_edit_plugin: y sitetitle: Our software project sitesubtitle: Release early, release often feature_mytiki: y feature_tasks: y {CODE} !Creating a menu !!Top bar menu {CODE(caption=>YAML,wrap=1)} preferences: feature_sitemenu : y feature_topbar_id_menu: $profileobject:Software_Project_menu$ {CODE} !!Menu items {CODE(caption=>YAML,wrap=1)} objects: - type: menu ref: Software_Project_menu data: name: Top menu description: A menu containing the base navigation of the site collapse: none items: - name: Home url: ((HomePage)) groups: [ Anonymous, Registered ] - name: About url: ((About)) groups: [ Anonymous, Registered ] items: - name: History url: ((History)) groups: [ Anonymous, Registered ] - name: Team url: ((Team)) groups: [ Anonymous, Registered ] - name: Documentation url: ((Documentation)) groups: [ Anonymous, Registered ] - name: Forums url: tiki-forums.php groups: [ Anonymous, Registered ] - name: Bugs url: ((Bug_Tracker)) groups: [ Anonymous, Registered ] - name: Download url: tiki-list_file_gallery.php groups: [ Anonymous, Registered ] - name: Contact url: ((Contact us)) groups: [ Anonymous, Registered ] - name: Admin menu url: tiki-admin_menu_options.php?menuId=43 permissions: [ edit_menu_option ] {CODE} !Modules {CODE(caption=>YAML)} objects: - type: module ref: module_minichat data: name: minichat groups: [ Anonymous, Registered ] position: right order: 2 {CODE} ! Permissions Uses: ((Community_Permissions)) {CODE(caption=>YAML)} dependencies: - $profiles.tikiwiki.org:Community_Permissions:Community_Permissions - $profiles.tikiwiki.org:Bug_Tracker:bug_tracker - $profiles.tikiwiki.org:General_File_Gallery:General_File_Gallery - $profiles.tikiwiki.org:General_Forum:General_Forum - $profiles.tikiwiki.org:Sample_Articles_include:Sample_Articles_include - $profiles.tikiwiki.org:Test_All_Themes:Test_All_Themes - $profiles.tikiwiki.org:powered_by:powered_by # ((powered_by)) {CODE} ! Hooks for version control {CODE(caption=>YAML, wrap=1)} permissions: Repository: description: Group allowed to trigger the data channels to create content based on commits from Subversion or other version control tools. Admins: objects: - type: wiki_page id: $channel_category allow: [ view, edit ] objects: - type: category ref: channel_category data: name: Data Channels items: - [ wiki_page, $page_init ] - [ wiki_page, $page_delete ] - [ wiki_page, $page_content ] - [ wiki_page, $page_bug ] - [ wiki_page, $template_header ] - [ wiki_page, $template_delete ] - [ wiki_page, $template_content ] - [ wiki_page, $template_bug ] - type: wiki_page ref: page_init data: name: RevisionInit content: wikidirect:Software_Project_RevisionInit - type: wiki_page ref: template_header data: name: Template_RevisionHeader content: wikidirect:Software_Project_Template_RevisionHeader - type: wiki_page ref: page_delete data: name: RevisionFileDelete content: wikidirect:Software_Project_RevisionFileDelete - type: wiki_page ref: template_delete data: name: Template_RevisionFileDelete content: wikidirect:Software_Project_Template_RevisionFileDelete - type: wiki_page ref: page_content data: name: RevisionFileContent content: wikidirect:Software_Project_RevisionFileContent - type: wiki_page ref: template_content data: name: Template_RevisionFileContent content: wikidirect:Software_Project_Template_RevisionFileContent - type: wiki_page ref: page_bug data: name: RevisionBugMention content: wikidirect:Software_Project_RevisionBugMention - type: wiki_page ref: template_bug data: name: Template_RevisionBugMention content: wikidirect:Software_Project_Template_RevisionBugMention - type: datachannel data: name: init_revision profile: $page_init groups: [ Repository ] - type: datachannel data: name: file_remove profile: $page_delete groups: [ Repository ] - type: datachannel data: name: file_content profile: $page_content groups: [ Repository ] - type: datachannel data: name: bug_mention profile: $page_bug groups: [ Repository ] {CODE} Setting up data channels for: * ((Software_Project_RevisionInit)) * ((Software_Project_RevisionFileDelete)) * ((Software_Project_RevisionFileContent)) * ((Software_Project_RevisionBugMention)) And related files: * ((Software_Project_Template_RevisionInit)) * ((Software_Project_Template_RevisionFileDelete)) * ((Software_Project_Template_RevisionFileContent)) * ((Software_Project_Template_RevisionBugMention)) !Connecting with Subversion This profile prepares a few data channels to connect with version control tools. For the connection to be complete, a few steps need to be performed. Tikiwiki provides scripts that can be used to pull revisions from subversion and push them to Tikiwiki. __Requirements:__ # PHP >= 5.2 with CLI # [http://pecl.php.net/package/svn/|PHP's Subversion extension] (tested with stable 1.0.0) # Cron to perform the check periodically ^This can run on a server independent from both Tiki and Subversion.^ __Steps:__ # Create a user in Tiki and add it to the group ''Repository'' (created by this profile). # Check-out [https://tikiwiki.svn.sourceforge.net/svnroot/tikiwiki/version-control-bridge|version-control-bridge] from the tikiwiki repository. # Create a configuration file (sample below) # Run `php svnpull.php | php tikipush.php` ** In a first step, svnpull will extract revisions from the repository with some progress displayed ** In a second step (sequential), tikipush will call the data channels and create pages in the wiki. Pages will contain the commit information such as the message, bugs referenced in it (such as fix 1234 or #233) and the content of any file modified. # After a successful test, add the command to a cron job __Supporting other version control tools:__ At this time, only Subversion is supported. To support other tools, svnpull.php must be replaced with a different script providing a similar JSON output. tikipush.php can still be used to call the data channels.