wiki:Git/WhyGit

Version 4 (modified by Beman Dawes, 12 years ago) ( diff )

--

Why Should Boost Move to Git?

Subversion works well for Boost's version control needs, so why should we move to Git?

That's really the wrong question. Here are the real questions:

How can Boost grow to encompass many more libraries without becoming unwieldy?

Some aspects of Boost are already unwieldy, such as the trunk vs release-branch split, and the regression testing system. Users want to be able to install only the portions of Boost they are interested in, yet get dependencies automatically.

Decoupling the individual Boost libraries would be very helpful, or even essential, to solving those big picture problems. Decoupling would also make it easier for individual libraries to follow their own development cycles and development styles.

Decoupling is often called "modularization". See www.ryppl.org for one take on Boost modularization.

Why should Boost move to a distributed version control system?

  • Enables decoupling and modularization. While decoupling and modularization is certainly possible with non-distributed version control, a distributed version control system makes it much easier, and many large open-source projects have moved or are moving to DVCS.
  • Decouples the Boost mothership repository from developers' local repositories:
    • Allows developers to commit, branch, merge, and perform other version control operations while offline.
    • Allows developers to commit partial work locally without breaking the trunk.
    • Works more smoothly for developers who prefer to work mostly locally, and only rarely commit to trunk.
    • Is often faster for everyday operations, and sometimes much faster.
  • Allows public library specific repositories, such as on GitHub:
  • Scales up to a much larger number of libraries:
  • Encourages wider participation and eases patches. The ability to submit pull requests provides a smoother way for a new developer to ease into participation, and makes it easier to submit and apply non-trivial patches. (I'm pretty sure that has been the experience of other projects, but a citation or two would be useful.)
  • Eliminates much or all of the need for the sandbox.

Why should Boost choose Git as our distributed version control system?

Mercurial, Bazaar, and perhaps Fossil are also well developed and supported DVCS systems. They are widely used by well-known open source projects. So why choose Git?

What is the downside of Boost using distributed version control and Git?

  • Will the real Boost step forward?
Aside: The Wikipedia article on Distributed revision control as of 2 Feb 2011 is weaker than usual and may be misleading. Don't draw any conclusions based on it.
Note: See TracWiki for help on using the wiki.