Difference between revisions of "Contribution"

From Makers Local 256
Jump to: navigation, search
(added a short overview for my Contribution project)
 
(changed/clarified some of the features)
 
(6 intermediate revisions by one user not shown)
Line 1: Line 1:
 +
{{Project|Creator=Jmcarthur
 +
|Status=<onlyinclude>Researching</onlyinclude><!--LEAVE ONLYINCLUDES FOR STATUS HACK-->
 +
|Born On=16 March 2007<!--DO NOT EDIT -->
 +
|Last Updated={{#time: d F Y| {{REVISIONTIMESTAMP}} }}<!--DO NOT EDIT -->
 +
}}
 +
 
== Overview ==
 
== Overview ==
  
A version-controlled repository where every commit is just a branch. Multiple branches can be merged into a single new revision (still a new branch, no overwrites), and working copy updates would require explicitly choosing the next revision to work with. Some contributors may be authenticated in order to tag a branch as "official" in order to differentiate from anonymously committed versions. The idea here is that anybody can contribute, and anybody can work with any previously-contributed revisions they wish, even ones which haven't been (or even never will be) integrated with the "official" version of the project.
+
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.
 +
 
 +
== Features ==
 +
 
 +
* 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 [http://darcs.net/ Darcs] and [http://projects.haskell.org/camp/ 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.
 +
 
 +
[[Category:Software]]

Latest revision as of 20:13, 28 July 2009

Creator:
Jmcarthur
Status:
Researching
Born On:
16 March 2007
Last Updated:
28 July 2009

Overview

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.

Features

  • 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.