Fullscreen
Loading...
 
[Show/Hide Left Column]
[Show/Hide Right Column]

Software_Project



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 Open Moko project, which uses several applications to manage its community.

  1. MediaWiki for the main site
  2. Not one but two instances of Trac for bug tracking, and more (they migrated from Bugzilla)
  3. Planet for RSS aggregation
  4. Gforge for project management
  5. 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 all-in-one application like Tiki 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 Tiki instead of the above combination:

The "bad"

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

Things we should improve to make Tiki an even more compelling software collaboration tool:

Related: Support_Mozilla_com


We'll start below



Features & settings

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
 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
 wikiplugin_proposal: y




Creating a menu


Top bar menu

YAML
preferences:
 feature_sitemenu : y
 feature_topbar_id_menu: $profileobject:Software_Project_menu$


YAML
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 ]





Modules

YAML
objects:
 -
  type: module
  ref: module_minichat
  data:
   name: minichat
   groups: [ Anonymous, Registered ]
   position: right
   order: 2



Permissions

Uses: Community_Permissions

dependencies:
- $profiles.tiki.org:Community_Permissions:Community_Permissions
- $profiles.tiki.org:Bug_Tracker:bug_tracker
- $profiles.tiki.org:General_File_Gallery:General_File_Gallery
- $profiles.tiki.org:General_Forum:General_Forum
- $profiles.tiki.org:Sample_Articles_include:Sample_Articles_include
- $profiles.tiki.org:Test_All_Themes:Test_All_Themes
- $profiles.tiki.org:powered_by:powered_by # powered_by

Dashboard

YAML
preferences:
 wikiplugin_list: y
 rating_advanced: y
 rating_recalculation: indexing
 feature_wiki_argvariable: y
objects:
 -
  type: wiki_page
  ref: page_home
  data:
   name: HomePage
   content: wikicontent:Software_Project_HomePage
 -
  type: category
  ref: category_rejected
  data:
   name: Rejected
 -
  type: rating_config
  ref: adv_score
  data:
   name: Score
   formula: (add (attribute (object type object-id) (property tiki.proposal.accept) (default 0)) (mul -1 (attribute (object type object-id) (property tiki.proposal.reject) (default 0))))
 -
  type: rating_config
  ref: adv_negative
  data:
   name: Negative
   formula: (min 1 (max 0 (add (mul -1 (attribute (object type object-id) (property tiki.proposal.accept) (default 0))) (attribute (object type object-id) (property tiki.proposal.reject) (default 0)))))


Software_Project_HomePage

Hooks for version control

YAML
permissions:
 Repository:
  description: Group allowed to trigger the data channels to create content based on commits from Subversion or other version control tools.
 Quality Team:
  description: Opinions that matter.
 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 ]


Setting up data channels for:

And related files:

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. Tiki provides scripts that can be used to pull revisions from subversion and push them to Tiki.

Requirements:
  1. PHP >= 5.2 with CLI
  2. PHP's Subversion extension (tested with stable 1.0.0)
  3. Cron to perform the check periodically

This can run on a server independent from both Tiki and Subversion.


Steps:
  1. Create a user in Tiki and add it to the group Repository (created by this profile).
  2. Check-out version-control-bridge from the Tiki repository into a directory which is not web-accessible.
    check out files to current directory
    svn co https://tikiwiki.svn.sourceforge.net/svnroot/tikiwiki/version-control-bridge/ .
  3. Create a configuration file (sample in svnpull.php)
  4. 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.
  5. 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.


Todo

  • Make an instruction page

Related links


alias

Contributors to this page: Marc Laporte , Louis-Philippe Huberdeau and System Administrator .
Page last modified on Sunday 13 of January, 2013 18:26:39 CET by Marc Laporte.