Jan 25, 2009

Open Source Websites?

I've had an interesting thought over the last little while. I've been thinking about a cool website to build (I'll write more about this in a later post once I get more shit together) and I'm hoping to release all the code for it under the GPL, with the exception of things like DB username/passwords and things like that.

A problem is that websites cost money. If they get popular, then that amount of money is not exactly trivial depending on how complex and bandwidth-intensive your site is. Some kind of revenue stream is important, unless you want to shell out cash from your pocket for your expenses. There are a few easy methods of gaining revenue like advertising and donations, however if I were a businessman I wouldn't want to rely on these too heavily (unless I was Google) as they aren't exactly reliable.

I had the interesting pleasure of hearing RMS speak yesterday at CUSEC. He defined three sort of groups in which you can put works and explained how copyright "should" (in RMS's definition of should) apply to these different things. The three groups were: tools, subjective works, and creative works. The first included things like software, and he stated that they all should be free. My idea for a site is a platform on top of which creative content is built, and according to Stallman this is a tool and should therefore be free. The second one I'll sorta gloss over because it doesn't really apply to my project, but it is things like news articles and blog posts and what-not. The third one is things like music, movies, or art. This, he states, should have some sort of copy protection to provide incentive for creators to create, but the length of the copyright should be quite limited to like 5-10 years. Therefore the content which the users of my site create is copyright-able.

This gives me another idea. While the code for my site would be open-source and anybody would be allowed to take it and use it however they choose, the content hosted on the site would not always be open-source - I would give the option for users to release their content to the public domain, which they may or not do. Content creators will then be able to restrict access to their works through payment, and a percentage of this payment would go to the site as a hosting fee or something1. However I could add something that say if they have a non-public-domain work, then if they leave it or something for a year it transfers to the public domain, something like that. Then other people would be able to take it and mess around with it and potentially make it better.

This type of site no longer requires the privacy of source code as a barrier to entry of competition, but instead relies on the built-up content base of the site. The way you would remain competitive is by constantly improving the quality of your content and your application.

But what would keep people from "stealing" your code? What if they take it and make a better product? Well that is where the GPL comes in. Suppose they "steal" my code and alter it to add a sweet feature or something. Since it is under the GPL, I can just take their source code and put the feature into my site.
There is always this risk that they will make a huge feature that makes the site so much better that they gain a huge user/content-base advantage over me in a short amount of time, but whatever. I'll take the risk.

Another question to ask is how well does the open-source model apply to websites? While the four freedoms still apply to these types of software, the value behind the software is quite different. In a content-based website, much of the value is in the content and not just in the application itself. Compare this to an application like OpenOffice, where the value of the program is in what it does for you as a tool - in the case of OpenOffice, it makes it easier to write documents.
I'm not saying that there is no value in making a website open source (it has done wonders for Wordpress), however there is less value in its use as a tool and therefore there is less applicability of open-source.

1 This has probably been done before, and I'm expecting to get like 5 comments with sites that are doing this.


Ryan Kohn said...

I was thinking about the same thing the other day. I love open source for two reasons: 1) I have the option and the capability to change programs to better suit my needs; and 2) most of the time, it doesn't cost me money to use it. Yet when I was thinking about creating my own site, I got all wishy-washy about my claimed love for open source.

The prime worry was what to do if other people stole my code. For one, most people probably won't, because most people are lazy. But out of the ones that aren't, you have to think about whether it's your actual code that gives you a competitive edge. In the case you cited, your edge would come from the content, so it wouldn't hurt as much to have open source. But if you're competing on some ultra-fast algorithm, then you don't have that same luxury. Open source would kill you.

When I thought about it further, I figured that having your code be open-source might actually prevent people from thieving your idea. If they know anyone can grab your code, then they might be scared of facing too much competition.

Sounds like RMS put a pretty good spin on the idea. Also, I'm jealous that you got to go to CUSEC.

Rob Britton said...

Heh, well CUSEC was hosted about 30 minutes from my house so I'd have to come up with an excuse not to go.

You bring up an interesting point in that the project being open-source would deter people from taking it. I didn't think about this and the more I do think about it, the more appealing the idea becomes. Heck, people might decide to join you instead of cloning you.

Guillaume Theoret said...

In the case where the code isn't the primary advantage then you win by putting it open source since while it's true that someone could clone you, that same person might instead just "scratch an itch" and develop features for you.

Often a website will have a forum or email or something where people can requests features. The feature will be put way down in the bottom of the list somewhere and might take a really long time to get to. If it's a programmer that wanted that feature though he could code it himself and say hey could you put this stuff into the live code?