[Koha-devel] Development workflow

Paul Poulain paul.poulain at biblibre.com
Thu Jan 27 17:03:54 CET 2011


Hello koha-devel,

The more time passes, the more I think we have a workflow for Koha
development that does not work correctly/efficiently/fluently.
The rule we have is:
* create a branch for the feature
* file a bug for it
* submit your branch to koha-patches ML
* the RM checks that everything apply smoothly on master & ask for QA
* someone signs-off the branch/patch
* the RM merge the branch.

For the maintenance branch, this workflow is perfect and must be secured
more and more to avoid any regression. As I see it, there is always
someone that can find time to sign-off a patch or 2. As ppl have
system live with it i'm sure it's cricital for many ppl to check &
double check !

But for the next release/unstable branch this workflow does not work well.

Here is a single line of something owen said on the chat today:
<owen> paul_p: I would much prefer to be testing your stuff today, but
other stuff is taking precedence.

God knows i'll be forever thankfull to owen for the work he does. But this
sentence reveals something: for most of us, there is always "other stuff
taking precedence" :\

BibLibre has submitted many new features 3 months ago. I tried to
motivate ppl to get feedback & sign-off. I even have organised an IRC
meeting ... where no one came. Those patches includes
new features, and requires a lot of work to be tested.
2 weeks ago, I did the same for a bunch of small improvements (and I
have many many more pending). Once again, no feedback, except for one
very easy-to-test (new images) : signed-off by Nicole & pushed by chris
in less than 24H!
Those 2 minor events (with owen & nicole) made me realize that it's technically and
functionnaly hard & long to test: rebase, drop database, install, file
test cases, check the new features,... At KohaCon, liz tested some of
those features and said "wow, great, I want this feature for my library
!" (I don't remember what it was exactly). The problem is that liz is
not a techie woman, and can't test patches by her own. For our images,
it was easy for Nicole to test, no need to updatedatabase or anything
complex, just reach the itemtypes.pl page check the images are here.
Easy for a librarian !

Other point: dependancies between new features. Let me take an example:
Templates on those devs relies on html::template. Chris is working on
moving everything to Template::Toolkit.
Once he consider it's ready, he should submit for QA, as for every new features.
Suppose no-one sign-off.
And suppose someone sign-off, there are 2 options:
* move master to T::T when it's signed-off. What happends with other branches
not merged ? they can't be merged anymore, they have to be rewritten.
wow, I can't imagine that something we've submitted for QA 3 months ago
has to be rewritten because no-one took care of it !
* wait until those branches are merged. Two major problems here: the
release date won't be respected, and we have switched again to feature
based release. Or 3.4 will be released on time, but won't contain many
things all those great features that are live in all our libraries since
months. The second problem is that other devs are on the way. They still
rely on H::T as master is based on that. Switching to T::T will cause
problems for those branches later.
well, I think that none of those solutions is a correct one.

I can take an other example: the analytics record feature may/will
probably overlap functionnaly with the new features we have submitted
for cataloguing (not sure, but i think so). Suppose our cataloguing
branch is integrated in 2 weeks. it has been submitted 3 months ago. It
means our indian colleagues will have to rebase & face problems to get
their analytical record branch working. If our branch had been merged
quickly, they would have had 3 more months to deal with it.
Our actual workflow, causes a lot of overhead ! And -worst- I don't
think it improves the stability & security: there are merge problems
that are difficults to detect. It means that any test done on analytical
records would have to be done again if our cataloguing branch is merged
: more work, more pain. And the later a branch is merged, the smaller
the time to find a problem.

My main conclusion is that we are not a large enough community to deal
with testing/validating/merging new features in a short timeline. So I
think we must change the way we integrate new features. The general idea
being: remove the sign-off lock on the workflow.

Here is a proposal:
Let's go back to the timeline: we plan to release a version every 6 months.
We could have a window of, say 4 months. During those 4 months a feature
can be included if :
1- the submitter provides something that applies on master (ie: it's technically valid)
2- no-one object in 2 weeks (or 3, or 4, or defined by the RM when the branch is submitted)

It put more pressure on others to test quickly, and don't put pain on
parallels/parallelizing developments. Once a branch is merged if there
is a problem, then everybody should see it, and it will be fixed !

Then, for 1 month, any new feature can be applied only if a newly
submitted branch is approved/signed-off (less than 2 months to detect a
problem in a new feature is a must-have)
Then, feature freeze, 1 month debugging and translating.

I know it is a big change in the workflow, but the actual one is not
working well, so, we have to find another one.
I humbly request to have this question being put on the next irc agenda
(which does not mean you should not also start a thread here, of course)

PS: pls don't say i'm wrong and the workflow works well. Having branches submitted 3 months ago, getting no feedback, and planning to have a release in less than 3 months, can't be considered as something working well.

Friendly.

-- 
Paul POULAIN
http://www.biblibre.com
Expert en Logiciels Libres pour l'info-doc
Tel : (33) 4 91 81 35 08



More information about the Koha-devel mailing list