Hi David (and others),
> But, back to the main point: what is the goal of a release in your
> mind (and in the mind of anyone else reading in too)?
To have a reproduceable and tested state of code. I would like to take
the perspective of a business end-user here once again. If I was running
my company on OFBiz (we plan to do so, by the way) I would want to make
sure that a release contains code that has been properly tested. So if I
run 1.0 now and I get the chance to upgrade to 1.1, I would expect that
there is no broken functionality because I have real people doing their
daily work using that software and also our customers would not be too
happy if they receive wrong invoices because some developer felt like
checking in some untested changes to invoice generation and I just had
the bad luck to update to the SVN version which had that in.
Also a release is about support. Put yourself in the shoes of someone
making a living of implementing and supporting several customers that
run their individual OFBiz installations. How are you ever going to
compare behaviour, against what would you ever file a bug, how would the
customer ever be able to tell what version he's running if there are no
releases?
What I could imaging and would like to suggest though:
Have you thought about not having releases of the whole package at a
time, but releasing components. You could version the framework, the
"execution environment" so to say and then version the indidual modules
(Marketing, Partners, ...). That would allow for a user to upgrade what
he needs to upgrade. You should still use some Linux package
maintainance system as a guide how to manage compatibility, basically
how to do SCM in the original sense of the word.
So I could find out, that in my installation I am running:
OFBiz Base: 1.0.12
OFBiz CRM: 1.1.3
OFBiz Accounting: 1.0.0
Now the team which is maintaining the accounting module feels like
releasing version 1.1.0 which still requires OFBiz Base 1.0.5 or higher.
I have 1.0.12, so I should be ok.
Next month, you might have a release of CRM which is 2.0.1 because is
has made a major leap forward in functionality. For that to happen, you
had to update the Base framework as well. So CRM 2.0.1 requires at least
OFBiz Base 1.1.0. Get the idea?
IMO the key to success of OFBiz will be to make sure you have enough
sub-communities which are going to focus on vertical functionality as
well as on locales. But keep them on apache.org and by all means avoid a
situation where a "basic OFBiz" is real OSS but to really use it in a
business, you need the X, Y and Z components which are 300 USD, 2500 USD
and 400 USD per seat and only work with an outdated version of the
package itself. Or even worse: You are not going to find any compatible
versions of X, Y and Z at all to even get them installed.
This kind of threading and pseudo-commercialization was and is a massive
road-block to the success of something like Compiere and IMO OFBiz
biggest opportunity is to just do better here.
Regards,
Torsten
David E Jones schrieb:
On Dec 28, 2006, at 12:57 AM, Jacopo Cappellato wrote:
David E Jones wrote:
...
Still, the first priority after graduation is to do a community
supported branch "release". Again given the size of OFBiz relative
to the size of the community, we don't have resources to do a full
QA pass before issuing a release, so the release process for OFBiz
will be centered around a community effort to maintain a branch that
will have bug fixes, but not new features, as anything would be
maintained with a priority of stability over progress (new features,
etc).
Are we sure this is the best way to go? My fear is that no one will
ever maintain these releases (submitting patches for them etc.).
A slightly different approach could be this:
1) we issue releases regularly and very often, let's say once every
two months
2) each release will not undergo a full QA pass, however we will try
to issue it when the code is pretty stable (e.g. not immediately
after a big refactoring)
3) every time we do changes in the trunk that could cause backward
compatibility issues (changes to the existing data model, seed data,
jars etc...), we document them somewhere and if possible we provide
upgrade scripts or instructions (in order to upgrade from the latest
release only); when a release is done, these instructions are
delivered with it ("Upgrade notes from release X to new release X+1").
I think this approach (with its pros and cons) is easier to maintain
by the OFBiz community (because it's not so different from what we
are doing now) and could be acceptable by the OFBiz's users (because
it's similar to what most users are doing now, i.e. staying
up-to-date with the trunk to minimize upgrade costs).
I guess it depends on what the goal of doing a release is. In my mind
the goal should be to create (over time...) a stable set of artifacts
that people can build and deploy on if they choose not to go with the
latest/greatest.
What you're describing is interesting, but how is that any different
than just using the latest from SVN with a little timing based on
knowing what is going on added in, and keeping a list somewhere of all
non-backwards compatible changes and their revision numbers?
On that last bit, whatever we do with the releases having an official
wiki page with all non-backward-compatible changes listed on it with
the revision number for each would be a good thing to do...
But, back to the main point: what is the goal of a release in your mind
(and in the mind of anyone else reading in too)?
-David