1.1.0 Is Out! What the Hell Took So Long?
After several months, we released Mockery 1.1.0 last night. There are a lot of big changes:
- New and much improved rich text widget (based on TinyMCE)
- Awesome new data grid editor/builder
- Improved look and feel
- Much better stability, particularly on Macs and with large documents
You’ll find lots of other fixes and tweaks; it’s our biggest update yet. But you may wonder why it took nearly 5 months. Well, for me the central character in the story is Not Invented Here Syndrome.
Now, you’re probably all familiar with this nefarious malady that we developers suffer. In case any of you aren’t, it’s a term to describe reluctance to use technologies that were not developed in-house. There are a lot of justifications for it, and it doesn’t always cause problems, but what is important to consider is that if it bites you, it’s probably going to bite you twice.
What does that mean? Take the example of Mockery’s rich text editor control. When we started Mockery, we built what we thought was a robust and powerful editor. Why didn’t we use a free, open source, off-the-shelf solution? Well, the options we had were mostly web-based, and Mockery isn’t really a web app, and we were sure we could do a better job…and so on. At least part of the reasoning was (I’m sure) that it would be fun to write a WYSIWYG.
It was, and it wasn’t. But that doesn’t matter, because either way it was a lot of work. So we stuck it out, but eventually it became clear that we did not have the focus, resources, or motivation to compete with TinyMCE. The only answer that made sense was to bite the bullet and just use it. No big deal, right? We’ll just throw our stuff out and integrate the new stuff, no problem, right?
Unfortunately, we’d already painted ourselves into a bit of a corner with our own tool. It had features that no off-the-shelf system had, had a different input and output model, fired different events, accepted different commands…incorporating a 3rd party tool into an existing app is not an easy task.
The moral of the story is this: think very seriously about what you’re doing before you set about reimplementing anything non-trivial. You’re not just risking the time it takes to re-write what someone else already wrote; you’re risking the time it will then take you to integrate what you should have used in the first place.
I know I’ll be heeding this advice, and I know Mockery will be much better for it.