[Unison-hackers] a common patch set - first attempt [repost]
Benjamin Pierce
bcpierce at cis.upenn.edu
Wed Jun 15 15:26:24 EDT 2005
I'm actually getting pretty persuaded that just using subversion to
fork the repository is the best way to proceed. What did you think of
my last about this?
> The development model that I'd like to be in is something like this.
> Most of the time, there are just two versions of Unison: a stable
> version that is used by almost everybody and a development version
> that is used just by developers and a few bleeding edge types that are
> willing to help test new features. Every so often, we make a
> beta-release; when this happens, there is a period of a few weeks when
> there are three versions: the old stable, the new beta, and the
> developer version. Once we're sure that the beta version is working
> well (perhaps after fixing a few bugs, which we'd do without changing
> its version number), it gets promoted to stable and we go back to the
> standard situation with just two active versions. I think we could do
> all this pretty easily with subversion. (After all this discussion, I
> believe the main problem with our release process is precisely that we
> never want to just promote the beta version to stable, because there
> are almost always new bug fixes in the development version; so instead
> we make a new beta release, etc.)
>
- Benjamin
On Jun 15, 2005, at 1:51 PM, Trevor Jim wrote:
>> 1) Adopt a convention that, whenever anyone makes a change to a
>> marshalled data structure, they bump the major version number, and
>> make Unison's startup test just the major version number and ignore
>> the minor version number. This seems viable (especially since we
>> have multiple people looking at commit messages and if one person
>> forgets, someone else is likely to notice), and it has the great
>> advantage of being simple.
>
> Like Jerome, I worry about your (1), I think it would be
> easy for a developer to miss the need for this.
>
> Maybe here is a slight improvement:
>
> Let's have a "protocol number" and require client
> and server to have the same protocol number. All
> sessions start by checking this, using a sequence
> of messages that does not change even if the
> protocol number changes.
>
> Require all protocol messages to be registered before
> a session begins, using the "register" functions of
> remote.ml. (Already true I believe.) The register
> functions calculate a cumulative protocol number,
> a fingerprint of their arguments. I don't know how
> to make this a true fingerprint given ocaml's
> current public interfaces, but for the moment let
> the fingerprint be MD5 hash of all of the protocol
> message names, plus a "datatypes number" that we
> bump whenever we change something that is outside
> of that (this part being essentially what Benli
> suggests).
>
> This isn't perfect but it buys us some automatic
> protection. (And maybe Jerome or another ocaml
> insider can tell us how to get a better fingerprint.)
>
> The protocol number could be reflected in the version
> number, or not. I actually prefer not. I can
> conceive of a new major version that does not change
> the protocol; if we are trying to make different
> versions interoperable I don't know why we'd do that.
> Also, we are bumping the version number manually,
> and I think we all agree that a fully automated
> system would be best in the end; why require another
> manual step to get right.
>
> -Trevor
>
> _______________________________________________
> Unison-hackers mailing list
> Unison-hackers at lists.seas.upenn.edu
> http://lists.seas.upenn.edu/mailman/listinfo/unison-hackers
More information about the Unison-hackers
mailing list