[OpenAFS-devel] AFS + Object Storage
Jeffrey Hutzelman
jhutz@cmu.edu
Tue, 08 May 2007 11:42:21 -0400
On Tuesday, May 08, 2007 10:18:59 AM +0200 Hartmut Reuter
<reuter@rzg.mpg.de> wrote:
> Of course, you are right that this change will not go into 1.4.x, but to
> have a stable reference and a base which can immediately be used in
> production I always put my changes into the current stable release.
Sure; there's nothing wrong with that.
> Of course the changes are large. If the gate-keepers prefer I could
> create a version based on another CVS branch. But it takes a while (it's
> a manual port, anyway) and I must be sure this branch doesn't change too
> much in the meantime.
>
> Which one would you suggest?
Well, I'm not a gatekeeper, so suggesting is about all I can do. I would
start by picking a specifc version, either a 1.5.x release or one of the
daily CVS snapshots, and making all of your changes relative to that. If
this is going to appear in 1.5.x, then it doesn't much matter whether you
port to 1.5 or to the head, because it will have to be committed in both
places eventually, so someone will have to do the conversion.
I guess the choice depends on how things are going to proceed from here.
If you want to get other people running this, or you want to be able to run
it yourself and upgrade OpenAFS without a major porting effort each time,
then I'd suggest distributing patches based on 1.5.x for a while, and not
worrying about porting to the head until it is ready to be committed.
There are often significant changes between successive 1.5.x releases, but
I think that work going on now (that I know about) is unlikely to produce
serious conflicts with your code, so porting from one 1.5.x to the next
should not be too hard. Of course, the 1.5 branch also has the advantage
that it can actually be expected to compile and run most of the time, which
is not always true of the trunk.
On the other hand, if your main goal is getting the patches into the CVS
tree in some form, even if it takes quite a while before they appear in a
release, then you're better off porting to the CVS trunk. It's relatively
easy to get the gatekeepers to commit things there, even with minimal
review and even if they're clearly not ready for inclusion in a release
branch. That's because OpenAFS releases are never done from the trunk, and
our practices don't require it to be stable or even compile -- it's all
about getting the code where people can look at it.
BTW, I would suggest when you prepare patches that you split them into
multipe pieces where appropriate. For example, you might have one patch
that adds support for your extensions to the fileserver, and another to the
cache manager. Similarly, if you have multiple features that are logically
separate, they should be in separate patches. Smaller patches are easier
to understand and review.
In a similar vein, new or modified code should be consistent with the
existing style. Avoid making changes in formatting or whitespace to
existing code that you are not modifying; for example, don't reindent
entire source files -- that makes the patches large and the changes
difficult to identify. If you do make large formatting or style changes,
do it in a separate patch which makes _no_ substantive changes. (BTW, note
that I haven't looked at your code yet, and much of this is general advice
not aimed specifically at you).
>> In general, submitting patches to OpenAFS is not the way to modify the
>> AFS wire protocol. Instead, protocol changes should first be brought up
>> on the afs3-standardization mailing list, which is the official forum
>> for discussing changes to the AFS protocols. Again, it is best to bring
>> up proposed changes before getting too far with the implementation, to
>> limit the amount of wasted effort if the mailing list has objections or
>> suggestions for improvement.
>
> That was the reason why I came to the Hackathon last year to inform the
> AFS developers early about our project.
Sure; that was definitely a good idea, and hopefully it was helpful to you.
That advice was intended largely for anyone else who might be thinking
about working on AFS. The idea is that if there had been something
controversial about your approach, or a major issue you were overlooking,
you would have found out about it early instead of after wasting months of
effort.
Anyway, I look forward to reviewing your stuff, just as soon as I dig
myself out from under this giant pile of work. :-(
-- Jeff