Boost logo

Boost :

From: Gennadiy Rozental (gennadiy.rozental_at_[hidden])
Date: 2007-06-04 20:05:35


"Emil Dotchevski" <emildotchevski_at_[hidden]> wrote in message
news:BAY110-DAV160C3BB33542732B238C65D4210_at_phx.gbl...
>>> In reality, choosing this third option means you'll be doing more work
>>> in
>>> the long run, because at a later time you still have to switch to the
>>> last
>>> version of the GUI lib, at which point you're presented with 1) and 2)
>>> again.
>>
>> Why more? EXACTLY the same amount. I need to make my changes and I need
>> to
>> make sure it works with your changes. I just propose to split this
>> efforts
>> in time and do it in two independent steps.
>
> It's more, because you had to spend time to make your changes work with
> the
> old version of the lib, then you need to make it work with the new
> version.
>
>>>> How can I be "reasonably sure" (yet another "grey" term) until I run
>>>> the
>>>> tests. And to run the tests I need to commit the changes. This is
>>>> chicken
>>>> and egg problem.
>>>
>>> Even if you can't run all tests by yourself, you can run at least some
>>> tests
>>> to be "reasonably sure".
>>>
>>> And if we require that HEAD is stable, this is an additional motivation
>>> for
>>> people to be more careful when committing changes.
>>
>> How "reasonably sure" I have to be? And how "more careful"? 65% careful?
>> With highly portable development, when you library is targeted to work on
>> 30 different configurations, you can't be sure in anything. Nor you can't
>> be careful. The only way to be really sure is *run the test*. To run the
>> test you need to commit the changes.
>
> To run the tests on platform X, a tester who can run the tests for you
> needs
> to get your changes. Are you suggesting that the only way this could
> happen
> is to commit the changes to HEAD?

I don't care where. I just need them to be tested. Current systems only
tests HEAD.

> Is there a problem with not committing to HEAD before your changes have
> been
> tested?

Yes. I do not know other way to test my changes.

>>> The more extensive the refactoring you're doing is, the more important
>>> it
>>> is
>>> for you to update often, so you don't deviate from everyone else's work
>>> too
>>> much. At some point you are "reasonably sure" that your current version
>>> is
>>> stable enough, and you commit.
>>
>> You may be more or less sure that your own test will pass (rather less -
>> nothing is sure until code is committed and tested on all platforms). But
>> what about 1000 other tests that you never run from different components
>> that depend on you?
>
> In that case, you can't be reasonably sure your changes are stable, and
> therefore you need to wait for them to be tetsed before you commit them.

How can anyone test against my changes if thay are not commited?
>>> In my opinion, the only way to deal with rapidly changing code base is
>>> to
>>> sync often. This can only work if you know that HEAD is stable (but of
>>> course if HEAD is bad, you can always sync to the previous version, or
>>> even
>>> revert the bad commit someone else did.)
>>
>> I strongly disagree. This "catch the train" will lead us nowhere.
>> Everyone
>> should be doing development at their own pace and I don't have to worry
>> about other peoples and their need to run some tests nor they need about
>> mine. This decoupling in "the only way" IMO.
>
> If you could "not worry" about everyone else's changes, I'd agree -- but
> you
> can't. Sooner or later, you will have to face other developer's commits,
> and
> you'll have to make your code work with them. I think that the more you
> postpone this, the harder it is to accomplish, and the higher the risk for
> your changes to break HEAD -- in particular if someone else has committed
> an
> extensive (but bug-free) change.

That's really my problem. If I am doing my own development I don't want to
be bothered with making sure it works with latest commits in other parts of
boost. If I am in maintanence stage, I will always test against latest
version of the dependant components and catch the issues as soon as it
appeared

>>>>>> How long will it take t osort it out?
>>>>>
>>>>> It'll certainly take less time to sort out compared to if the trunk is
>>>>> unstable (and everyone is more tolerant to bad commits.)
>>>>
>>>> *Why* anyone but me should care about my bad commit?
>>>
>>> If your changes are relevant to anything, people will care about your
>>> (bad
>>> or good) commits.
>>
>> Why? They shouldn't. Until I am done with my changes.
>
> Right, so don't commit your changes until you're done with them.
>
>>>> In reliable system no one should.
>>>
>>> I don't see how a system with high tolerance to bad commits can produce
>>> consistently good results.
>>
>> Easily ;) Do you see any practical problem with approach I promote?
>
> Yes, it makes producing stable releases harder.
>
> In your world, to make a stable release, you start with the current HEAD,
> assume nothing about it, run tests, fix bugs, run tests, etc. until it's
> stable, at which point you release it and start working on migrating bug
> fixes back to HEAD. For the next release, you start with no assumptions,
> and
> so forth (if I understand you correctly.)

Did you read my post here:

http://article.gmane.org/gmane.comp.lib.boost.devel/158491

In "my world" no migrating occures at all. And there is no HEAD (at least in
global sence)

Gennadiy


Boost list run by bdawes at acm.org, gregod at cs.rpi.edu, cpdaniel at pacbell.net, john at johnmaddock.co.uk