Re: working together

2009-04-09 Thread Zhu Han
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 has 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 trival patch could bring an unexpected bug to the
system.  Most reviewers would not review the patch seriously, just because
it's so trival, 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
  (AP) 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



Re: working together

2009-04-09 Thread Zhu Han
[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
  (AP) 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

Re: working together

2009-04-09 Thread Jonathan Ellis
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
  (AP) 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

Re: working together

2009-04-08 Thread Neophytos Demetriou

Torsten Curdt wrote:

On Wed, Apr 8, 2009 at 05:30, Ian Holsman i...@holsman.net wrote:

guys.
we have a private list to discuss the pro's and con's of people being a
comitter.
keep these personal discussions off the development list. It doesn't help
anyone.


Not sure I agree here. I did not see the thread talk about the
pros/cons. And I think it is about the community so it's fair to have
that in the open. (Sorry, that's how I was raised at Cocoon)
But I rather leave that up the person in question to decide.


+1


Re: working together

2009-04-08 Thread Johan Oskarsson
+1 for Sandeeps development process suggestions.

In order to address some of the issues brought forward in this thread I
have adapted the following wiki pages from other projects and from
various emails. They could serve as the basis for an initial process.

http://cwiki.apache.org/confluence/display/CSDR/HowToContribute
http://cwiki.apache.org/confluence/display/CSDR/HowToCommit
http://cwiki.apache.org/confluence/display/CSDR/HowToRelease

A short summary and description of why these points make sense:
* Patch-only evolution of code, attached to a jira issue
* At least one +1 on each issue before it can be committed, -1 stops the
patch.

Those two points would make sure that if someone disagrees with a
change, a refactoring etc, they have a chance to voice their opinion and
steer it into the right direction.


* Trunk is not considered stable, but must pass unit tests
* Any non trivial change should include unit tests
* When a branch is created to prepare for a release extra effort is put
into QA to make sure the release is as stable as possible. Point
releases would then go out to fix issues found after the release was done.
* Once a release has been out for a while and people are using it in
production without problems it is upgraded to stable status.

The purpose of these points is to encourage a vibrant codebase, to not
be afraid of for example refactoring if it improves the code readability
or testability. I appreciate that Cassandra is a complex system and that
changes might have unwanted side effects, but hopefully adding tests and
code reviews will reduce those. As a final catch-all the release
candidate and stable release process should help end users avoid bugs.


Thoughts on the wiki pages? Do they help resolve some of the problems?

/Johan

Sandeep Tata wrote:
 Thoughts inline:
 
 So the problems I am seeing are:

 1. We elected a committer without real community consensus. The
 barrier of entry was unnatural low on this one. On the other hand we
 need non-FB committers for the graduation. The more the better. (No
 reason for low entry barrier though!)
 
 I think everyone (including the FB guys) agree that Jonathan has been
 working hard to help move the codebase forward. He has been quick to
 revert changes that broke the code that the FB guys had in the
 pipeline and have committed since. I think much of the friction comes
 from not having a process, which takes us to Torsten's #2:
 
 2. A missing definition of development process:
  - What is considered a valid code review?
  - How much are changes discussed up-front?
  - What is the roadmap? ...for whom? (weighted as a community)
 
 This is probably where we need most work. Here are some simple suggestions:
 
 a) I'm a fan of a patch-only evolution of code. All changes come
 from patches, and no changes come from anywhere else (eg. the
 committers IDE). Even if it is something as simple as cleaning up
 comments or changing a variable name.
 b) A patch gets applied if at least one reviewer +1s it, and no one -1s it.
 c) A patch should pass all unit tests. Any significant patch should
 come with additional unit tests.
 
 Some of this, of course, will mean more work for the committers.
 Sure, but such processes are essential if the project is to grow
 beyond a small group of core contributors.
 
 3. Is trunk considered stable? Or aren't we missing a stable branch
 for the required stability? Once we have the separation between stable
 and trunk: Will patches really find it's way from trunk into stable?
 Is Facebook OK with that approach. Will everyone cope with the
 additional work of merging? Would it be useful ...or overkill to use
 merge tracking?
 
 I agree with Matt. Trunk should pass build + tests, but should not be
 trusted for production. I think 0.2 was supposed to be a stable
 branch. Avinash, Prashant -- what are your thoughts on this? Are you
 guys comfortable with this approach? Do you foresee any problems?
 
 Basically, use a release branch for production. The release branches
 only admit stability patches. New feature and cleanup patches go to
 trunk. Folks running Cassandra in production only need to be nervous
 when moving from one release to next, and not worry too much about
 every single patch breaking their running system.
 
 4. Real world testing feedback is not publicly available. So the
 feedback on changes will only slowly reach the community. This is not
 easy for a project like this. But is there a faster way to provide
 testing feedback? (IIRC Yahoo was providing testing feedback for
 Hadoop. They even try to auto-apply patches from JIRA)
 
 With time, FB may be able to provide feedback from their divert some
 traffic to the new version system. Auto-applying patches from JIRA
 sounds a little ambitious right now :-)
 
 5. Is there really no code ownership issue. Working on a code base for
 1-2 years can get you attached to the code you have written. Can
 everyone really let go? Is it OK if someone else really 

Re: working together

2009-04-08 Thread Roland Dreier
 I think we have a handle on this now. All changes are put on Jira for
 review and are not committed until there is at least one +1 from a
 reviewer. (I personally prefer post-commit review because manually
 attaching and applying patches is tedious but we don't have enough
 people following the commit log for that to work right now.)

I don't see how post-commit review could work.  The fundamental issue
is that with post-commit review, lack of response means the patch
stays committed.  For very obvious or trivial changes, that makes
sense, but for anything with real meat, the bandwidth of the people
qualified to review may be very limited, and a lack of response should
not be read as acceptance.  And then if a reviewer finds issues after
other patches have been committed on top, reverting the original patch
may be a big hassle.

Pre-commit review on the other hand makes the social aspects of review
work to the benefit of the project.  If someone wants to get a change
onto the trunk, then the process gives them an incentive to make the
change readable, work with reviewers to make sure the change is
understood, build consensus, etc.

With that said it would be nice to have a low-barrier way for people
(including non-committers) to publish branches so that their work is
easily obtainable and testable, even pre-merge.  Unfortunately the
incubator svn doesn't make that very easy but perhaps something can be
done short of switching to a DVCS.

 - R.


Re: working together

2009-04-08 Thread Sandeep Tata
The refactoring question seems to be a bit of thorn:

 My understanding was that new committers come in and start with some feature
 implement that and then slowly start looking into what more they could do
 going forward. It is NOT come in and refactor the hell out of the system
 because you like something to be in a specific way. I do not beleive this
 will fly in any community. It is something like we now going through the
 entire code base and changing all the stuff just because I like it in a
 specific way. This seems ludicrous.

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. Even automatic
refactoring without unit tests makes me uncomfortable.
2. Big refactoring makes it difficult for the original developers
(AP) to review patches quickly.

I can understand Avinash's resistance to big refactoring, and to some
extent, I agree.

While I think we may need significant refactoring as the codebase
moves forward (to simplify, keep it healthy and make contributions
easier), perhaps we should hold off on accepting big refactorings
until:
a) We have a richer suite of unit tests.
b) We've done an initial stable release

That seems like a reasonable restriction on the refactoring story, yes ?
Avinash, Prashant, Jonathan, others  -- does this seem like a good
strategy? Alternative ideas?


Re: working together

2009-04-08 Thread Jonathan Ellis
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
 (AP) 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


Re: working together

2009-04-07 Thread Matthieu Riou
On Tue, Apr 7, 2009 at 1:10 PM, Torsten Curdt tcu...@apache.org wrote:

 Hey folks,

 I thought back and forth about whether this email should go to the
 private list or not. But I have a Cocoon background and in Cocoon land
 we found it useful to only use the private list when there is really
 no other way. This is about the community so I think it deserves to be
 discussed in the open. I hope no one is offended by that approach.


Thanks for doing it this way.



 Let me try to explain how I see the history of Cassandra. Please
 correct me where I am wrong:

 Cassandra was (mainly?) developed by Facebook and is being used in
 production over there. At some stage it got open sourced on Google
 Code. External contributors did not feel like there is a real
 community around it as patches did not get applied. Out of frustration
 people started (or at least proposed) to fork the code base. As a fork
 means community fragmentation the projects has turned to the Apache
 Incubator hoping to turn this fragmented contributors into a healthy
 community.

 In January the project got accepted. Papers were filed and in March we
 saw the code enter the Apache subversion repository. A few weeks later
 a first committer was proposed. Unfortunately no one noticed that the
 actual authors bringing the code were NOT on the private list where
 the vote was held. So we got a new committer without the consent
 and/or feedback of the original authors. A big surprise.


I disagree here, I was fully aware that we hadn't formed the PPMC from the
committership yet (read PPMC = mentors) and at least on my side it was by
design. I should probably have pointed it out at the time just in case
though, my bad.

Avinash and Prashant are two very nice fellows but the Cassandra community
has to be larger than FB employees and actually was already, given the
different forks that were developed here and there. Waiting to form the PPMC
until it's more balanced in this case seems like a reasonable thing to do.


 The people
 that brought over the code now feel a bit betrayed by the process.
 They have to deal with a committer that does changes all over the
 place on a code base they depend on for production. They have the
 feeling these changes are untested (at least not tested enough to get
 right into production at Facebook) and that this destabilize the code
 base.


I wasn't aware of those feelings but I don't think they're justified, many
different projects are in production in many different environments in the
foundation and changes aren't a problem. That's what stable branches are
for.

Cassandra is now an Apache project, if it's successful it will be developed
by a much larger community that it used to. That's the main goal, not a
byproduct of incubation. What I would expect from committers more
experienced in the codebase is guidance and transmission of expertise, not
code freeze.


 On the other hand there is new blood, new drive to the project.
 While Facebook needs it's stability, other contributors needs the
 change to meet their goals and deadlines.

 So the problems I am seeing are:

 1. We elected a committer without real community consensus. The
 barrier of entry was unnatural low on this one. On the other hand we
 need non-FB committers for the graduation. The more the better. (No
 reason for low entry barrier though!)


If what you mean is that it was low because there was less direct peer
review, I would agree (although I would consider Ian as a peer). If what you
mean is that Jonathan hasn't enough merit to be a committer, I would
disagree. Just have a look at his giithub branch :)



 2. A missing definition of development process:
  - What is considered a valid code review?
  - How much are changes discussed up-front?
  - What is the roadmap? ...for whom? (weighted as a community)


 3. Is trunk considered stable? Or aren't we missing a stable branch
 for the required stability? Once we have the separation between stable
 and trunk: Will patches really find it's way from trunk into stable?
 Is Facebook OK with that approach. Will everyone cope with the
 additional work of merging? Would it be useful ...or overkill to use
 merge tracking?


A very useful tool here is what in Apache lingo is called lazy consensus.
Anybody can build a proposition and submit it in the open. If nobody objects
in a reasonable amount of time (usually 72 hours), then it's considered
adopted.

So I've read a couple of propositions from Jonathan on these points, why not
formalizing that?



 4. Real world testing feedback is not publicly available. So the
 feedback on changes will only slowly reach the community. This is not
 easy for a project like this. But is there a faster way to provide
 testing feedback? (IIRC Yahoo was providing testing feedback for
 Hadoop. They even try to auto-apply patches from JIRA)

 5. Is there really no code ownership issue. Working on a code base for
 1-2 years can get you attached to the code you have written. 

Re: working together

2009-04-07 Thread Ian Holsman

just on a point here.
They were invited from Day 1 (Actually 20-Jan-2009) to be on there. It  
wasn't done out of malice.


On 08/04/2009, at 6:10 AM, Torsten Curdt wrote:


Unfortunately no one noticed that the
actual authors bringing the code were NOT on the private list where
the vote was held.


--
Ian Holsman
i...@holsman.net





Re: working together

2009-04-07 Thread Matthieu Riou
On Tue, Apr 7, 2009 at 5:39 PM, Ian Holsman i...@holsman.net wrote:

 just on a point here.
 They were invited from Day 1 (Actually 20-Jan-2009) to be on there. It
 wasn't done out of malice.


So I'm slightly confused as to what the PPMC composition is now.




 On 08/04/2009, at 6:10 AM, Torsten Curdt wrote:

  Unfortunately no one noticed that the
 actual authors bringing the code were NOT on the private list where
 the vote was held.


 --
 Ian Holsman
 i...@holsman.net






Re: working together

2009-04-07 Thread Avinash Lakshman
I don't think I ever spoke about anyone's skills ever over here.
Avinash

On Tue, Apr 7, 2009 at 9:12 PM, Ian Holsman i...@holsman.net wrote:

 Matt.
 please don't.
 your comments are just as valuable as anyone else's.

 just be aware that if you talk about someone's skills on this list, or
 their possible promotion to a committer it preempts other conversations
 happening, and can discourage that person from participating IF they are not
 made a committer then and there.

 many times (on other projects) people's names are put forth as possible
 committers (or members) and the feedback is 'not yet'. This can't be done on
 a public list. and why I am so discouraging of it on here.





 On 08/04/2009, at 2:06 PM, Matt Revelle wrote:


 On Apr 7, 2009, at 11:33 PM, Avinash Lakshman wrote:

  I think someone else opened that door here.
 Avinash


 I completely agree with Avinash that current committers need to be
 involved in the approval of new committers.  There appears to have been
 a miscommunication that resulted in some committers not being subscribed
 to the private list.

 Since I'm not a contributing member of this project, I'll refrain from
 further comment.


 --
 Ian Holsman
 i...@holsman.net






Re: working together

2009-04-07 Thread Matthieu Riou
On Tue, Apr 7, 2009 at 8:11 PM, Avinash Lakshman avinash.laksh...@gmail.com
 wrote:

 snipped
 (2) This is something that I have said many times over. Certain things are
 the way they are for a reason. For example when I say ConcurrentHashMap is
 a
 memory hog I say it because we have seen this in practice. How does it
 manifest itself? I obviously do not recall since all this was over a year
 ago. No one can claim to have run tests the way we have in the last year
 and
 a half. One cannot just run some simple test and say well I do not see the
 problem. I am not dumb. Anyone having gone through the exercise of having
 built a system like this in an organization will realize that the tests are
 very intermingled with the organization's infrastructure. I have no time to
 rip that all apart and put together a test suite at this point. This is
 just
 an example. There are many such instances - after all - we are the ones who
 have the operational experience with this and I do not think anyone can
 claim to understand the behavior this system in production workloads better
 than we do.


Look, what you're saying here is basically we know better and you're
stupid, so don't touch our code and don't ask questions, we can't provide
answers anyway. I'm hoping that's not the way you meant it (emails do that)
but that's the essence of what came across. You just can't run an open
source project by saying this on its development list.

Matthieu



 My understanding was that new committers come in and start with some
 feature
 implement that and then slowly start looking into what more they could do
 going forward. It is NOT come in and refactor the hell out of the system
 because you like something to be in a specific way. I do not beleive this
 will fly in any community. It is something like we now going through the
 entire code base and changing all the stuff just because I like it in a
 specific way. This seems ludicrous. We may have no experience in open
 source
 but we understand etiquette very well. This just doesn't seem the way
 things
 work in other Apache projects which are successful. We work very closely
 with two committers from the Hadoop project who were flabbergasted with the
 refactor changes that were going in. That is my gripe with the whole thing.

 Cheers
 Avinash



 On Tue, Apr 7, 2009 at 7:30 PM, Jonathan Ellis jbel...@gmail.com wrote:

  On Tue, Apr 7, 2009 at 3:10 PM, Torsten Curdt tcu...@apache.org wrote:
   So the problems I am seeing are:
  
   1. We elected a committer without real community consensus. The
   barrier of entry was unnatural low on this one. On the other hand we
   need non-FB committers for the graduation. The more the better. (No
   reason for low entry barrier though!)
 
  It's unfortunate that Avinash and Prashant weren't part of the
  process.  Still, when I talked to Avinash on March 1, he told me [and
  this is a direct quote] If I had known you earlier I would have added
  you as a committer.  So when I asked one of the mentors how to become
  a committer and it worked out from there it did not occur to me that
  anything was wrong.
 
  
   2. A missing definition of development process:
- What is considered a valid code review?
- How much are changes discussed up-front?
 
  I think we have a handle on this now.  All changes are put on Jira for
  review and are not committed until there is at least one +1 from a
  reviewer.  (I personally prefer post-commit review because manually
  attaching and applying patches is tedious but we don't have enough
  people following the commit log for that to work right now.)
 
- What is the roadmap? ...for whom? (weighted as a community)
 
  That's worth a separate thread. Such as this one. :)
 
 
 http://www.mail-archive.com/cassandra-dev@incubator.apache.org/msg00160.html
 
   3. Is trunk considered stable? Or aren't we missing a stable branch
   for the required stability? Once we have the separation between stable
   and trunk: Will patches really find it's way from trunk into stable?
   Is Facebook OK with that approach. Will everyone cope with the
   additional work of merging? Would it be useful ...or overkill to use
   merge tracking?
 
  I'm happy to assist with merging code to or from stable branches in
  this scenario.
 
   This is a tough situation but I hope everyone sees this as an
   opportunity. Please let's discuss this openly in civilize manner.
   Focusing on how to solve these points rather than looking at the past.
   Please talk to each other. Can you/we work this out together?
 
  This can still be a win/win for everyone.  I think that historically
  facebook has felt like the community hasn't contributed much of value,
  but we're starting to change that. The build and test process is
  dramatically better than it was before thanks to community
  contributions.  We have a real daemon mode.  (Well, not in the purest
  sense, but it runs in the background nicely w/o nohup or screen. :)
  We've 

Re: working together

2009-04-07 Thread Roland Dreier
  (2) This is something that I have said many times over. Certain things are
  the way they are for a reason. For example when I say ConcurrentHashMap is a
  memory hog I say it because we have seen this in practice. How does it
  manifest itself? I obviously do not recall since all this was over a year
  ago.

Not to sidetrack the conversation too much -- but this is a perfect
example of why I suggested more informative changelog entries would be
valuable to the project going forward.  If you record this sort of
information along with changes to a file, then someone wondering why
code is written in a certain way at least has a hope of using svn
blame or the like and actually finding an answer.

 - R.