A New Project, Part 23, how to help


Sticky, part 23



[Part 23 of a continuing series on building a new project.]

I am slowly (very slowly) building up a codebase for a new project. The motivation is partly that I'd like to see these things exist so I can personally use them. For example, I'd like a sticky-note type application (Nassau) that I can embed on web pages and use to keep track of thoughts. I'd like a polling application (Fulton) that can be used to gather user feedback about future directions for the new project. I'd like to migrate unto.net over to a better content management system (Ludlow). And to get there, we'll need a better data store (Houston), a flexible identity system (Orchard), a trust engine (Mercer), a request router (Canal), etc. Plus, my mind never stops imagining new applications that can be built on such a platform.

Ultimately these services and applications should be available to everyone. Much of the thinking behind the new project has been on how to build things in such a way that they are both open enough and scalable enough to be used by anyone who would like similar functionality for their own purposes. Someday they might be monetized via sponsored links. And since I'm not personally a fan of seeing too many ads, I'd like to offer users a way to opt out of them, perhaps with for-fee upgrades. Perhaps these applications could be dual licensed -- free for personal use, paid for corporate use. Whenever reasonable, the code should be open source and freely available.

Underlying all of the other motivations is the passionate belief that information should be free, that information wants to be free (free as in speech, not free as in beer). If I can do just a few things that help people publish information, find information, and communicate better, and do it in such a way that those channels defy being controlled, then perhaps I have done something very right. No one person, government, or corporate entity should ever broker acces to, or perhaps even have access to, all information. Information, and access to information, is power, and that power should be distributed as widely as possible for the greatest benefit to all. (My future stockholders just went short, no doubt.)

This new project is still, at best, a side project. My day starts at 4:00 AM, my commute at 6:00 AM, my workday at 7:00 AM, and I usually don't arrive home until sometime around 6:00 PM. There are just not enough hours in the day to make much headway on side projects. But even so, I like what I do professionally too much to walk away from it, not even to devote more time to these ideas. Perhaps someday I will have a go at this full-time, but not in the near future. Besides, I feel that the work I'm doing professionally right now is both aligned with my interests and quite likely to have a meaningful impact going forward.

That said, there may be ways to solicit some interim help from the community to foster progress. The time isn't right to bring other people in to start writing code, though perhaps it will be soon. But I could use a helping hand in the following areas. I'm not particularly expecting anyone to volunteer, but it never hurts to ask.

I would love to start working with someone who was interested in helping build out the infrastructure. This could involve managing the servers, the source respositories, the ancillary services (such as a mailing list, wiki, etc.), setting up monitoring systems, etc. There isn't much concrete work to be done just yet, but over time this will be in more and more of a demand.

Hosting is another area in which I could use some help. I'm currently maxing out the capabilities of my virtual server, and upgrading to a dedicated host is rather expensive. For development purposes, a machine with 1GB RAM and a 60GB drive would be sufficient to make progress. Each of the services in the new project are designed to scale laterally, so a helping hand here could someday lead to a much larger deployment.

Also, my development "workstation" is an old PowerBook. If anyone had a spare desktop that could run Linux with roughly the same specs as above, I'd put it to good use.

And most importantly, just keep reading and sending me feedback. I promise to keep posting publicly on the progress and to keep the process as transparent as I can. In return, all I ask for is your good advice. You don't even need to say nice things -- sometimes criticism is the most valuable input of all.

Update 1: Before I even clicked publish for this post, a conversation over coffee with Niall helped me realize something. It is just how happy I am that I don't have to answer to a business plan for this project yet. No investor in the world (even me, if it is self-funded) would be satisfied with the overview that I outlined in my last post. Businesses need concrete plans for revenue, and frankly, I couldn't care less about that sort of thing at this point. And I remember Evan Williams recently sharing some advice along the lines of how the best way to start a company is to focus on one thing that other people are ignoring and do that one thing extremely well. That is great advice that I don't particularly want to follow just yet.

Update 2: Evan Miller and I had a chat last week in which we brainstormed models that could jumpstart development on the new project. The idea would be to build enough of a code framework for each project and have enough of a project plan so that people could contribute their code directly into a pre-production server. This server would be subject to a continual barrage of unit, integration, and system tests, and each code contribution would be open for public reviews. This is not entirely unlike what goes on in some corporate development teams, but I rather like the idea of doing it in the open. The difference between this and a traditional open source development process like Mozilla's is that this would attempt to build some sort of trust system (again, see Mercer) that helps sort out the good code (and good coders) from the bad. This project isn't ready for it today, but it would be fun to plan for it in the future.