The future of BambooInvoice
April 07th, 2008
This weekend I gave some serious consideration to BambooInvoice. I made a few hours to fix some known bugs (including I think the dreaded no demo_flag property on line 19 bug), and add a few features. After working with the code, I know what I need to do. Here is my immediate plan for BambooInvoice.
- Release 0.84 - a release for mostly bug fixes, with a few features. This should be done in a few days max, maybe today
- Release 0.9 - this will focus on finishing out the features that I want in Bamboo immediately. There have been some great community contributions that I'd like to go through here. The idea will be to get all the features I want into place, and ready, as Bamboo prepares to take a large step forward.
- Release 0.91 - This will be a minor release, hopefully very minor, where I iron our any bugs introduced in 0.9. In a perfect world, this doesn't need to even be released.
This is all in preparation for a big move. Bamboo is ready to advance to its first release, BambooInvoice 1.0. I've decided to move to a full release, as it will represent a considerable shift to Bamboo. I will be re-architecting all of the variable and function names, and changing the coding syntax standards to bring them in line with what we use at EllisLab. For most users, this won't even be noticeable, but for some, if you've hacked the code, will require some changes. These will be very clearly outlined. Bamboo is going to take full advantage of the new Active Record pattern in CodeIgniter, and I'm aiming for compatibility (true, proven, tested compatibility) with at least MySQL, Postgre and SQLite.
This also represents an opportunity to revisit code that is starting to show its age. Many people are referring to Bamboo as a model for how to build an application in CodeIgniter. This delights me, and is the entire reason I released Bamboo originally, but, Bamboo was released while CodeIgniter was still very immature. There were no models; fewer helpers; limited Active Record; fewer libraries. It was also a bit of a proving grounds for what could be done. In short, Bamboo blazed the trail that all my CodeIgniter programming would be based on, but as CI has advanced, there are many (many) things in BambooInvoice that I would choose to do another way if I was building it today. I want to take the opportunity to do them right. I want Bamboo to be as finely coded as CodeIgniter itself. This as you can imagine, will be a pretty big task. In essence, I'll be writing (re-writing) the entire application. I'm tired just thinking about it, but its something I really want to do.
1.0 will also represent me dropping Scriptaculous/Prototype and nearly all of the custom javascript, in favour of jQuery, and the new javascript/jQuery libraries that I'm building into CodeIgniter. This should provide for a broader cross-platform functionality. At this time, I'll investigate a system to allow community input, almost certainly via SVN. I'm not sure what this will look like yet, but I need an easier way of tracking these things.
I also have some plans for some more "powerful" features, but I want to be careful what I publicly say here, as I've learned the hard way that talking about something and getting everyone excited, but then not immediately delivering on those generates a lot of hostility. ;)
I want to assure everyone reading this that BambooInvoice will remain free and opensource, but I do want to think about a way to more actively encourage dontations. The amount of time I've sunk into Bamboo has become something of a joke to me - the little pet project that could I guess!
So if you're a Bamboo user, get ready for a large bump in what you current can do, and take your invoicing to the next level. Is there a feature that you really want to see make it into Bamboo? Is there one little thing that bugs you? Have your say, please feel free to leave a comment.
This entry was made on April 07th, 2008 @ 6:36 and filed into BambooInvoice.

Jon wrote on April 07th, 2008 @ 8:33
Derek - I’ve been knee-deep in the Bamboo code for quite some time (I built an application of my own using Bamboo as a guideline). If you’re at all interested in some assistance, I’ll be happy to help.