Skip to content

Open Source is not a Zero-Sum Game

August 10, 2009

I had originally left off the name of the person I was talking about because this post isn’t intended to make him sound like a bad guy. However, he felt I wasn’t being conversational, so the person that triggered this post is Sebastien Lambla, author of OpenRasta. Read his response here.

I caught some flak on Twitter today for releasing Siesta as open source. It was the same song that I heard when I wrote Ninject, which was: why are you reinventing the wheel? Normally I shake that sort of thing off, but once I found out that the person complaining was the author of a “competing” REST framework, it ruffled my feathers a little bit.

Siesta originated as part of Zen. Implementing REST is not a difficult problem, and I’ve done it before. (Most of the difficulty is in mapping HTTP requests to method calls, which ASP.NET MVC handles for you.) Since I knew exactly how I wanted it to work, and had a reasonable idea of how to implement it myself, I just sat down and wrote it.

Could I have used an existing open-source framework? Sure, but I’d never heard of any other than WCF REST, which I already knew didn’t match my mindset. I searched for a little while on Google to find other libraries, but didn’t find anything. I’d also argue that REST is so low-level that it would be very difficult to come up with a clean drop-in solution – that’s why I suggested that Siesta is more an example of how to write a REST system than it is a reusable framework.

I believe very strongly in not falling prey to the Not Invented Here syndrome. Like I said in my previous post, Zen uses a myriad of open source libraries:

I’m all about standing on the shoulders of giants. 🙂 However, rolling your own is not always waste. The bits that became Siesta took me about a total of 4-5 hours to implement end-to-end. That’s much less time than it would have taken me to find a framework, understand how to use it, evaluate whether it would work for what I needed, and integrate it into Zen.

Like I said, I’ve written several RESTful systems before, using MonoRail and raw IHttpHandlers – but none of them belonged to me, so I couldn’t open source them. Because I already understood the problem well, it was actually less expensive for me to write my own implementation.

As the owner of a startup, I have to justify the value of everything that I do to ensure that I’ll get a decent return on investment. In order for me to consider using an external framework, I have to be relatively certain that I’ll save time by using it in the long term. This leads me to my point:

It’s not my fault if I don’t know about your product. It’s your fault.

If you don’t market your product well enough for me to know about it, and I can’t even find it when I’m looking for it, it’s never going to get on my radar. It doesn’t matter if your product is free and open source or costs thousands – if I even don’t know it exists, how in the world am I supposed to make the difficult decision to use it?

That’s my first problem with the complaints about Siesta. My second problem is this: I spent my time and money to develop the part of Zen that became Siesta, and because other people have previously asked me for help on the topic, I’m happy to share it with anyone that’s interested, free of charge.

It’s my code, and I’ll do what I damn well please with it.

I haven’t always thought this way, but these days I don’t care much about mindshare or competition in the open source space. I spend enough time competing on my commercial endeavors, which have the distinction of putting food on my table. Open source is something I do because I want to help.

Siesta’s not perfect and it’s not the only solution, but it represents the way I think a REST system should be implemented. If you don’t like it, don’t use it. Even better, tell me what you don’t like about it so I can learn from your perspective just as you can learn from mine.

The goal of open source is not to develop a single solution that can be used in all situations. In fact, it’s the opposite: open source thrives on competition. If you feel threatened because someone else releases something that you perceive as competition, maybe you should rethink why you’re working on open source in the first place.


From → Uncategorized

  1. Paul Alexander permalink

    Here! here! well said. “It’s not my fault if I don’t know about your product. It’s your fault.” There are sooo many good reasons to write your own code especially if it is both foundational to your project and trivial to implement. Most frameworks grow to into gargantuan beasts full of stuff you just don’t need. Then you have to depend on some third party developer doing it right and maintaining support. I love your stuff, love Ninject, keep it coming. It’s hard when you get ruffled to keep up the fight but it will blow over since _you_ write great code.

  2. Tyler permalink

    With regards to using Fluent NHibernate and MigratorDotNet, I am curious how you are taking advantage of both at the same time. I would certainly enjoy reading about that instead of bickering over OSS.

  3. Well said. I think much the same as you. On a different note, I’m intereseted in your use of Spark. I have a personal project that I was considering using either Spark or NHaml for. Any thing worth noting?

  4. @Christopher: Nothing to mention about Spark other than that it’s fantastic. 🙂

  5. Nice post! I agree with your points around promotion and competition… I look forward to seeing more code soon 😉

  6. Brannon permalink

    Well said!

  7. Thanks for the long list of exceptional OSS projects . I haven’t heard of Argotic or Quartz.NET, both of which will be useful for an upcoming project. (Not to mention Siesta and Ninject)

  8. Loved the comment about the (lack of) marketing being the fault of the other authors. Marketing is a topic lost on a lot of developers and entrepreneurs and it’s refreshing to see someone call people out for their oversights w/ regard to advertising of their bits.

Trackbacks & Pingbacks

  1. Twitted by timrossinfo
  2. Daily Links for Wednesday, August 12th, 2009

Leave a Reply

Fill in your details below or click an icon to log in: Logo

You are commenting using your account. Log Out /  Change )

Google photo

You are commenting using your Google account. Log Out /  Change )

Twitter picture

You are commenting using your Twitter account. Log Out /  Change )

Facebook photo

You are commenting using your Facebook account. Log Out /  Change )

Connecting to %s

%d bloggers like this: