Developer Area/Mahara project overview: Difference between revisions
From Mahara Wiki
< Developer Area
Line 50: | Line 50: | ||
See [[Developer_Area/Source code]] | See [[Developer_Area/Source code]] | ||
While ZIP files of Mahara can be [https://launchpad.net/mahara/1.8 downloaded] from Launchpad, the full Mahara codebase is managed with the [http://en.wikipedia.org/wiki/Git git] version control system. The "live" codebase is hosted in a git repo controlled by our Gerrit code review system at [https://reviews.mahara.org https://reviews.mahara.org]. This is then synced automatically to | While ZIP files of Mahara can be [https://launchpad.net/mahara/1.8 downloaded] from Launchpad, the full Mahara codebase is managed with the [http://en.wikipedia.org/wiki/Git git] version control system. The "live" codebase is hosted in a git repo controlled by our Gerrit code review system at [https://reviews.mahara.org https://reviews.mahara.org]. This is then synced automatically to [https://gitorious.org/mahara/mahara Gitorious] and [https://github.com/MaharaProject/mahara Github]. | ||
=== Code branches === | === Code branches === |
Revision as of 11:15, 4 April 2014
This page describes the overall development process for the Mahara project.
- For technical details on the code, see Developer_Area/Mahara_Architecture_Introduction
- For other ways to contribute to Mahara see Contributing to Mahara
Who makes Mahara?
- Catalyst IT (http://catalyst.net.nz), is the company that originated the Mahara project, and which leads its development. Catalyst hosts https://mahara.org, maintains a (small) team of full-time Mahara developers (sometimes referred to as Mahara HQ), and currently handles most aspects of the Mahara release cycle.
- Mahara Contributors include anyone who makes an improvement to Mahara and shares that improvement with the community. Some contributors are from schools or universities that use Mahara. Others are from companies like Catalyst which provide support for Mahara installations. And others are simply enthusiast users of Mahara. Contributions range from individual bug fixes, to system-wide enhancements.
- Any member of the public is welcome to be a contributor.
- There is also a Mahara contributors group on Launchpad, which anyone with an interest in Mahara is welcome to join.
- Anyone is also welcome to join the "Mahara Testers" group on https://reviews.mahara.org, to gain the ability to mark other contributors' patches as "+1 review"'ed, and verified. Just ask on IRC or on the mahara.org forums.
- Mahara Core Developers aka Mahara Reviewers are users who have "+2 review" and commit access on Mahara's code review system, [1]. To ensure the quality of Mahara's code, every contribution is reviewed and committed by a trusted reviewer who is not the code's author.
- The process to become a reviewer is described here: Developer_Area/Commit_Policy#Becoming_a_reviewer
- In addition to the gerrit group, there is a Launchpad "Mahara Reviewers" group, which has management privileges in the Mahara project on Launchpad: https://launchpad.net/~mahara-reviewers
- The Mahara Security Team is a subset of the Mahara Reviewers who review security issues.
- Any approved Mahara Reviewer who has an interest in security and isn't dodgy, is welcome to join the Mahara Security Team.
- Mahara Translators are people who help out with translating Mahara and/or its user manual to other languages
- Mahara translators are invited to join the translation group on Launchpad for any languages their participate in.
Mahara versions
See 6MonthlyCycle
Starting with Mahara 1.5, Mahara has been on a 6-month release cycle, introducing a new major release in April and October. Major releases increase the version number by 0.1 (1.5 -> 1.6 -> 1.7) and include major new features.
Mahara minor releases include only bug fixes and security fixes. They are released as needed, according to no fixed schedule. Minor releases increase the version number by 0.0.1 (1.7.0 -> 1.7.1 -> 1.7.2).
Support lifetime
Mahara currently provides updates (minor releases) for the three latest major versions. As of this writing, this includes 1.8, 1.7, and 1.6. The code base for older versions is still available, and as an open source project anyone is welcome to make whatever changes or backport whatever fixes they want, but the only support the Mahara project can provide for older versions is to assist in upgrading them to newer, supported versions.
The latest version, Mahara 1.8, provides the ability to upgrade versions 1.1.0 or later. If there are still any Mahara 1.0 installations out there, you'll need to upgrade to 1.1.0 before upgrading to 1.8.
Issue tracking
Issue tracking is an important part of a continuous quality control process. It involves reporting of problems (bugs), ideas for improvement, and new features. Unlike most proprietary software programs, Mahara issue reporting and tracking information is open to everyone. Mahara bugs are reported and tracked in the Mahara project on Launchpad.net: https://bugs.launchpad.net/mahara
All Mahara users are encouraged to be active participants in the issue tracker. Anyone with a Launchpad account can create, view, comment on, vote, and watch bugs.
Where the code lives
See Developer_Area/Source code
While ZIP files of Mahara can be downloaded from Launchpad, the full Mahara codebase is managed with the git version control system. The "live" codebase is hosted in a git repo controlled by our Gerrit code review system at https://reviews.mahara.org. This is then synced automatically to Gitorious and Github.
Code branches
Mahara has a separate git "branch" for each major release, with the names 1.8_STABLE, 1.7_STABLE, 1.6_STABLE, etc, going all the way back to 1.0_STABLE. Additionally, there is a "master" branch which is the location of ongoing development for the next major release.
How your code becomes Mahara core code
So how can a contributor (such as yourself) get their Mahara code get into the official git repository as part of the next Mahara release?
Coding Guidelines
See Developer Area/Coding guidelines
First, a contributor writes some code. Mahara has a loose set of coding guidelines, and code is generally expected to follow PHP best practices: following security practices, "blending in" with the surrounding code, using Mahara's existing APIs, maximizing code re-use, and minimizing API changes, that sort of thing.
Sharing the code
See Developer Area/Contributing Code
Then, the contributor shares their code with the Mahara project. The preferred way to do this, for users with a sufficient level of technical ability, is for them to submit it directly into our Gerrit code review system. But we'll also welcome code contributed via a patch file, a PHP file, or even just a sufficiently specific Launchpad comment. In those cases, a Mahara reviewer can create a Gerrit Change on the contributor's behalf
Code review
See Developer Area/How to Review Code and Developer Area/Code Review
The submitted Change (aka "patch") in Gerrit is then reviewed and verified (tested). Each patch must receive a "+1" verified score, which means that someone tested it and found that it worked. It must also receive a "+2" reviewed score, which means that an approved Mahara Reviewer examined the code and saw no problems with it. If the patch fails testing or contains review problems, the tester or reviewer will leave a friendly comment explaining what the contributor needs to change and why. The contributor can then submit a revised version, which will be reviewed and tested anew.
Once the Change has been verified and reviewed, a Mahara Reviewer can then instruct gerrit to merge it into the appropriate branch. It will then be included in the next Mahara release.
Security issues
See Security#How_to_report_a_security_issue?
There's a separate, parallel process for handling Mahara security issues, in order to ensure that they aren't disclosed to the public until after a patch is released.
Plugins and APIs
Although Mahara is open source and you can change anything you want, the best and most maintainable way to extend Mahara is to write a plugin. Plugins are a directory of code that can be simply "dropped" in to any Mahara installation and it will be detected, installed, and automatically made available as a tool within the Mahara interface.
Plugins can also easily be shared with other Mahara sites without having to go through the process of being "upstreamed" into Mahara core. There's even a page on the Mahara wiki for sharing "third-party" Mahara plugins: See Plugins