What’s the dealio, yo? (or, why write FOSS)

If the post title is lost on you I recommend you stop reading this, go watch Zoolander then come back and read this.  Much like viewers of Zoolander either seem to love it or want their 2 hours back, open source  software seems to be viewed in two ways, there are the authors that love contributing and being a part of it and there are those software developers that don’t seem to see why anyone would want to contribute to something for free.

I’m certainly from the school of like on both.  I think Zoolander is an amazing comedy that gets funnier every single time I watch it (I’ve seen it over 10 times at this point).  I also love writing and contributing to open source software.

I think people generally get started contributing to open source in similar ways.  The software you want is either not available or expensive or you need to extend something that already exists and is open source.  I got started writing free open source software (FOSS) when I wanted a twitter app for my windows mobile phone.  This was ages ago when there weren’t many third party apps especially for mobile and the timeline was restricted to 20 requests per hour.  The great thing is I got to write it exactly how I wanted it.  I got quite a bit of feedback from users, some great and some frustrating.  The nice thing about it being free software though is there’s no motivation to please everyone and if someone wants to have a particular feature added in you can certainly branch the source and add it in your own copy or contribute it back to the original copy.  This is true of most open source projects.

I get asked pretty often what I get out of it.  There are certainly good and bad sides of writing and contributing to open source.  I think your exposed to more of the bad if you write and distribute a piece of open source software for end users than if you are contributing to a larger project.  Lets break down some of the advantages.

Great Stuff:

  • You learn a lot about your desired platform (remember you chose to work on this, free will!)
  • You get an chance to have your source commented on and learn to improve it
  • You can save someone else time who has to do the same thing (make your code reusable!)
  • By reducing others time doing the same tasks the result is everyone has more time for new ideas/software
  • Self satisfaction that you created something you can use and that other people value
  • Increased organizational skills, you become a master of saving yourself time
  • You’ll make new friends with common interests that are brilliant and push you to improve yourself

There are tons of positives beyond this list, but there is also a darker side to open source software that can drive you crazy as a developer.  Lets take a look at some of the downsides.

Suckie stuff:

  • You get a lot of feedback like this -> “This thing sucks” and that’s it, no details or comments on how to improve or fix whatever issues caused the problem.  This is one of the most frustrating things for me as an open source developer
  • You’ll invest a decent amount of time developing things for little or no financial return
  • You have to spend extra time documenting and hardening your software since it’s for mass use
  • If your blazing new ground you might have trouble getting help
  • You’re probably your own support staff

If you’re not currently contributing to an open source project I can’t recommend it enough.  If you’re using open source software and don’t think you have it in you to start something from scratch see if you can contribute to an existing project, there’s always bugs waiting for developers to fix them.  Don’t be afraid to modify an existing open source project for yourself either if you want a new feature it’s pretty likely that others do too.

“For Serious.”

–Darek Zoolander


PlainNote Progresses


Work on PlainNote is continuing. Eventually it will hopefully turn into the PlainNote ecosystem. I’m currently working on a sync library to sync up with a server that doesn’t exist yet. The server side is going to get some help from @funkatron. We have been collaborating on a google doc for the API.

Notable Items about the API

  • Try to be RESTful, but don’t get stupid about it
  • JSON is much better than XML, so only support JSON initially
  • This needs to be open and hostable by others, so don’t use closed-source tech to power it
  • If we’re worried about security at all, we should probably run this over SSL, since we’re sending account identifiers. That does make the backend stuff a little more complex, but doable. I wouldn’t worry about it at first.

Current Methods include

  • login
  • all (get all notes from the server)
  • list (get an abbreviated list of notes from the server)
  • one (get one note from the server)
  • update (update a single note on the server)
  • updatemany (update several notes on the server <future>)
  • delete (delete a note from the server)

In the interest of being open I thought I’d get some information out there on what we’re working on. The ultimate hope would be to have the ability to view and edit notes across any device as well as the web and have it all play nice together. There are a lot of timing issues to think about as far as updates on multiple devices without sync. For simplicities sake I think our current direction is going to be take the latest edit as master and not try to merge.

Good things to come shortly…. (like the below WebOS version of PlainNote)