For some time I’ve not been entirely happy with ThinkTwit upgrades – development on ThinkTwit started initially as an internal project for a past employer (Think Consulting Solutions). We had been wanting to contribute to Open Source for some time and this seemed like the perfect solution to both problems: Open Source the code I have written.
When I then left my employer, knowing that there was no development capacity left within the business, I decided to continue maintaining ThinkTwit. From then on I have just been adding new features as I thought of them or as they were requested, as and when I had time. As this was just an aside hobby and I didn’t have much time to contribute a lot of the development was rushed (though as professional as possible in the time constraints) and so upgrades have not been as smooth as I had wished. This has been highlighted by two recent bug reports that I have had (which, though I appreciated the feedback, did not impress me – I felt I had let people down).
After a little bit of searching last night I found an article on the “Top 10 Characteristics of a WordPress Plugin” and it got me thinking a bit about how I can improve ThinkTwit, especially around upgrades. So what I’ll be shortly adding:
- A method of keeping track of all database options to allow for safe removal and updating of all database options
- A method of backing up old options (to allow rollback), adding new options when necessary and transforming options where they are changed during upgrades
- Deprecation of old methods for one version, including keeping the original as a deprecated method when a method is renamed or has additions to it (if not possible to alter the method without causing impact)
- Automated uninstall on request (rather than manual uninstall as is currently offered)
- Better error handling – currently there is an unsightly error thrown when Twitter is blocking excessive requests (this will be fixed separately) – such errors need to be handled better
- Reset options function
I will make these additions the priority to ensure that all future upgrades are more seamless to our users. This will mean a further delay if you are awaiting features already in the roadmap but it will be well worth the wait. Additionally, I’m in discussion with a ThinkTwit user about him becoming a contributor to the project so hopefully we’ll be able to work through the roadmap at a quicker pace.
Finally, one thing I’ve noticed is that there is little documentation on how to design and develop good seamlessly upgraded plugins so once I’ve complete these updates I will try to write an article on here describing on how to achieve this.
As always, if you have any feedback or requests for ThinkTwit please let me know.