On Saturday 13 Oct 2012 00:20:02 Steve Dougherty wrote:
> On 10/12/2012 03:34 PM, Steve Dougherty wrote:
> > On 10/09/2012 05:54 AM, Matthew Toseland wrote:
> >> On Sunday 07 Oct 2012 18:01:58 Justus Ranvier wrote:
> >>> The following tree contains a change to Version.java that
> >>> allows alternate Freenet builds to work transparently with
> >>> official builds in the network.
> >>>
> >>> A new variable is introduced, networkVersion, which is
> >>> reported to peers instead of buildNumber. It turns out this was
> >>> easier to do than rewrite NodeUpdateManager to break the
> >>> assumption that edition number of the UpdateURI was the same as
> >>> buildNumber.
> >>>
> >>> This tree has the change:
> >>>
> >>> https://github.com/justusranvier/fred-staging/commit/41962370ad797844f2015935b14ce9faa284e8fd
> >>>
> >>>
> >>>
> >
> >>>
> This tree is a proof of concept which starts out with buildNumber 0 but
> >>> reports build 1417 to its peers. I have tested it to verify it
> >>> will discover and download updates from a keyspace I control
> >>> while connecting seamlessly to opennet and darknet peers which
> >>> run the official build.
> >>>
> >>> https://github.com/justusranvier/fred-staging/commit/482fbe1fc7084072cb7a58cff686ca0a259d245a
> >>>
> >>>
> >>>
> >
> >>>
> If you want to test this proof of concept, download this key and save it
> >>> as freenet.jar:
> >>> SSK@virOTvBfehYSm3JZGAHI8aUg1mROfclxMRBkvkwYIHc,pSr0VwTMXZEF5TwQMN7fW9cBEB58NzaFGZxurlIL71E,AQACAAE/update-0
> >>>
> >>>
> >>>
> >
> >>>
> Then start it using a freenet.ini without a node.updater.URI line. The
> >>> node will discover new builds 1 and 2 and will upgrade itself
> >>> as long as automatic updating is enabled. Any peers of this
> >>> node will see it reporting version 1417.
> >>>
> >> That's a very good idea. We should use this for official testing
> >> builds. Making it easier for individual devs to publish a fork is
> >> a good thing, on balance, although obviously will exacerbate
> >> some minor problems.
> >
> >> So what's the easiest way to use it for testing builds? I'm
> >> thinking of merging issues ... When I release an official build,
> >> the first step is to run the tag-build script, it could change
> >> Version.java appropriately? Or we could do it the other way
> >> around, e.g. releasing a snapshot could update the buildVersion?
> >
> >> Also, should Version.java (or MANIFEST.MF, or both) include some
> >> indication of which update stream a release belongs to? This is
> >> probably a good idea? This could be either the URL for the
> >> auto-update or just a plain String? The problem with using a URL
> >> is we will occasionally need to change the auto-update URI; the
> >> advantage is it is more of a unique identifier than a plain
> >> String is ...
> >
> >> Possibly the cleanest solution might be this: - networkVersion
> >> is updated on an official release. - Official releases have
> >> releaseStreamName = "official". - Pre-releases have
> >> releaseStreamName = "official-testing". - If
> >> releaseStreamName.equals("official"), we return networkVersion
> >> for everything. Otherwise we return networkVersion. The variables
> >> are final so this will get optimised out at run time. - The
> >> release scripts check/enforce the above constraints. - Third
> >> party releases have a different releaseStreamName. - The release
> >> scripts can be configured (using a file in /home, like some of
> >> the functionality already uses) to enforce a different stream
> >> name.
> >
> > How about not having a release stream name, at least for
> > decision-making purposes, and instead the official build release
> > scripts enforce that the network version is the same as the build?
> >
> > A release string for human purposes would still be possible, but
> > should probably be limited to the version reported on the
> > statistics page, which makes more sense to me.
> 
> So we're opting not to decouple the network version and build number
> on official releases? Not doing so certainly simplifies the
> correspondence between the two, but it's also true that official
> releases are often followed with bugfix releases, and these do not
> necessarily include changes which impact network behavior. This
> changes the concept from a network version to an official build
> compatibility version, which strikes me as more difficult to keep up
> with and less flexible - both in the current state of things and a in
> the possibility of an official build compromise or stagnation.

That makes some sense. It would make testing builds trickier though. If we do 
them automatically they wouldn't correspond to a specific tag, and if we do 
them manually they'd take more work. Ideas?

Attachment: signature.asc
Description: This is a digitally signed message part.

_______________________________________________
Devl mailing list
Devl@freenetproject.org
https://emu.freenetproject.org/cgi-bin/mailman/listinfo/devl

Reply via email to