= Development Projects =

 * libressl (current)
 * birdshack (future)
 * misc
  * openca-ocspd patches
  * wordpress-certificate login plugin
  * roundcube certificate login

= Requirements from a developers point of view =
 * good branch management
  * easy to make a new branch
  * intelligent merge
 * good response times (to make small and frequent commits feasible)
 * (enforceable) workflow (more procedure than tech, non the less...)
  * more structured testing
   * what specifically to test on a patch
   * how many (and whose) stamps of approval are required
 * hashing & signing
  * devel: THIS is my patch, and the copy you have is unchanged.
  * test_1: I checked THIS patch, and I found it to be good/bad. (+comments)
  * test_n: I checked THIS patch, and I found it to be good/bad. (+comments)
  * leader: "According to policy and test results, THIS patch is acceptable. Admins please install it on the production system, ASAC." (As soon as convenient)
  . vs. "According to policy and test results, THIS patch is not acceptable. Admins, take note that it does NOT reach the production system."
  * especially important if we plan to outsource hosting of the central repository (in order to verify the hoster doesn't tamper with our code)
 * compatibility between the one (critical) production repository and one, or more, (non-critical) devel and/or test repositories.
  * frequent updates/replication (uni-directional) from production to devel/test.
 * continious integration
  * works with SCM [[https://lists.cacert.org/wws/arc/cacert-devel/2009-09/msg00062.html|PG]]
 * easy to grab working testimage [[https://lists.cacert.org/wws/arc/cacert-devel/2009-03/msg00019.html|DB]]

== Nice to have ==
 * fast checkouts to make bughunting easier
 * someone to say "enough, this patch is/isn't acceptable"
 * someone to prod buttock if the flow stagnates

= system admin requirements =
 * Outsourced or standard packages on Linux distro
 * No sysadmin interaction required to create accounts

== matrix ==
||||<style="text-align: center;">requirement ||||||||||<style="text-align: center;">repo ||
||||<style="text-align: center;"> ||CVS ||Git ||Mercurial ||Subversion ||... ||
||1 ||Branches (easy) || ||yes ||yes ||somewhat || ||
||2 ||Branch merging ||mess ||nice ||nice ||mess || ||
||3 ||Response times || ||speed of light ||speed of sound || || ||
||4 ||Hashing || ||yes ||yes ||indirectly || ||
||5 ||Signing || ||yes ||yes ||indirectly || ||
||6 ||[[http://whygitisbetterthanx.com/#any-workflow|workflow]] || ||[[http://source.android.com/submit-patches/workflow|proposal]] || || || ||
||7 ||compatibility with production repo || || || || || ||
||... ||... || || || || || ||
||n ||... || || || || || ||


== Preferences ==
=== SCM ===
 * git [[https://lists.cacert.org/wws/arc/cacert-devel/2009-09/msg00045.html|JS]]

=== Infrastructure ===
 * Redmine[[https://lists.cacert.org/wws/arc/cacert-devel/2009-04/msg00018.html|AMP]]

= Hosting Options =
== Gitorious ==
 * [[http://www.gitorious.org/about|Gitorious]]
  * SCM: git
  * OpenID registration
  * users can create public clones
  * Merge request system available

== SourceForge ==
 * [[http://sourceforge.net/apps/trac/sourceforge/wiki/WikiStart|SourceForge]]
  * SCM: Subversion, Git, Mercurial, Bazaar, CVS
  * OpenID registration

== Others? ==
== Self hosting ==
 * Option tools that aren't included on outsourced provider can be CAcert run if there's smooth intergration

= Discussion Links =
TODO - extract requirements from:

 * [[https://lists.cacert.org/wws/arc/cacert-devel/2009-09/msg00038.html|WvdR]] thread
 * [[https://lists.cacert.org/wws/arc/cacert-devel/2009-09/msg00021.html|DA]] thread
 * [[https://lists.cacert.org/wws/arc/cacert-devel/2009-03/msg00019.html|DB]] test image thread

----
CategorySoftware