Re: [Zope3-dev] Re: Release management refinements

2006-09-16 Thread Stephan Richter
On Wednesday 13 September 2006 13:28, Philipp von Weitershausen wrote:
 Contributing to a community also means adapting to its processes and way
 of working. The process has been working well for Zope 2 developers, so
 I don't see why it can't work for Zope 3.

A couple of comments:

First, if several -- as in a majority of -- people say I work this way W., 
then our process should be adapted to those people. Having those people 
contribute less, because of an unnecessary barrier.

Second, Zope 2 and 3 are *very* different in this respect. Zope 2 does not 
have the same testing story. In Zope 2 it was risky, if not impossible, to 
use the trunk, because those large frameworks (CMF, Plone, ...) that had very 
tight couplings with Zope 2 had to be adjusted in many cases.

Zope 3 is different, since the trunk is effectively as stable as any release 
at any time, especially now with the even stricter trunk policies and the 
desire to move packages out of the core. This allows developers to develop 
against the trunk.

And even if the trunk is shaken by deprecation warnings like your 
refactorings, most packages based on Zope 3 were updated within a week, even 
large projects like SchoolTool and Tiks. This is a very strong statement and 
warrants a different check-in policy.

To get into an even more fundamental discussion, I claim that the culture of 
test-driven development weakens some common software-engineering practices, 
such as release cycles. I think, and seeing our discussions it seems I am 
right, that releases are marketing tools, not important software engineering 
artifacts. Releases allow us to say, Here are those great new features.,
write a magazine article, be slashdotted, and tell the client we are already 
in version 3.X where X  100.

Don't get me wrong, I understand the motivations behind releases, besides 
those points. It allows other developers to have a set target  and something 
to rely on, etc. Thus I said, it weakens the release artifact, not 
obsolete it.

Regards,
Stephan
-- 
Stephan Richter
CBU Physics  Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: Release management refinements

2006-09-16 Thread Philipp von Weitershausen

Stephan Richter wrote:

On Wednesday 13 September 2006 13:28, Philipp von Weitershausen wrote:

Contributing to a community also means adapting to its processes and way
of working. The process has been working well for Zope 2 developers, so
I don't see why it can't work for Zope 3.


A couple of comments:

First, if several -- as in a majority of -- people say I work this way W., 
then our process should be adapted to those people. Having those people 
contribute less, because of an unnecessary barrier.


Agreed. But we'll have to make compromises between the comfort for the 
developers and the necessary house keeping that we inevitably have to 
commit ourselves to as a serious software project. The latter invariably 
includes maintaining old releases.


Frankly, I personally don't feel very strongly where you commit a fix 
first, as long as the fix gets into all the necessary places. All I know 
is that the described way of working


 a) ensures that you don't forget to backport the fix

 b) works for many people

I'm also strongly wondering whether the majority of the people 
actually do develop against the trunk.


Second, Zope 2 and 3 are *very* different in this respect. Zope 2 does not 
have the same testing story. In Zope 2 it was risky, if not impossible, to 
use the trunk, because those large frameworks (CMF, Plone, ...) that had very 
tight couplings with Zope 2 had to be adjusted in many cases.


Sorry, but when was the last time you contributed to Zope 2? You're 
using the past tense which is applicable to most of this. Zope 2 *does* 
have a testing story now. We can't make the past go away, but we have 
the same standard in terms of testing as Zope 3 does now. (And as far as 
the cutting-edge Plonistas are concerned, for example, they often do 
develop against the trunk or at least the latest development release 
branch).


Plus, I don't see the point in the testing argument. Just because the 
Zope 3 trunk can be considered more stable (for some definition of 
stable) doesn't mean we can neglect stable releases branches.


Zope 3 is different, since the trunk is effectively as stable as any release 
at any time, especially now with the even stricter trunk policies and the 
desire to move packages out of the core. This allows developers to develop 
against the trunk.


I never said that that was a bad idea.

And even if the trunk is shaken by deprecation warnings like your 
refactorings, most packages based on Zope 3 were updated within a week, even 
large projects like SchoolTool and Tiks. This is a very strong statement and 
warrants a different check-in policy.


I disagree. I think the majority of those who do web development with 
Zope3 nowadays use releases. Gocept seems to do it, I do it, and most 
zope3-users@zope.org people seem to do it as well. Zope 3 isn't all 
about the trunk is our playground anymore. Again, I have nothing 
against development against the trunk, but thinking that this is the 
standard development model is mistaken.


To get into an even more fundamental discussion, I claim that the culture of 
test-driven development weakens some common software-engineering practices, 
such as release cycles. I think, and seeing our discussions it seems I am 
right, that releases are marketing tools, not important software engineering 
artifacts. Releases allow us to say, Here are those great new features.,
write a magazine article, be slashdotted, and tell the client we are already 
in version 3.X where X  100.


Don't get me wrong, I understand the motivations behind releases, besides 
those points. It allows other developers to have a set target  and something 
to rely on, etc. Thus I said, it weakens the release artifact, not 
obsolete it.


I think the most important fact about releases, strictly speaking from a 
software development view, is that they're milestones in terms of 
feature stability. We promise not to introduce new features and not to 
shake up things within a stable release branch. People want this sort of 
stability insurance (with the additional bugfix promise).


Philipp

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] Re: Release management refinements

2006-09-13 Thread Anton Stonor

Philipp von Weitershausen wrote:


  Shall we release once every 9 months from now on?


9 months pregnancy -- that's almost poetic.

/Anton

___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: Release management refinements

2006-09-13 Thread Wichert Akkerman
Previously Anton Stonor wrote:
 Philipp von Weitershausen wrote:
 
   Shall we release once every 9 months from now on?
 
 9 months pregnancy -- that's almost poetic.

And painful to deliver?

Wichert.

-- 
Wichert Akkerman [EMAIL PROTECTED]It is simple to make things.
http://www.wiggy.net/   It is hard to make things simple.
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: Release management refinements

2006-09-13 Thread Stephan Richter
On Wednesday 13 September 2006 11:02, Florent Xicluna wrote:
 Currently, I work with 3.3 branch for my company. I checked out the trunk
 too, in order to collaborate to Zope development.
 So I have both '/trunk' and '/branches/3.3/' on my computer. When I prepare
 a fix I do it on the 3.3 branch, I make unit/functional tests. Then I do
 manual tests on my sandbox, and I commit to the branch.
 Later I merge to the trunk, do unit/functional tests again and commit to
 the trunk.
 This is acceptable workload for me.

I work this way too. We develop against the trunk. And I always make a 
writable checkout. When I fix a bug, I will always do this on the trunk 
first, because I need to make sure that my customer code really works after 
the fix. It is not sensible for me to fix other branches first.

I could live with the policy of also supporting two release branches, but I 
would prefer only having to worry about one. BTW, a pain-easing script for 
merging would come a long way, in my opinion.

Regards,
Stephan
-- 
Stephan Richter
CBU Physics  Chemistry (B.S.) / Tufts Physics (Ph.D. student)
Web2k - Web Software Design, Development and Training
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



Re: [Zope3-dev] Re: Release management refinements

2006-09-13 Thread Jim Fulton


On Sep 13, 2006, at 11:23 AM, Stephan Richter wrote:


On Wednesday 13 September 2006 11:02, Florent Xicluna wrote:
Currently, I work with 3.3 branch for my company. I checked out  
the trunk

too, in order to collaborate to Zope development.
So I have both '/trunk' and '/branches/3.3/' on my computer. When  
I prepare
a fix I do it on the 3.3 branch, I make unit/functional tests.  
Then I do

manual tests on my sandbox, and I commit to the branch.
Later I merge to the trunk, do unit/functional tests again and  
commit to

the trunk.
This is acceptable workload for me.


I work this way too. We develop against the trunk. And I always make a
writable checkout. When I fix a bug, I will always do this on the  
trunk
first, because I need to make sure that my customer code really  
works after

the fix. It is not sensible for me to fix other branches first.

I could live with the policy of also supporting two release  
branches, but I
would prefer only having to worry about one. BTW, a pain-easing  
script for

merging would come a long way, in my opinion.


We should be using svnmerge.  I looked at it and even contributed to  
it a year or two ago.  It wasn't mature enough for our needs at the  
time, but I suspect it probably is now and would probably help a lot.


Jim


--
Jim Fulton  mailto:[EMAIL PROTECTED]Python 
Powered!
CTO (540) 361-1714  
http://www.python.org
Zope Corporationhttp://www.zope.com http://www.zope.org



___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] Re: Release management refinements

2006-09-13 Thread Philipp von Weitershausen

Florent Xicluna wrote:

However i have a worry on the Fix oldest branch, merge to newer branches.
I guess this is due to my young experience with SVN development.

Currently, I work with 3.3 branch for my company. I checked out the trunk too,
in order to collaborate to Zope development.
So I have both '/trunk' and '/branches/3.3/' on my computer. When I prepare a
fix I do it on the 3.3 branch, I make unit/functional tests. Then I do manual
tests on my sandbox, and I commit to the branch.
Later I merge to the trunk, do unit/functional tests again and commit to the
trunk.
This is acceptable workload for me.

But if I need to checkout/update all previous maintenance releases,


all refers to one more. There are at most only two maintenance releases.

and if i need to perform merge+tests+commit three times for every 
single bug, this seems a big work load to fix a bug.


If you can merge and run tests once, you can merge and run tests twice. 
It's mostly mechanical. Heck, I can do it on my slw PowerBook. Most 
of you guys have fast Intel machines :).



And if i have not enough knowledge of old release 3.X, this is a pain to do the
merge.


That's why it's best to fix the bug on the oldest still maintained release.


IMHO, i would prefer to keep the current bugfix policy (i.e. commit to working
release+trunk) and to have for each release someone that will do merging.


Who's that someone? Are you volunteering to do it?


In order to facilitate this process, we can enforce a workflow where committer
will warn the person in charge for release 3.X, to ask him to merge rev. 700xx
to release 3.X.


That requiers we that person in charge for release 3.X. We currently 
don't have that someone.


___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com



[Zope3-dev] Re: Release management refinements

2006-09-13 Thread Philipp von Weitershausen

Stephan Richter wrote:

On Wednesday 13 September 2006 11:02, Florent Xicluna wrote:

Currently, I work with 3.3 branch for my company. I checked out the trunk
too, in order to collaborate to Zope development.
So I have both '/trunk' and '/branches/3.3/' on my computer. When I prepare
a fix I do it on the 3.3 branch, I make unit/functional tests. Then I do
manual tests on my sandbox, and I commit to the branch.
Later I merge to the trunk, do unit/functional tests again and commit to
the trunk.
This is acceptable workload for me.


I work this way too.


Contributing to a community also means adapting to its processes and way 
of working. The process has been working well for Zope 2 developers, so 
I don't see why it can't work for Zope 3.



We develop against the trunk.


That shouldn't be an obstacle (see below).

And I always make a writable checkout. When I fix a bug, I will 
always do this on the trunk first, because I need to make sure that 
my customer code really works after the fix. It is not sensible for

me to fix other branches first.


This process isn't only about what's sensible to you or your customer. 
It's also about those people who use stable releases and would like them 
to be maintained. Heck, Zope 3.3 isn't even final yet (so Zope 3.2 is 
still stable!) and nobody is fixing things in Zope 3.2. That's simply 
unacceptable.


Plus, I need to make sure that my customer code really works after the 
fix makes it sound like we have no tests. The usual drill is to produce 
a minimal test failure (and that usually means outside customer code) 
and then fix the bug until the test passes.


So, even if you develop against the trunk and notice a bug there, you 
can switch to the oldest maintained branch, whip up a test case there 
(which is needed anyways because we'd need to know whether the problem 
applies to that branch as well) and fix the bug. THen you can merge 
onward till the fix is on the trunk.


I could live with the policy of also supporting two release branches, but I 
would prefer only having to worry about one.


Sure, we'd all prefer that, wouldn't we. ;)


BTW, a pain-easing script for merging would come a long way, in my
opinion.


Generally I like svk's and svnmerge's approach with sticking properties 
with merging information on the files and dirs that have been worked on. 
But their approach requires that this practice is generally adopted. I 
wrote a braindead simple merging tool called ezmerge that serves me well 
90% of the time:


http://www.z3lab.org/sections/blogs/philipp-weitershausen/2006_08_23_how-python-solves-my
___
Zope3-dev mailing list
Zope3-dev@zope.org
Unsub: http://mail.zope.org/mailman/options/zope3-dev/archive%40mail-archive.com