wiki:Git/WhyGit

Version 7 (modified by Beman Dawes, 10 years ago) ( diff )

Provide answers to the "why choose Git" question

Why Should Boost Move to Git?

Subversion has met Boost's version control needs for many years, 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. Also, 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, styles, and workflows.

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 (DVCS)?

  • Distributed version control enables easier decoupling and modularization. While decoupling and modularization is certainly possible with non-distributed version control, a distributed version control system makes it much easier. As a consequence, many large open-source projects have moved or are moving to DVCS.
  • DVCS supports a much wider variety of workflows:
    • 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.)

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

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

  • Network effect. Git has won the marketshare battle, so more developers know Git and there are more community resources available.
  • The Boost contributors doing the modularization work prefer Git.

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

  • Will the real Boost step forward? A proliferation of Boost repositories can be a source of confusion unless care is taken.
  • The migration itself will cause a certain amount of disruption. (transient).
  • Those who just don't care will have to learn a new tool. (transient, subjective).
  • Links to svn will be broken. Trac and svn are currently heavily cross-linked. (long-term).

Acknowledgments

Dave Abrahams helped clarify decoupling and modularization as driving forces.

Steven Watanabe supplied several of the "downside" entries.

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.