Skeleton Project, Spending Time on New Projects
« previous entry | next entry »
Dec. 11th, 2006 | 11:53 am
There is a much longer post I need to make on how to be productive in
writing open source software, but this is not that post.
The post is about getting projects started quickly, and distribution
of projects once you are done.
When I work on a new Apache module, its easy, I type apxs -g -n
"name" and I start coding. For perl I use h2xs to do the same thing.
But what about creating a standalone project?
I've found over time that I need to add around an hour to two, just
to create new projects. That is a waste of my time. This summer on a
train ride I started to work on a new idea and stopped myself and
instead wrote a skeleton project that I could use in the future.
Ideas don't always go anywhere. Most ideas are a few hours worth of
work that I then toss. I learn from these ideas and sometimes they
become projects. I create a simple roadmap in my head and see what
happens (I like plans, even if I do not follow them). For all of the
code I write, only a tenth of it gets published, the rest of it gets
tossed but I learn something from the process that makes it worth my
time. Learning is valuable, and sometimes you have to roll up your
sleeves to make that happen.
But the startup time for a project?
That needed to go. It was a waste of my time, and as I have found
myself doing more standalone projects, this has become a real pain.
So I created a Skeleton Project:
http://hg.tangent.org/skeleton-project
http://tangent.org/index?node_id=517
The point was to start collecting ideas on what I needed to do to
start projects more quickly. A better template for me. A template
that I kept in a central location where I would always have access to
it (and if you haven't been sitting in the dark for the last few
years, that means its going on the web for me to access and commit to).
I am sure I will add to it over time, but its a good start, and I
can't believe it took me this many years to do it. Most of the time I
have copied projects and just renamed, but that is a pain. I want
something cleaner to start with. I use Xcode if I am doing something
specific for OSX, but that is not common, and its templates don't
match my needs most of the time.
On a side note, I need to do the same for storage engine projects for
MySQL. The startup cost for them is too high at this point as well.
I've been telling people to just copy the Example engine and work
from there but that isn't the greatest answer. I spoke last week to
one company who is working on a new engine, and I was really kicking
myself while listening to them. They were wasting their time on
solved problems.
My second thought around this came to me when I was deciding what to
do with the skeleton project. I wanted to let other people see it.
I believe in open source for a number of reasons:
I don't want to duplicate efforts, aka wasting my time writing yet
another string class.
I believe in forking, its a right, its good for the global commons.
I believe leaps in design are made through the synergetic effects of
many ideas.
I carry ideas from job to job, I won't pretend not too.
It allows people to learn "how things work".
There are probably another dozen reasons if I think about it. To make
open source work code has to be published. How to do that? I love the
fact that I now have RSS feeds on my commit messages, I wish every
project would do this. But I don't think that is enough... sites like
Freshmeat and Sourceforge fill in the gaps, but they require you to
publish versions.
Versions are good, they give you a baseline to develop projects
against, but if you can avoid publishing hard versions it opens up
the possibilities of what can be done. Incremental value can be
accomplished. This is something I love about the model of hosted
software. You can continue to develop and not create monster versions
which are hard to get shipped (try living in Seattle and bring up
Vista to your Microsoft friends...).
Earlier this year while talking to Adam Bosworth I took away the
concept "shipping software sucks". The thought had been in my head
for a while, but I had not let it really surface. Later in the year
talking to Richard Hipp about this he mentioned his solution to the
problem. His answer was having SQLite not version strictly. When I
look at his website I see this in his version information:
Version 3.3.8 adds support for full-text search using the FTS1
module. There are also minor bug fixes. Upgrade only if you want to
try out the new full-text search capabilities or if you are having
problems with 3.3.7.
It is a different approach, one that won't always work, but its
tempting. He can introduce new features to try out and reduce his
need to support multiple versions. I think to myself "this isn't
going to work forever, some customer or some legacy need will spoil
this", but I do wonder if it is not more possible then what I think
it is.
For the Skeleton Project I am going to try something different. I am
just going to post the link, and not bother to version it. It won't
be possible to put it on Freshmeat since Freshmeat would judge the
project dead so I am not going to bother (which of course gives me
the idea of a new type of Freshmeat which would concentrate more on
the liveliness based on commit, not version releases).
I'm curious to see how often it gets downloaded and how well it gets
indexed :)
writing open source software, but this is not that post.
The post is about getting projects started quickly, and distribution
of projects once you are done.
When I work on a new Apache module, its easy, I type apxs -g -n
"name" and I start coding. For perl I use h2xs to do the same thing.
But what about creating a standalone project?
I've found over time that I need to add around an hour to two, just
to create new projects. That is a waste of my time. This summer on a
train ride I started to work on a new idea and stopped myself and
instead wrote a skeleton project that I could use in the future.
Ideas don't always go anywhere. Most ideas are a few hours worth of
work that I then toss. I learn from these ideas and sometimes they
become projects. I create a simple roadmap in my head and see what
happens (I like plans, even if I do not follow them). For all of the
code I write, only a tenth of it gets published, the rest of it gets
tossed but I learn something from the process that makes it worth my
time. Learning is valuable, and sometimes you have to roll up your
sleeves to make that happen.
But the startup time for a project?
That needed to go. It was a waste of my time, and as I have found
myself doing more standalone projects, this has become a real pain.
So I created a Skeleton Project:
http://hg.tangent.org/skeleton-project
http://tangent.org/index?node_id=517
The point was to start collecting ideas on what I needed to do to
start projects more quickly. A better template for me. A template
that I kept in a central location where I would always have access to
it (and if you haven't been sitting in the dark for the last few
years, that means its going on the web for me to access and commit to).
I am sure I will add to it over time, but its a good start, and I
can't believe it took me this many years to do it. Most of the time I
have copied projects and just renamed, but that is a pain. I want
something cleaner to start with. I use Xcode if I am doing something
specific for OSX, but that is not common, and its templates don't
match my needs most of the time.
On a side note, I need to do the same for storage engine projects for
MySQL. The startup cost for them is too high at this point as well.
I've been telling people to just copy the Example engine and work
from there but that isn't the greatest answer. I spoke last week to
one company who is working on a new engine, and I was really kicking
myself while listening to them. They were wasting their time on
solved problems.
My second thought around this came to me when I was deciding what to
do with the skeleton project. I wanted to let other people see it.
I believe in open source for a number of reasons:
I don't want to duplicate efforts, aka wasting my time writing yet
another string class.
I believe in forking, its a right, its good for the global commons.
I believe leaps in design are made through the synergetic effects of
many ideas.
I carry ideas from job to job, I won't pretend not too.
It allows people to learn "how things work".
There are probably another dozen reasons if I think about it. To make
open source work code has to be published. How to do that? I love the
fact that I now have RSS feeds on my commit messages, I wish every
project would do this. But I don't think that is enough... sites like
Freshmeat and Sourceforge fill in the gaps, but they require you to
publish versions.
Versions are good, they give you a baseline to develop projects
against, but if you can avoid publishing hard versions it opens up
the possibilities of what can be done. Incremental value can be
accomplished. This is something I love about the model of hosted
software. You can continue to develop and not create monster versions
which are hard to get shipped (try living in Seattle and bring up
Vista to your Microsoft friends...).
Earlier this year while talking to Adam Bosworth I took away the
concept "shipping software sucks". The thought had been in my head
for a while, but I had not let it really surface. Later in the year
talking to Richard Hipp about this he mentioned his solution to the
problem. His answer was having SQLite not version strictly. When I
look at his website I see this in his version information:
Version 3.3.8 adds support for full-text search using the FTS1
module. There are also minor bug fixes. Upgrade only if you want to
try out the new full-text search capabilities or if you are having
problems with 3.3.7.
It is a different approach, one that won't always work, but its
tempting. He can introduce new features to try out and reduce his
need to support multiple versions. I think to myself "this isn't
going to work forever, some customer or some legacy need will spoil
this", but I do wonder if it is not more possible then what I think
it is.
For the Skeleton Project I am going to try something different. I am
just going to post the link, and not bother to version it. It won't
be possible to put it on Freshmeat since Freshmeat would judge the
project dead so I am not going to bother (which of course gives me
the idea of a new type of Freshmeat which would concentrate more on
the liveliness based on commit, not version releases).
I'm curious to see how often it gets downloaded and how well it gets
indexed :)
(no subject)
from:
fallenpegasus
date: Dec. 11th, 2006 10:53 pm (UTC)
Link
Reply | Thread
(no subject)
from:
fallenpegasus
date: Dec. 11th, 2006 10:56 pm (UTC)
Link
Reply | Thread