This post originated from an RSS feed registered with Ruby Buzz
by David Heinemeier Hansson.
Original Post: Can software have opinions?
Feed Title: Loud Thinking
Feed URL: http://feeds.feedburner.com/LoudThinking
Feed Description: All about the full-stack, web-framework Rails for Ruby and on putting it to good effect with Basecamp
For some people, the answer is certainly no. Or at least, that software shouldn't have opinions. Jason certainly felt a fair share of that sentiment after posting "Make one person responsible" where he rejected the idea of having multiple people be responsible for a todo item in Basecamp.
The core theme seems to be that it's considered arrogant on the part of the software builder to limit features, or decide not to implement them, on the basis of their believes in how the software should be used. In other words, some people want the maximum amount of flexibility in their software and then they will figure out how to use it best for themselves, thank you very much.
On a deep instinctual level, I sympathize. It smells like a struggle between those who want freedom and those who (apparently) arbitrarily wants to take it away. How could you not side with those crying for freedom?
But the question of freedom is not one of primary interest for this matter. Rather, questions like "does it work?", "can I learn something?", and "can I make my situation and the software fit?" seems to be of greater importance. Which in some ways are paradoxical. Asking for a pragmatic response to an arguably dogmatic pose.
To me, though, that's fine. Because when I adopt software, I'm not just looking for features, I'm looking for approaches too. One of my favorite examples is the original wiki design. Ward Cunningham and friends deliberately stripped the wiki of many features that were considered integral to document collaboration in the past.
Instead of attributing each change or line to a certain person, they removed much of the visual representation of ownership, which in turn fostered a shared sense of community belonging and partnership. That very key ingredient that makes Wikipedia work today.
Of course, I don't even need to reference others to demonstrate my position on the matter. Ruby on Rails is a tour de force of opinions packed up as software. Its decrees are much more apparent than "make one person responsible", which is obviously also a big turn-off for some people. The same kind of people that rejects the notion that Basecamp should have an opinion on project management. And that's cool.
Neither Basecamp nor Rails is trying to be all things to all people. Because you can't. And once you realize that, it becomes a lot easier to embed opinions in your software. They're going to be there anyway. Kind of like the notion of "objective journalism", the bias can never be rooted out. And while the search and presentation of "the truth" might require you to pursue that objective goal, software rarely shares the same heavy responsibility.
Rails obviously cranked up the opinions high. I believe that's a large part of why its getting whirlwind traction. The closer your opinions on web-application development are to mine (and that of the growing community), the more Rails will feel like the perfect fit. A fit that couldn't be attained from a neutral position (where everything is equally hard).
I wish more software was like that. Took the courage of the wiki and said, you're not going to see how made every change because that has undesirable sociological consequences on collaboration. It would make it instantly clear when a piece of software was not for me. Instead of discovering the mismatch of bias down the road. And it would make me love the software that either fit my bias instantaneously or could pursuade me to.
I'm asking for more art and less science in software.