I know it's tempting to skip to the end of a long thread without
reading what's already been said, but we've been over this.

The right solution is to have a production branch for stability and
trunk for development of new features.

-Jonathan

On Thu, Apr 9, 2009 at 1:29 AM, Zhu Han <schumi....@gmail.com> wrote:
> [so many mistakes without spelling check, sorry for it]
>
> Jonathan,
>
> I can understand why you refactored the code a lot in the last few month.
> And I saw you were working hard to improve it  in the last few months.
>
> However, the talents from Facebook have done a lot of work to bring
> Cassandra to the world. And they have deployed it to the production system
> for some time. Any type of patch could bring instability to the system,
> which is very critical for the production environment.  Why not freeze
> refactoring the code before the community can bring a whole bunch of unit
> test case of integrate test case and committed it into the code base?  The
> Facebook team doesn't have enough time to do it. That's what the community
> can contribute to the project and it should be the top item on the TODO
> list.
>
> If all the test cases are ready, the regression bug could be detected
> easily. Whatever, even the most trivial patch could bring an unexpected bug
> to the system.  Most reviewers would not review the patch seriously, just
> because it's so trivial, or the patch cannot show the context clearly, and
> finally, we may not understand the code thoroughly. Let's depend on the test
> case to fight against this type of bug.
>
> Avinash,
>
> The overall architecture and implementation of Cassandra is very clear and
> impressive. But the refactoring is still necessary because it would bring
> the code quality to a higher layer. But we should take it more seriously and
> more cautious, should we?
>
> best regards,
> hanzhu
>
>
> ---------- Forwarded message ----------
> From: Zhu Han <schumi....@gmail.com>
> Date: Thu, Apr 9, 2009 at 2:24 PM
> Subject: Re: working together
> To: cassandra-dev@incubator.apache.org
>
>
> Jonathan,
>
> I can understand why you have refactored the code a lot in the last few
> month.  And I saw you were working hard to improve it  in the last few
> months.
>
> However, the talents from Facebook have done a lot of work to bring
> Cassandra to the world. And they have deployed it to the production system
> for some time. Any type of patch could bring unstability to the system,
> which is very critical for the production environment.  Why not freeze
> refactoring the code before the community can bring a whole bunch of unit
> test case of integrate test case and commited it into the code base?  The
> facebook team doesn't have enough time to do it. That's what the community
> can contribute to the project and it should be the top item on the TODO
> list.
>
> If all the test cases are done, the regression bug could be detected easily.
> Whatever, even the most trivial patch could bring an unexpected bug to the
> system.  Most reviewers would not review the patch seriously, just because
> it's so trivial, or the patch cannot show the context clearly, and finally,
> we may not understand the code thoroughly. Let's depend on the test case to
> fight against this type of bug.
>
> Avinash,
>
> The overall architecture and implementation of Cassandra is very clear and
> impressive. But the refactoring is still necessary because it would bring
> the code quality to a higher layer. But we should take it more seriously and
> more cautious, should we?
>
>
>
> best regards,
> hanzhu
>
>
>
> On Thu, Apr 9, 2009 at 9:38 AM, Jonathan Ellis <jbel...@gmail.com> wrote:
>
>> On Wed, Apr 8, 2009 at 6:26 PM, Sandeep Tata <sandeep.t...@gmail.com>
>> wrote:
>> > I think it is reasonable that a codebase that has evolved for over two
>> > years has significant opportunity for refactoring when it is opened to
>> > a host of new developers. That said, large scale refactoring *at this
>> > stage* hurts us in two ways:
>> >
>> > 1. We don't have a rich suite of unit tests.
>>
>> True.  The solution is to add tests a little at a time, preferably
>> before the refactor so it can help catch regressions.
>>
>> > Even automatic
>> > refactoring without unit tests makes me uncomfortable.
>>
>> I don't know how else to say this: that's an unwarranted overreaction.
>>
>> > 2. Big refactoring makes it difficult for the original developers
>> > (A&P) to review patches quickly.
>>
>> That is why I break the refactoring parts into separate patches.  It
>> is not hard to review when changes are split up this way.
>>
>> > perhaps we should hold off on accepting big refactorings
>>
>> Unless we have vastly different ideas of what "big" means (which is
>> possible), I emphatically disagree.
>>
>> The important question is not, "Is refactoring more dangerous than
>> doing nothing?"  Of course it is.  Writing code is always more
>> dangerous than not writing code.
>>
>> The real question is, "Is adding new features while refactoring more
>> dangerous than adding new features without refactoring?"  And the
>> answer is no.  Refactoring improves the fit of the code to its current
>> purpose rather than grafting layers of new features on top of a
>> foundation that was not meant to support them.  Refactoring also helps
>> prevent bugs -- for example my remove patch introduced a bug fixed in
>> r761093 -- because I only modified one of three copies of a piece of
>> code.  It can also expose bugs in existing code.  See CASSANDRA-58 for
>> an example of a bug that Jun Rao noticed because of a refactoring
>> patch.
>>
>> -Jonathan
>>
>

Reply via email to