Loading...
 

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

Table of contents



    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