On Tue, Nov 17, 2015 at 7:56 AM, Todd Lipcon <t...@cloudera.com> wrote:
> > I have always found the "complex project" to merely be an excuse for > > control/no-trust. > > > > All software is hard. Your project is no more complex than others. > > > > > Having worked on projects in pretty much every layer of the software stack, > I think we'll just have to agree to disagree. Hm.... I really have to agree with Todd here. Systems with formal verification requirements or strong real-time requirements are much harder to modify correctly than certain other kinds of code that I have worked on. Systems with lower level languages can make these much harder again. Differing levels of reliability requirements also change the level of difficulty. I worked once on a hard real-time medical instrument and am proud to say that our methods of extensive review resulted in zero bugs ever detected in the core instrument over tens of thousands of units shipped and used over >10 years even though we only had stone-age tools for development. That was *hard* to do. Most of the code that I work on is *much* easier. We succeeded then due to our embrace of aggressive and ongoing review. RTC can be framed as "I don't trust you to do things right". It might even be objectively true for some codes. I have had far more success in framing RTC as "I trust you to help me make things better". The former statement leads to systems like Greg describes. The latter statement can bring people together like Todd describes. I do believe that CTR is appropriate in many settings, but I do think that in the extreme that leads to something like github or CPAN or CRAN or PyPi or npm. There is very little community connection between different projects (on github) or modules (on CRAN or PyPi), but there is also a nice freedom to innovate (and freedom to fail). Just as you need to take measures to avoid RTC being used as a club, you need to take measures to avoid the community drifting apart with CTR due to low interaction levels. Metaphorically, with strong binding you have gravitational collapse of a community which can lead to lots of heat and possibly a supernova or black hole. With weak binding, you can have the universe expand into a cold quiet place. Neither extreme is particularly desirable.