Part II - Making Open Source Work
From my experiences, there really seems to be a right way and a wrong way to
begin an open source project.
The Right Way
+ If you haven't already, write a usable working proof of concept of your software.
+ Do NOT create a sourceforge.net project for your software (see below).
+ Make a simple web page for your software. Provide downloads for the source and (if it runs on Windows or Mac) binaries. Perhaps even bundle the source with binaries, if it's not too big.
+ Put an email address on the web page with a link that says "send updates/patches/requests/etc to ". It often is also useful to put a list of things that you are intending to add, i.e. a "todo" list.
+ Continue to update and USE your software.
The big push here is that a sourceforge.net project should only be created
for a project once it has enough people working on it to warrant it (i.e. more than a few).
From my experiences it is much easier for developers to get involved with a
project if they can download a source tarball or ZIP file, make their changes,
and send them back to the project owner, who can then merge changes appropriately. While the project owner should definitely be using some sort of version
control, setting up a CVS server for other contributors isn't really that
important, at least until other people start doing a very big percentage
of the work, and having it as the recommended mechanism for access
initially is a really bad idea, because the barrier of entry is higher.
The other things I suggest are:
+ If you use other SDKs/libraries, include a text file with the names,
versions, and (preferably) download links for those SDKs/libraries.
+ Try to use only the most common libraries, to make it as easy as
possible for other people to run and build your code.
The ideal scenario is, you create the initial version of software and thus
begins the cycle:
+ Someone finds out about your software
+ That person wants a particular feature or functionality, so they add it
+ They send you a patch, you merge it into the main release
+ Repeat.
That's really all there is to it. Later on, if you have many people actively
working on your project, you might want to consider public CVS etc, but even
that isn't really that helpful, as you'll only want people whose code you trust
to have commit access.. anyway, hope this helps people! I know it might obvious, but hey, that's why I named this post what I did.
1 Comment
So I built my power filter for the
camera in my
plane out of a
1000uF cap and a 2.2ohm resistor,
and behold, it worked like a charm. It was extremely windy today (really bad), but I couldn't wait, so I found a field that was at least mostly empty (Balboa Park), and did a couple of test flights. I had to fight to keep the plane in control, the wind was so great and gusty, but I managed to (most of the time). Using
this recording setup, I managed to take this
lovely video (about 15mb, XVID/MP3 AVI) of 2 of the flights. Tomorrow I hope to do some longer, more controlled flights, if the air is calmer. Woohoo! So much fun.
13 Comments
Test flew my RC plane with
camera mounted in it today, was fine. Balance good, weight not too bad,
added power draw seemed OK, etc. Didn't have the receiver for the camera, though,
so I don't have any video footage of it.
The main thing left to fix is that when the motor is on, the power gets so noisy that the camera starts fucking up. So after
researching online, I've decided to go to Radio Shack in the morning and buy
the appropriate resistors and capacitors (well, just one of each really), and build a lowpass filter. Judging by how the video looks when the noise is there, it appears to be correlated to the speed of the motor (the motor probably spins at upwards of 2000 RPM), so it seems relatively easy to build, say, a 30Hz lowpass (which using a 2.2 ohm resistor and 2200microfarad cap will give me a (workable) voltage drop of 0.2 volts, at 80mA load), which will hopefully take care of it. I'll buy some variety of resistors and capacitors to tweak the filter once I see how it works, too. Fun fun, math meeting electronics, mmm. I'm not sure what the frequency response curve is for a lowpass like this, so I'm shooting really low. Anybody have any experience with doing this? :) I guess I'll find out if I'm completely wrong...
Comment...
Part I - Choosing a License
Disclaimer: I am not a lawyer, these are my thoughts as a software developer.
For me, there are three basic licenses I consider when I'm releasing a piece
of software.
1. A Proprietary License
This often seems like a safe first step--keep the source code to yourself,
let people use binaries, etc. I'm not aware of any "standard" closed-source
licenses one can use (are there any?). So it seems a lot of people end up
copying other peoples (expensively crufted) legal text, which may or may
not be that good, and raises copyright questions for the license itself.
At any rate, releasing software with a proprietary license has benefits,
especially since you can completely monopolize the software, giving you
potentially more opportunities. You can always open source it later, too.
The drawbacks to keeping source private are obvious, though. You can't get
people to work for you for free! (See Part II, below)
2. General Public License (GPL)
When I want to open source my software, and also want to ensure that any derived
versions of my software remain open source, I'll usually choose to use the GPL.
Contrary to what many people seem to mistakenly believe, by releasing your software
GPL licensed, you do not give up any ownership or other rights. While you grant
other people limited permission to your code, you still have rights including
the right to license your code under other (potentially lucrative) licenses as
well.
Licensing the software under other licenses does get more complicated once
other peoples contributions find their way into your codebase, though.
If you intend to license your GPL software under other licenses, you will
want to control who can contribute to the codebase (See Part II, coming
soon), and work out agreements with them.
3. BSD-like license
Using a BSD-like license on code makes it available for everybody to use,
with very little restriction on what they can do with it or how (usually
the main stipulation is how credit is attributed). It's really not too far
from making the code public domain.
The upshot of a BSD-like license is that you (and everybody else) can do
just about anything you want with the software. When other people contribute
code, they're giving you that permission as well.
The downside of a BSD-like license is that someone else can take your software,
and go make it (via big modification, or slight modification and promotion)
into something huge-- and all you will be entitled to is a small credit. Now,
the reality is that this could happen if the software was GPL licensed as well,
but at least then you'd get access to the modified source code.
Conclusions
Ultimately whatever license you choose someone can always go and (rewriting
if necessary) make something big out of your software, so (I keep telling
myself to) worry more about the upsides and less about the down.
Proprietary licenses are really good for software where you feel you (or your
close associates) will be working on the software a LOT, and want to maintain
complete monopolistic ownership and control. This is very attractive
to many people (myself included) for a lot of projects. It is completely
respectable in my opinion, as long as you feel it is justified.
If however, you feel like a project would benefit greatly from having other
people contribute, and the project has potential to be bigger than you've
made it already, using the GPL can be a good choice.
I find BSD-like licenses to be good for licensing of libraries (or any
other software that you generally want to be used as widely as possible),
since people can link (and optionally compile) them with their projects,
and not worry about the terms. Take zlib, which is used everywhere, or
jnetlib, which isn't used as much but I'll mention for selfish reasons.
Coming soon: Part II (or: how to get other people to work on your open
source project)
4 Comments
Tuned the piano some more today, most everything had gone flat, no doubt due to the wood adapting to
the new pressures of being in tune. Lather, rinse, repeat.
Here's me and Biderman jamming with the
piano and drums a couple of days ago. mmm. And
here's me by myself today.
I'm starting to write a individual software developer's guide to software licensing and open sourcing, at least
thoughts and tips from my experiences. I should be posting Part I (choosing a license) tomorrow, and Part II
(how to make worthwhile open source software, i.e. how to get people to contribute etc) soon after. I know there
may be other guides, but this will be my take (AND I AM RIGHT, DAMMIT! JK).
Recordings:
freeform jam with bren
1 Comment
The topic pretty much said it..
Tunnel Vision, baby. GPL licensed, too. Not completely useless, just mostly.
OK so to make Christophe and others happy, here's LanMon, too. BSD licensed this time. Speaking of which, should probably make the other small utilities that are GPL'd BSD too. It's smaller to distribute... ha ha.
Comment...
Feeling oh-so-assy.
Here's the halfway done Tunnel Vision app. Need to do the background image modes and an installer and I'll be pretty happy overall.
Got the piano fully tuned, though it's pretty off (I guess tuning strings flattens the others, when it was used to being so far out of tune), so I'll probably go tweak it again soon. Biderman and I managed to record some stuff with it, but
I fucked up and haven't put it online yet. It sounds approximately halfway decent, which I'm happy about.
On friday I also cleaned a couple years of gunk from the fretboard of my guitar
and bass. Yuck. I guess playing in a dirty garage has its downsides. Anyway...
Once I finish the tunnel vision app, going to make my Jesusonic/MT (multitrack)... a Jesusonic that's good for doing live performance, setting up loops etc. For making crap like this or this.
Comment...
Saw Dungen last night, for their second SF show. Totally ruled. Wish I had a bootleg.
Also got the piano almost tuned. Tomorrow I'll spend another hour or so and it'll be in rough tune (then if I'm feeling it I'll go tweak it into even less bad tune). Yay. Sounds like a piano now.
I ended up using that last Cockos logo for the web site. Yay. I prefer it white on black, too.
And finally, decided to go ahead and finish the old TunView proof of concept I made over a year ago into a more complete application. Woot. Should be a day's work, and it's kinda useful (paranoia, mmm).
1 Comment
Here is my fourth try at making
that Cockos logo work. I like how it scales down for 32x32 icons too, kinda maze-like. Maybe I'll
try doing a rainbow colored one, too.
Piano tuning toolkit arrived, I'll get my tune on shortly. woot.
9 Comments
Picked up a Rhodes Stage MK I off of
craigslist, built in 1978, the same year I was born. Sounds sexy.
Experimented for a few minutes with making a Cockos logo, here are three versions of the same basic concept:
revision 1,
revision 2,
revision 3. I think I like the last one best. Before you complain that it's too annoying looking, understand that it is supposed to be. There's a faint bit of humor in there somewhere...
Oh, and here's a very good NINJAM autosong (the first 5 minutes anyway). Random people rule!
Now L1quid is coming into town to commence his 21st birthday drinkin'. Get ready
to get tired of drinkin! I am (ready (to get tired of drinkin))!
Recordings:
freeform jam with brenchrdanjoshnewton
5 Comments
OK so updated things more, went away from the ol' <pre> formatting, and
more to normal html, but only in presentation, not so much in the actual
writing of entries, anyway. Maybe it'll look right on my treo, now...
The real reason I wanted to update, however, is this acoustic song (featuring David Wiener), which was a couple of first takes (since there was no time to do more), and I totally dig. He's so talented (in my opinion anyway) that he can take some crap I recorded as a ditty and make it completely work as a song. Anyhoo.
1 Comment
Did some nice little updates to the comments system to better show URLs and
auto-link them. Also made a
recent comments page that shows you comments sorted
by date. And fixed a bunch of stuff (displaying bugs, security holes, begone).
Perhaps I should publish this modified version of hlscript as hlscript++, or
something.
/me drools and waits for the piano tuning kit to arrive. and my blisters to heal.
4 Comments

Spent a few hours carving/painting/attaching new black (sharp) keys for the
piano today, woot. Also started tuning it. I ended up killing my fingers
(blisters and whatnot) since I lacked proper tools, but it started to take
shape. I didn't break any strings, even (though Biderman did, haha). So
this evening I ordered a tuning kit, to aid in this venture. I know, I should
just hire a professional, but A) I'm not sure if this piano is worth it and
B) I'm going to wait until the piano is in a (more) climate controlled
environment. Tuning wouldn't last long where it is now. But tuning it myself
is proving to be very fun, and you get some really weird sounds at different
times, when you have each of the strings for a note off the right amount,
the harmonics are really fascinating. Anyhoo...
Recordings:
crapaloneacoustic
2 Comments
woot, made this page look like the pictures pages etc. fun with php. that is all.
Oh yeah, I also posted the Mac versions of Winamp on my code page, since
nobody else seems to distribute them. Not that anybody would really want to use
it, but a few people might find it entertaining.
7 Comments
Been flying my F-27 more, so much fun. Tried increasing the throw even more
today, but it was too much, and the servo/radio combination didnt have enough
precision for me to fly as smooth as I'd like-- which is a shame, cause the
snap rolls were fun.
When Francis was in town we got a Slo-V (made by Parkzone as well), too. We
didn't get to fly it while Francis was here, but I managed to yesterday, and
while it is in fact very slow, it's also very underpowered. At 65F 80' above
sea level, it doesn't seem to have enough power to get out of ground effect!
I don't think I ever got it over 15' up (ground effect is usually 2x the
wingspan, right?). It does travel nice and slow, though. Anyway...

I picked up a free piano off of craigslist last night (thanks for the help,
everybody).. Going to start fixing it up a little. And then once it's
somewhere that is more temperate I will have it tuned/etc. Starting to make new
tops for the sharp (black) keys, using some spare basswood lying around.
If anybody has any good resources for piano parts, let me know.
A terrible little jam I made with the new piano is here.
3 Comments