From Makers Local 256
Jump to: navigation, search

Born On:
16 March 2007
Last Updated:
28 July 2009


Open source projects are great because they allow anybody to modify the code to suit their needs. However, this has a few major drawbacks:

  • It's difficult to keep your version in sync with the official version.
    • You could try to get your changes patched into the official version.
      • The project maintainers may not want your changes.
      • You may disagree with the overall direction of the project either now or in the future.
  • It's difficult for others to benefit from your changes.
    • Again, you could try getting into the official project.
      • Same problems as above.
    • You could start a new project around your code.
      • This causes a lot of duplicated effort.
      • Project maintainance is sometimes complex.
  • It's difficult for others to contribute to your version.
    • Once more, getting your changes into the official project may be possible.
      • Still suffers from the same problems.
    • Again, you can make a new project.
      • Suffers from the same problems as above.
      • Doesn't even completely solve the problem since contributors and/or their patches have to be validated/verified and added to the project manually anyway.

Contribution is an attempt to make collaboration simpler by keeping track of every modification to a project, even the "unofficial" ones.


  • There are no snapshots. There are only patches.
    • Patches may have dependencies, but just because one was applied after another doesn't necessarily mean one depends on the another.
    • For examples of VCSes that work in a similar way, see the patch theories of Darcs and Camp.
  • Anybody can commit patches, even anonymously.
  • No real distinction between "official" and "unofficial" patches.
    • Patches can be signed so that users can "endorse" them.
  • In the working copies, users can select which patches they do and do not want to apply at any given time. This can be manual or automatic with filters.
  • Each patch carries its own licensing information. This would allow contributors to unambiguously copyright their own work and control the permissions they grant as they please without concern over what the rest of the project grants.
    • The VCS allows users to filter out patches which do not grant the rights they desire, resulting in versions of projects which are legal to use under various scenarios.