LicenseKeeper, where art thou?
I announced the start of development for LicenseKeeper in October of last year. It’s been six months and I haven’t talked about it since.
I guess I made the classic mistake of announcing a product too early. Sometimes, the hard lessons must be learned through experience.
Development has been progressing since the original announcement, albeit very slowly. Several things have affected forward momentum.
No other thing has slowed development more than trying to learn Cocoa at the same time.
Cocoa is incredibly powerful and provides tons of functionality right out of the box. I was able to get a working prototype of LicenseKeeper completed in a very short time. CoreData and Bindings provide powerful features for building a simple database application very quickly with little or no code.
But with all the power and functionality comes a pretty steep learning curve. Every single feature or bit of functionality that I’ve added to LicenseKeeper has included a ton of reading, researching, and experimentation before getting something to work.
While Cocoa’s greatest strength is its power and built-in functionality, its biggest weakness is its complexity and lack of available, easy to understand example code.
My biggest failing is expecting Cocoa to implement UI elements and features like .NET or MFC on Windows.
Trying to develop more than one product at the same time is hard. Kudos to those developers that are able to produce, maintain, and support more than one product.
Eating My Own Dogfood
I’ve been using LicenseKeeper to store all my shareware registration information, serial numbers, and license keys for the past few months. This seems to be a good way of determining what goes in to a product. I have a huge list of possible features, but actually using the product helps focus the product’s feature list as well as help fine tune the user interface.
The interface has undergone drastic changes over this time as has the object model. While this has delayed the release of the first version of LicenseKeeper, I genuinely feel that it will be a better product for going through this process.
The UI has been simplified and continues to change. The object model has grown and shrunk several times, but seems to be stabilizing. I’m now starting to think about icons and have begun researching options for sales processing.
I’ve learned my lesson, I’m not promising a release date nor even making a guess of when it may be. But, since the update to Bullfrog has been released, LicenseKeeper is now first priority on my project list.