160 likes | 176 Views
Learn the user-driven development process and quality standards of the Apache HTTPD Project, including the approval process, voting system, and vetoes. Discover how vetoes can be rescinded or overridden and how issues are tracked through the Apache Bug Report Database. Explore the patch submission process and how changes are tracked through the change log. Dive into the 'STATUS' file that keeps track of project plans and agendas. Gain insights into the patch-vote-release process and the roles of patch coordinator, vote coordinator, and release manager in applying patches and managing releases. Lastly, explore testing stages and discover related processes in other projects like FreeBSD, NetBSD, OpenPKG, and Mozilla.
E N D
Apache HTTPD Project • A user-driven development • Quality should override everything else • Meritocracy • The more work you have done, the more you are allowed to do • You have to prove yourself in the group
Level of involvement • Core group of committers (the PMC of Apache?) • “Business” issues and limited-circulation things • Committers • People with ‘write’ access to repository • Developers • Users
Developer Committer? • Nominated by a current active member • Unanimously approved by the voting members • In most cases, this ‘new’ member has been actively contributing to the group for over six months
Voting • Many issues are resolved by voting • Code change, feature proposal, etc • Kind of vote: • +1: yes • -1: no, or vetoes • +/- 0: no opinion Ideas must be review-then-commit (RTC); patches can be commit-then-review (CTR).
Approval Process • Consensus – for features? • Must receive at least 3 binding +1 votes and no vetos • Majority – for other thing, such as style? • Must receive at least 3 binding +1 votes and more +1 votes than -1 votes • Lazy – for patches? • No minimal requirement. No special discussion will be carried out until someone votes -1
Vetoes • Vetoes must be accompanied by a convincing explanation • Vetoes cannot be overwritten; vetoer must be the one who withdraw the vote • In progress by Apache HTTPD Group • Under what conditions a veto can be rescinded or overridden?
How do they track problems? • Apache Bug Report Database http://httpd.apache.org/bug_report.html • People not only use this tool to track problems (using PRs), but also use this tool to post occasional suggestion/fix. • State transition of PRs • Open Analyzed Feedback Closed? • Suspended?
Patches • A way to communicate proposed changes (output of a unified "diff -u oldfile newfile" command) • Official patch http://www.apache.org/dist/httpd/patches/ • Unofficial patch (Contributory) http://www.apache.org/dist/httpd/contrib/patches/
How do they track changes? • Change log http://www.apache.org/dist/httpd/CHANGES_2.0 • Categories • PR resolved by committers (majority) • Name listed on http://httpd.apache.org/contributors/ • PR resolved by developers • Enhancements/Features added by developers
Changes related to PRs • Fix suexec behavior with user directories. PR 7810. [Colm <colmmacc@redbrick.dcu.ie>] • Fix PidFile to default to rel_runtimedir instead of rel_logfiledir. PR 7841. [Andreas Hasenack <andreas@netbank.com.br>] • Properly substitute sbindir as httpd's location in apachectl. PR 7840. [Andreas Hasenack <andreas@netbank.com.br>]
Changes unrelated to PRs • Fix perchild MPM so that it uses ap_gname2id for groups instead of ap_uname2id. [Scott Lamb <slamb@slamb.org>] • Change mod_status to use scoreboard accessor functions so it can be used in any MPM without having to be recompiled. [Ryan Morgan <rmorgan@covalent.net>] • add optional fixup hook to proxy [Daniel Lopez <daniel@covalent.net>]
The “STATUS” file • Keep track of the agenda and plans for work • action items, proposed changes, tracking votes, brief note about developer’s task, release plans, etc • Automatically posted to the mailing list each week.
Apache HTTPD 2.0 series http://cvs.apache.org/viewcvs.cgi/httpd-2.0/STATUS?rev=1.621&conten-type=text/vnd.viewcvs-markup • Apache HTTPD 1.3 series http://cvs.apache.org/viewcvs.cgi/apache-1.3/STATUS?rev=1.987&content-type=text/vnd.viewcvs-markup
The ‘patch-vote-release’ process • Patch coordinator • Maintain and circulate the list of proposed patches • Vote coordinator • Announce a voting period, then tally the votes for each patch • Release manager • Apply the approved patches to the latest release
Testing/Stages? • Alpha? • Beta? • GA?
Other projects • FreeBSD http://www.freebsd.org/releng/ • NetBSD http://www.netbsd.org/developers/releng/release-process.html • OpenPKG http://www.openpkg.org/releng.html • Mozilla http://www.mozilla.org/projects/nspr/eng-process/release.html