I think there is a presumption by some people that open-source is open so that you can modify the code. I think in many cases it is as much or more about transparency and soliciting input from the broader user community than it is about empowering users to modify the code.Open source is really about culture and mindset and these two sentences sum up, for me, the core misunderstanding that many people have about the process.
So there's not so much wrong with the notion of making changes, but HOW one makes those changes? This could be what you're suggesting with your "culture and mindset" comment.
-- Adam
As Brian says in his post, sometimes what you think is an improvement may go against the principles behind the code - because you don't have all the background information as to why a design decision was made. In those cases, discussion with the authors and/or community will provide a lesson in software design that may either lead to you deciding your "improvement" is not, in fact, an improvement or sometimes to the authors deciding your "improvement" is worth adding despite not fitting the principles.
Open source is meant to be a collaborative approach to some degree, although it is not a balanced two-way street: the authors are still the authors and you are still the user.
One great example for me in the Fusebox world is John QvT's insistance that IFs didn't need nested and that a CASE/SWITCH statement was a bad idea too. With no interest in accepting patches for those, the option was fork the code for my projects or to pick a different framework. This demostrates several aspects of the good/bad of open source -- mainly that since the code was open, I could make my changes whether they were smart or not, whether they made sense to the bigger project or not.
Any open source project has a human element -- again as Fusebox has demonstrated *numerous* times -- and those are definite factors in how the project grows/moves forward. One could consider Fusebox4 a "fork" of Fusebox3 and Fusebox5 is *definitely* a fork of Fusebox4, but since in both cases there's been no serious development of the previous track, it's looked more like upgrades :)
Many successful open source projects have benevolent dicators (eg MySQL, Linux) while more democratic ones can end up more like Postgres or Chandler :)
The custom lexicon opened the door to optional verbs and the skeleton application contains examples, including <cf:switch> / <cf:case> / <cf:defaultcase> :)
Does that make me a benevolent dictator?


