[Tinyos-alliance] below Quorum
Matt Welsh
mdw at eecs.harvard.edu
Tue Nov 7 14:30:21 PST 2006
>
> (1) I wanted to get a sesne from the WG of what matters the BoF put
> on out plate. The most obvious one to me is to formalize
> the process of code moving from contrib to "the main branch".
For those that were not at the BoF at Sensys let me summarize the
issue and the discussion.
I raised the question of how the TEP process relates to the source
code release process. In particular, how does code get contributed to
the TinyOS tree? Under TinyOS 2.x, the model is that anyone can
contribute code to the 'contrib' tree, but only certain users can
check code into the 'main' tree. However, there is no strong binding
between the two: the set of users that can checkin to the main tree
are under no obligation (currently) to ensure that code is related to
a finalized TEP. As a result we have a situation where the core is
just whatever people choose to checkin; and the code you find in the
tree may not look at all like the TEPs that documented the original
design.
Phil L. and I discussed this for a while and we were in agreement
about the following proposal. (Phil, please chime in if there's
something I am missing...)
In order for code to be part of the main tree, it should be
associated with a finalized TEP. For example, the Timer subsystem or
the networking subsystem in the main tree should be the
implementation related to a TEP that has been finalized (that is,
gone through all of the cycles of revision, community review, and
shepherding).
The critical point is this: If someone wants to make major changes to
code in the mainline codebase, *they must go through another TEP in
order to do so*. An example would be changing something fundamental
about the routing protocol or the timer system. The original
developer (despite having CVS commit access) should not simply change
the code without having a TEP to get feedback and review from the
community.
One question that comes up is what constitutes a "major change".
Small bugfixes and even minor performance enhancements should not
require a TEP. So, we need to rely on the developers' good judgement
to decide which new features need TEP approval and which do not. It
would be helpful to have some documented guidelines.
Of course, this model is not without its challenges. In particular I
fear it will slow the development and release cycle considerably. Of
course, users can always prototype and push new code out quickly via
contrib. But we don't want to erect so many barriers that users
prefer not to go through the process. This might be balanced out by
the observation that those developers that want their code included
in the main tree have an incentive for going through the TEP process.
I would really like to hear comments from folks on this. I think we
need to bring this proposal to the developer community to get their
reaction as well.
Matt
More information about the Tinyos-alliance
mailing list