Hi folks,
our recent heated debate with Jiri Z. reminds me that our mainline
merging policy is only in the heads of the people who have mainline
commit access. It is not written down anywhere and this might create
false expectations both for the contributors and for the core team (not
even speaking about inconsistent decisions among the core team).
Similarly to the coding style, I don't believe that something so
delicate and with such an amount of subjective human aspects as the
merging policy can be put into an exhaustive set of formal rules.
However, having some basic guidelines might help. Here are some first
drafted suggestions from me:
1) If you work on your feature A and start thinking that some of our
existing shared code (abstract data structure, synchronization
primitive, public API, etc.) is totally crappy and stupid, don't try
to convince us by implementing your own local variants of the shared
stuff. Instead, propose an improvement to the shared code that
everybody would benefit from (in a separate branch, ideally) and
after we accept it start using it happily ever after.
2) If your feature A is isolated, optional or easy to avoid for the
"common user", people with probably not nitpick about details.
However, if you are touching some fundamental building block that is
tightly integrated into the working system and virtually cannot be
avoided (*), be prepared for extreme scrutiny and nitpicking.
3) The more conservative and gradual you make your changes, the more
likely it is that someone merges your branch into mainline. Wildly
"progressive" branches can sometimes be chosen for cherrypicking by
someone (**), but it might also linger for a long time. It is
possible to achieve even very radical ideas by gradual changes that
get consensual approval (***).
4) Don't put orthogonal or independent changes into a single feature
branch you want to get merged.
(*) most parts of the kernel (especially those affecting major platforms
such as ia32 and amd64), widely used libc APIs, NS, VFS, loader, etc.
(**) usually if the someone has eminent interest in your features; still
be prepared for the fact that the cherrypicked code might diverge
substantially from your branch
(***) in other words: don't bother anyone enough to fight against them
M.D.
_______________________________________________
HelenOS-devel mailing list
[email protected]
http://lists.modry.cz/listinfo/helenos-devel