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.
- MediaWiki for the main site
- Not one but two instances of Trac for bug tracking, and more (they migrated from Bugzilla)
- Planet for RSS aggregation
- Gforge for project management
- 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"
- not everything is done exactly the same.
- not all features are necessarily as advanced.
- Some feature are just missing.
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
Copy to clipboard
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
YAML
Copy to clipboard
preferences:
feature_sitemenu : y
feature_topbar_id_menu: $profileobject:Software_Project_menu$
YAML
Copy to clipboard
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
Copy to clipboard
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
Copy to clipboard
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
Copy to clipboard
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:
- PHP >= 5.2 with CLI
- 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 version-control-bridge from the Tiki repository into a directory which is not web-accessible.
check out files to current directory
Copy to clipboard
svn co https://tikiwiki.svn.sourceforge.net/svnroot/tikiwiki/version-control-bridge/ .
- Create a configuration file (sample in svnpull.php)
- 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.
Todo
Related links
alias