--
Michael C. Harris, School of CS&IT, RMIT University
http://twofishcreative.com/michael/blog
IRC: michaeltwofish #habari
No, tags should be created from trunk, not a branch as I understand
On Jun 25, 3:08 am, "Ali B." <dmond...@gmail.com> wrote:
> The idea is to eventually avoid that "nightmare".
>
> Plugins zip's would be built from tags that are created on the different
> plugins branches. For stable versions of plugins, ie branched and tagged for
> the latest stable habari release, users will be able to download that
> specific zip. People running habari head HEAD, will need to check out the
> plugins from their habari upcoming versions branches using svn (They are
> running habari dev, you'd assume that there would not be an issue running a
> dev versions of the plugins).
subversion and version control. Branches can be for development, but
should be eventually merged back into trunk, same as we do with core.
If and when we were to get to 2.0, then yes, there'd be a 1.x branch
I'd assume.
No, tags should be created from trunk, not a branch as I understand
On Jun 25, 3:08 am, "Ali B." <dmond...@gmail.com> wrote:
> The idea is to eventually avoid that "nightmare".
>
> Plugins zip's would be built from tags that are created on the different
> plugins branches. For stable versions of plugins, ie branched and tagged for
> the latest stable habari release, users will be able to download that
> specific zip. People running habari head HEAD, will need to check out the
> plugins from their habari upcoming versions branches using svn (They are
> running habari dev, you'd assume that there would not be an issue running a
> dev versions of the plugins).
subversion and version control. Branches can be for development, but
should be eventually merged back into trunk, same as we do with core.
If and when we were to get to 2.0, then yes, there'd be a 1.x branch
I'd assume.
>I don't understand. "more than one plugin version for the same habari
> This would mainly allow easy developement and release for more than one
> plugin version for the same habari version. I don't see how this can be done
> all within trunk without having to revert changes, tag and then reapply.
> Quite messy.
version"? why would there be different versions of the same plugin
that work with a specific version of Habari? If they are that
different, then the plugin should be forked and have it's own separate
branches/tags/trunk hierarchy.
Agreed. Zips should be built from tags.
> Another problem with the past setup is that we cannot keep packaging
> plugin's trunk. Plugin's trunk is, normally, used for developement and not
> stable releases.
Again, this is where we differ. I don't understand why trunk wouldn't
> Because -extras is currently in this transition, You should obviously expect
> some sort of mess. Evnetually, all plugins will have a branch for the
> current version (and it's major point version), and (if required), a branch
> for the alpha version currently in developement.
be used for current development. Sure, one might create a branch for
something extremely ambitious (again, same as we do with core, think
Monolith), but it would be merged back to trunk once deemed ready, not
tagged from there.
Yes. The way I see it is once .7 is gold, we merge that branch back
> This will, as a result, deem trunks obsolete. Unless you want to merge back
> from the latest branch back to it when you want to create a new branch.
into trunk, potentially tag a stable release, and go about our merry
way. We won't be supporting .6, so why would we bother with trying to
legacy support plugins for that version? As far as when we get to
1.0, the way I understand versioning, there shouldn't be any drastic
changes to the codebase in 1.x as to need separate branches for each
point release.
See, the way I understood it, the whole reason we did this .6/.7
> One last thing to add is that with or without the new svn "restructure",
> plugins' trunks will break for people running 0.6 since most of them will be
> up'ed to be used with the latest habari HEAD.
>
branching was so that people running .6 could still download the
plugins from -extras dist and work with their version (as the zips are
still built from trunk). However, that hasn't been followed across
the board. Code Escape and Database Optimizer were two that I ran
across that were updated in trunk for .7, but weren't branched at all,
nor did I see a .6 tag. So we aren't collectively even following the
same process.
I just don't understand why we would adopt a completely different
method of development for plugins than core. I mean, I get that we
branched for .7 changes, as nothing is completely set in stone for the
pluggable method, and we haven't worked out a solution for offering
downloads.
We aren't abandoning trunk for core are we? By this system, we would
be doing all of the development to core in a .7 branch, tag a release
from there, and then start a .8 branch, wash-rinse-repeat…
Anyway, I don't want to sound like I'm beating a dead horse, or come
across as too argumentative. I've expressed my opinion, and will wait
to (hopefully) hear what others have to say.
Why not have trunk compatible with 0.7 and tag from there ? Fixes for
nasty bugs can be committed to trunk and merged to the 0.6 branch.
2009/6/25 Ali B. <dmon...@gmail.com>:
>> Again, this is where we differ. I don't understand why trunk wouldn'tWhy not have trunk compatible with 0.7 and tag from there ? Fixes for
>> be used for current development. Sure, one might create a branch for
>> something extremely ambitious (again, same as we do with core, think
>> Monolith), but it would be merged back to trunk once deemed ready, not
>> tagged from there.
>
> Contiuning from my answer on the previous quesion: What if, within the
> intial release of the plugin (plugin version 0.1), you wanted to have a
> version that is compatible with Habari 0.7? You create a branch from the
> trunk for Habari 0.7 support and make the plugin compatible with 0.7. You
> tag it 0.7-0.1. When you want to add the cool feature or fix the nasty bug
> on the 0.7 "edition" of the plugin, you commit your change and tag that
> branch 0.7.
nasty bugs can be committed to trunk and merged to the 0.6 branch.
2009/6/25 Ali B. <dmon...@gmail.com>On Thu, Jun 25, 2009 at 11:39 AM, Michael C. Harris <michael...@gmail.com> wrote:
2009/6/25 Ali B. <dmon...@gmail.com>:
>> Again, this is where we differ. I don't understand why trunk wouldn'tWhy not have trunk compatible with 0.7 and tag from there ? Fixes for
>> be used for current development. Sure, one might create a branch for
>> something extremely ambitious (again, same as we do with core, think
>> Monolith), but it would be merged back to trunk once deemed ready, not
>> tagged from there.
>
> Contiuning from my answer on the previous quesion: What if, within the
> intial release of the plugin (plugin version 0.1), you wanted to have a
> version that is compatible with Habari 0.7? You create a branch from the
> trunk for Habari 0.7 support and make the plugin compatible with 0.7. You
> tag it 0.7-0.1. When you want to add the cool feature or fix the nasty bug
> on the 0.7 "edition" of the plugin, you commit your change and tag that
> branch 0.7.
nasty bugs can be committed to trunk and merged to the 0.6 branch.
That may work. Although, if there are significant changes between 0.7-compatible plugin code and 0.6-compatible (or any two successive habari versions, for that matter), merging may not be as easy and probably won't appeal to many.That will be an issue wherever the fix is coming from, whether trunk or a branch. Thankfully, plugins tend to be small, so fixing a merge shouldn't be too hard.
Or create tags for released Habari versions and make updates/bug fixes there.Do you know what the difference between a tag and a branch is? Nothing but a naming convention. They are exactly the same. What makes them differ is how they are used.
I am concerned that we are goingbro introduce a stumbling block to new devs coming in by creating a non standard use of svn.
On 25 Jun 2009, at 10:35, Chris J. Davis wrote:
> Do you know what the difference between a tag and a branch is?
> Nothing but a naming convention. They are exactly the same. What
> makes them differ is how they are used.
There _is_ a difference between them which is why they are named
differently. Technically they are both just sub-folders yes, but you
shouldn't just use them as the same.
C
- ---
Caius Durling
ca...@caius.name
+44 (0) 7960 268 100
http://caius.name/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
iEUEARECAAYFAkpDVR8ACgkQlj5WkEOM/Nie2QCgjFUbghE1pRgIVziWygs/lrdc
9fIAmMa0ypAd6djNXpLWAjBqLc3DGls=
=o76W
-----END PGP SIGNATURE-----
On 25 Jun 2009, at 10:35, Chris J. Davis wrote:
> I am concerned that we are goingbro introduce a stumbling block to
> new devs coming in by creating a non standard use of svn. Active dev
> is done in trunk, released versions of code are in tags and new
> features that could aignifigantly destabilize trunk are done in
> branches, which by their very nature are short lived.
*claps* Totally agree.
(Sorry for the last email, should've read further on before replying
to you Chris.)
C
- ---
Caius Durling
ca...@caius.name
+44 (0) 7960 268 100
http://caius.name/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
iEYEARECAAYFAkpDVVcACgkQlj5WkEOM/NjMtgCgn+34hLU9EczjTS1yfX16vyeJ
BsgAoLUVwxQkmnAhi0DIooHaL/VOSEa6
=R2ZA
-----END PGP SIGNATURE-----
On 25 Jun 2009, at 03:20, Michael Bishop wrote:
> I understand the reasoning for doing branches on the recent major
> changes to plugins (from the info method to using XML), however, it's
> being discussed that we will stop using trunk for the plugins
> development, and use branches from here on out.
>
> I'm a giant, -1 on this. Once .7 is released, if not sooner, we
> should go back to using the traditional, trunk/branches/tags system.
> It makes absolutely zero sense to continue primary development in
> branches at that point. We will not be supporting .6 after .7 is
> released, so why should we not use trunk? We will have the .6
> branches for those who for what ever reason aren't ready to upgrade,
> but otherwise, we should go back to the former system.
I'm a -1 on this as well.
We're a pretty forward-thinking bunch of people, and for the most part
we either run the latest stable or HEAD. At the very least we run the
latest 0.x release (0.6 currently) to get the latest features in
plugins. So my question is: why would features from a 0.7 version of a
plugin be backported to a 0.6 version of that plugin? If you want the
features, upgrade your habari install and go frolic in the meadows
with the ponies.
C
- ---
Caius Durling
ca...@caius.name
+44 (0) 7960 268 100
http://caius.name/
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.8 (Darwin)
iEYEARECAAYFAkpDWXUACgkQlj5WkEOM/NiCigCfSdGSS88RKkA6bRf7OchOuDGo
j5wAoNZG0hnZloLthNOF8Sb33sg8GyHw
=iQ7H
-----END PGP SIGNATURE-----
If you want the
features, upgrade your habari install and go frolic in the meadows
with the ponies.
If this is the case, then having a sane way to maintain plugins for
clients who, for one reason or another (usually "don't want to pay to
upgrade core"), won't upgrade Habari.
Let's just correct this one thing right now: Letting trunk whither is a
mistake.
We talked about theoretically back when we started this conversation,
and that's the conclusion we came to. It was wrong. Let's move on.
Apart from that one change - letting trunk stay and be active - I think
we should stick with the plan as described, and I will explain not only
how it will benefit you, but also how another large project with a huge
contributor base does nearly the exact same thing to great effect.
Trunk is for new development. Unless you are a dev for the plugin, you
don't use trunk.
Branches are for maintaining security releases for old versions of the
plugin. We have 0.6 and 0.7 branches for many plugins now. The main
reason for this is that trunk code, if it is the latest 0.7 version,
will not work on 0.6. 0.6 is our stable release version of Habari. If
a user comes to download plugins for their stable release install,
they're going to want 0.6, not 0.7/trunk.
Branches can also be for experimental work. That's fine. But we -
plugin developers - also need to agree on a single place from which
security-supported updates will derive. In plugins for 0.x versions of
Habari, this isn't going to be as important as for major versions.
Major versions of Habari may linger for much, much longer, and the
plugins for older versions will need to be maintained while the new ones
are worked on. If you want to be forward-thinking, think in that
direction, please.
But people who want stable releases really shouldn't be downloading
branch versions of plugins either, because that's where the work goes to
produce a release. If someone wants to test a preview release of a
plugin, they can grab it out of the branch for their version of Habari.
Pre-release code should not be tagged.
When you tag a plugin, that's the trigger for the system to produce a
distribution package of the plugin. No, this system is not built yet.
But my thought is to have a build system that will produce packages of
anything tagged with a version number matching our x.x-x.x scheme, and
anything in a branch with a version number matching that scheme.
A new page somewhere on the site would list versions available of a
plugin. It would be very clear: "This is the stable release for 0.6"
"This is an in-development (branch) release for 0.7"
We might even produce a zip of trunk for convenience, but if you're
using trunk code, you should probably pull it from subversion.
A lot of this organization is pre-planning for when we get to a 1.0
release, and we need plugin branches that work with one or the other
because we'll have to support old major versions of Habari that have
been included in long-life distros. That's a nice goal, right? We need
a plan for that. This is part of that plan. Right now it looks
confusing because the changes in plugins/core aren't big enough. But if
you imagine the timeline much farther out, hopefully this will make more
sense. Starting now, setting things up that way now, will reduce pain
from transition later when it'll matter more.
If you're updating plugins with svn:externals, this is all going to seem
like a pain in the butt. But trust my experience from doing this in the
past -- you do not want to do this anyway. If a plugin's trunk goes off
the deep end, and you update to it, you will be in for a world of pain
getting things back. Instead, if you must, external to a tag (or at
worst, a branch) and then re-point your externals when you update. Yes,
it's a pain. That's why I'm saying "don't do this". I'm sure someone
can write a script (and this sort of thing could be part of a plugin --
I've seen source for it) that will update plugins to their latest stable
tag/branch, and that will be a better solution.
For people complaining that this doesn't work like Habari core does,
apart from the trunk issue that I've conceded above, it's remarkably
similar. The only difference between this and the makaanga branch is
that the plugin makaanga is simply a specifically-named (by version)
branch in the repo. That's it.
Dare I say it...
Drupal has been using this scheme for developing their contributed
plugins for some time. If you look at any of the Drupal project pages
for their modules, you'll see more or less what I've described. The
only differences in the plan as outlined from what Drupal does are that
Drupal uses CVS and they are able to mark branches as recommended for
use with major core versions. This is mostly due to limitations of CVS.
Tagging a copy in svn will do the same thing for us.
I'm not saying that their system is perfect and ours needs to be
identical. What I am saying is that you can look at Drupal as a working
model, and any other speculation as to what might work better is just
speculation.
As to the issue of plugin developers who have updated trunk to 0.7
without branching for 0.6 -- YOU HAVE SCREWED UP, but all is not lost.
Figure out where your plugin was last 0.6-compatible, and branch the
code to an 0.6-y.x branch from that revision.
I think that we can all agree that some system is needed to address the
issue of compatibility between branches. My premise is that it's going
to be more important for users to find and use the correct version of
their plugins than it is to reduce the pain of a couple "svn switch"
calls. Yes, it's going to expose lots of out-of-date plugins. No, I
don't have an immediate solution for plugins that would continue to work
for future versions of Habari even if they're not updated in branches.
I guess what I'm saying is that any system is likely to have some
weakness, and what I've seen suggested in this thread so far more
resembles a plan you would assemble for a single core open source
project than a collection of supplementary collaborative projects.
The solution for -extras is by necessity likely to be different than
what you're used to if you've worked only on core project repos. To
that end, the initial planning (which few others deigned worthwhile to
participate in at the time, I'll add) was modeled after a generally
successful implementation of that concept. Please keep this in mind as
you make suggestions for the betterment of the extras repo.
Owen
To summarise, I think this is where we stand in regard to plugins:
(and please point out here if I've missed anything or I'm wrong)
* trunk is for active development, it's unstable, and people using it
should use svn. Currently, trunk should work for 0.7.
* On release of a version of Habari, a tag should be created. Use it
as an external if you like. If the plugin hasn't changed since the
last release and still works, you can just copy the previous tag. If
there isn't an appropriate tag, you might consider creating one.
Currently there should be a 0.6-(\d+).(\d+) tag for all plugins.
* If there are fixes for a plugin targeted at a released version, a
branch should be made from the appropriate tag, the fix made, and a
new version tagged. There's no need to automatically create a branch
when a release of Habari is made.
* Tagged things should have a distribution created automatically
(which doesn't happen yet, but when it does it should tie into the
addons directory).
* Other branches can exist for experimental features, and you can do
whatever you like with them.
To move forward from here:
* Ensure there is an appropriate and working 0.6 tag. In most cases
this will mean tagging the 0.6 branch after testing. In the few cases
where no 0.6 tag or branch was made, it will mean branching an earlier
revision for 0.6, testing (and removing the XML file if there was one)
and tagging from there.
* Make sure trunk works with 0.7. In most cases this will mean merging
the 0.7 branch back to trunk. Where trunk has been removed, it needs
to be restored.
> Soooo. this all sounds pretty good. I have one last being-the-annoying-
> guy thing. This needs to be written up as documentation somewhere so
> that plugin developers follow it. Probably the wiki. Otherwise it's
> just talking. Thoughts? Is there a better location?
The right location for documentation is
http://wiki.habariproject.org/en/Extras_Repository.
--
2009/6/29 luke <lu...@squareweave.com.au>:
> Owen wrote:To summarise, I think this is where we stand in regard to plugins:
>> Apart from that one change - letting trunk stay and be active - I think
>> we should stick with the plan as described, and I will explain not only
>> how it will benefit you, but also how another large project with a huge
>> contributor base does nearly the exact same thing to great effect.
(and please point out here if I've missed anything or I'm wrong)
[snip all the summary]
--
Michael C. Harris, School of CS&IT, RMIT University
http://twofishcreative.com/michael/blog
IRC: michaeltwofish #habari
[snip summary]
There's been very little comment (thanks Ali), so I've gone ahead and
added information about how things should be structured to the wiki.
http://wiki.habariproject.org/en/Extras_Repository#Repository_Structure
If you have any problems with it _please_ speak up now before people
start restructuring again.
> To move forward from here:
> * Ensure there is an appropriate and working 0.6 tag. In most cases
> this will mean tagging the 0.6 branch after testing. In the few cases
> where no 0.6 tag or branch was made, it will mean branching an earlier
> revision for 0.6, testing (and removing the XML file if there was one)
> and tagging from there.
> * Make sure trunk works with 0.7. In most cases this will mean merging
> the 0.7 branch back to trunk. Where trunk has been removed, it needs
> to be restored.
Anyway, my real question: How do we name versions that are in
development?
Say I have a 0.7-0.1 plugin, and I tag it. That's fine.
Then I start working in trunk on 0.7-0.2. I don't want to actually
name it 0.7-0.2 yet because I want the version number to be distinct
from the _actual_ 0.7-0.2 (the one I'll eventually release).
In PHP/PECL, we'd name this "0.2-dev". Is 0.7-0.2-dev too cumbersome?
Other ideas? I'm open to anything, but I do think we should all follow
the same scheme.