Loading...
 
Skip to main content

History: Software_Project

Source of version: 38

Copy to clipboard
            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.

__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.
        

History

Information Version
Sun 13 of Jan, 2013 17:26 GMT-0000 Marc Laporte http://home.gna.org/forgeplucker/jailbreaking-the-forges.html 62
Thu 23 of Aug, 2012 19:43 GMT-0000 Marc Laporte . 61
Thu 16 of Aug, 2012 19:55 GMT-0000 Marc Laporte categorize 60
Wed 08 of Aug, 2012 14:30 GMT-0000 Louis-Philippe Huberdeau Missing wiki argvariable 59
Wed 08 of Aug, 2012 14:14 GMT-0000 Louis-Philippe Huberdeau Test 58
Wed 08 of Aug, 2012 14:11 GMT-0000 Louis-Philippe Huberdeau Broken link 57
Wed 08 of Aug, 2012 14:10 GMT-0000 Louis-Philippe Huberdeau Setting a few required preferences 56
Tue 07 of Aug, 2012 19:57 GMT-0000 Louis-Philippe Huberdeau Setting appropriate calculations 55
Tue 07 of Aug, 2012 18:33 GMT-0000 Louis-Philippe Huberdeau Adding rating config 54
Tue 07 of Aug, 2012 18:09 GMT-0000 Louis-Philippe Huberdeau Switching from wikidirect to wikicontent to allow category reference in the dashboard 53
Tue 07 of Aug, 2012 18:08 GMT-0000 Louis-Philippe Huberdeau Adding category creation for rejected commits 52
Tue 07 of Aug, 2012 14:33 GMT-0000 Louis-Philippe Huberdeau Adding homepage override 51
Tue 07 of Aug, 2012 14:26 GMT-0000 Louis-Philippe Huberdeau Enabling proposal commit 50
Tue 04 of Jan, 2011 19:36 GMT-0000 Marc Laporte alias 49
Mon 20 of Dec, 2010 00:20 GMT-0000 Marc Laporte todo 48
Sun 19 of Dec, 2010 23:52 GMT-0000 Marc Laporte Style is not so nice 47
Sun 19 of Dec, 2010 23:39 GMT-0000 Marc Laporte link to sampl 46
Sun 19 of Dec, 2010 23:22 GMT-0000 Marc Laporte clarifying 45
Thu 16 of Dec, 2010 21:00 GMT-0000 Marc Laporte re-save 44
Tue 14 of Sep, 2010 03:15 GMT-0000 Marc Laporte cleaner 43
Fri 03 of Sep, 2010 14:05 GMT-0000 Marc Laporte making inactive for now (because of errors when trying to run profile) 42
Fri 03 of Sep, 2010 13:48 GMT-0000 Marc Laporte cleanup 41
Tue 22 of Jun, 2010 16:10 GMT-0000 Marc Laporte 40
Tue 15 of Jun, 2010 17:24 GMT-0000 System Administrator 39
Tue 15 of Jun, 2010 17:22 GMT-0000 System Administrator 38