It’s difficult to decide exactly when to increment a major version number. In truth, My Calendar 2.0 is not much more different from 1.11.x than 1.11.x was from 1.10.x; but the difference between version 1.0 and 2.0 is truly striking. In fact, there may not be more than a few dozen lines of code in common between the two versions.

The main purpose behind the rewriting involved in My Calendar 2.0 was about long-term performance. All versions in the 1.x series had a common problem: while saving and editing events was a very simple database query, fetching events from the database was kind of crazy. Anybody who looks at input/output efficiency will tell you that it’s more efficient to read from a database than to write to a database. So, superficially, having a simple database input is efficient. But the trade off was some very complicated data manipulation that needed to happen in order to calculate the date for every single event rendered. Not a big deal when you’ve got a handful of events; but if you’ve got hundreds of events in a month it could become a pretty crushing load. This was the lot of using recurring events.

So now the queries to fetch events have been greatly simplified. Saving new events is less efficient, yes – it will take longer to write events because those recurring events are now being calculated when they’re saved, so that those calculations never need to be done on the front end.

Now, this meant rewriting everything that displayed or fetched events – iCal, RSS (Really Simple Syndication), calendar output, upcoming events lists — everything. It also meant rewriting everything that saved or edited events. So I’m not entirely expecting this new release to be bug free — rewriting everything took a long time (nearly 3 months), with an additional month dedicated to testing and bug fixes. It’s only been 18 hours since I released 2.0.0, and version 2.0.1 – with three bug fixes – is already out.

I’m dedicated to getting this version at 100% as fast as possible, however. If you encounter a bug, let me know about it promptly, and I’ll get right on it!

Enough with the techy talk. What else is new?

My Calendar 2.0 includes a whole slew of improved views and filtering tools for the events manager lists. You can now define categories as “Private”, so that only logged-in users will see them. You can limit your calendar output by author. There’s a new template tag, “{timerange}”, which does pretty much what you’d expect. A wide variety of outstanding bugs were fixed. That’s about it. Most importantly, My Calendar 2.0 sets the stage for new development in many directions.

Like what? What’s coming up?

The first big new thing is already here — the first My Calendar PRO extension. This is the first in what will be a suite of add-ons for My Calendar which provide additional functionality. This one, My Calendar: Submissions, gives you a method to let your visitors and members submit events. They can submit them for free or they can buy a key which can be used for submitting events. Read more about My Calendar: Submissions!