Ghost of blog posts past

Company

Last year I posted about potential future features in FastMail, and the magic outbox handling support that I had just added to Cyrus. In the spirit of copying last year, I'm doing a Dec 25th post again (with a bit more planning).

During this year's advent I've had more support than previous years, which is great! I didn't have to write as much. One day we might run out of things to say, but today is not that day.

Last year's post definitely shows the risks of making future predictions out loud, because for various reasons we spent a lot of time on other things this year, and didn't get the snooze/"delayed send"/"tell me if no reply" features done.

But the underlying concepts didn't go to waste. We're using magic replication of a hidden folder the "#jmap' for blob uploads now, and we're indexing every single body part by sha1 allowing us to quickly find any blob, from any message, anywhere in a user's entire mailstore.

One day, this could help us to efficiently de-duplicate big attachments and save disk space for users who get the message mailed backwards and forwards a lot.

And features that fall under the general category of "scheduled future actions on messages and conversations" are still very much on our roadmap.

Looking ahead

When we developed our values statement a couple of weeks ago, we spent a lot of time talking about our plans for the next few years, and indeed our plans for the next few months as well!

We also distilled a mission statement: FastMail is the world's best independent email service for humans (explicitly not transactional/analytics/marketing emails), providing a pleasant and easy-to-use interface on top of a rock solid backend. Our other product lines, Pobox (email for life) and Listbox (simple mass email) complement our offering, and next year you'll see another product that builds on the expertise of both teams.

Upgrading the remaining server-side generated screens into the main app is on the cards, and converting all our APIs to the JMAP datamodel. Once we're happy with APIs that we can support long term, we'll be publishing guides to allow third parties to build great things on top of our platform.

And of course we'll continue to react to the changing world that we live in, with a particular focus on making sure all our features work, and work well, on interfaces of all sizes. Our commitment to standards and interoperability is undiminished. We've joined M3AAWG and will be attending our first of their conferences next year, as well as continuing to contribute to CalConnect and getting involved with the IETF. Some of our staff are speaking at Linux Conf Australia in January, see us there!

New digs

We've spent a lot of the past couple of weeks looking at new office space. We're outgrowing our current offices, and since our lease expires next year, it's time to upgrade. We particularly need space because we'll be investing heavily in staffing next year, with a full time designer joining us here in Melbourne. We're also planning to keep improving our support coverage, and adding developers to allow us to have more parallel teams working on different things.

I totally plan to make sure I get the best seat in the house when office allocation comes around!

Technical debt

We moved a lot slower on some things than we had hoped in the past year. The underlying reason is the complexity that grows in a codebase that's been evolving over more than 15 years. Next year we will be taking stock, simplifying sections of that code and automating many of the things we're doing manually right now.

There's always a balance here, and my theory for automating tasks goes something like:

  1. do it once (or multiple times) to make sure you understand the problem
  2. do it a another time, tracking the exact steps that were taken and things that were checked to make sure it was working properly
  3. write the automation logic and run it by hand, watching each step carefully to make sure it's going what you want - as many times as necessary to be comfortable that it's all correct
  4. turn on automation and relax!

For my own part, the Calendar code is where I'm going to spend the bulk of my cleanup work, there are some really clunky bits in there. And I'm sure everyone else has their own area they are embarrassed by. Taking the time to do cleanup weeks where we have all promised not to work on any new features will help us in the long run, it's like a human sleeping and allowing the brain to reset.

What's exciting next year?

Me, I'm most excited about zeroskip, structured db and making Cyrus easier to manage, and I've asked a few other staff to tell me what excites them about 2017:

"Replacing our incoming SMTP and spam checking pipeline with a simpler and easier to extend system." — Rob M

"Can't wait to hang out at LCA (see you there?) where I'm doing my (first ever talk), and meet customers present (and future)! (all of the brackets)" — Nicola

"Making more tools and monitoring and other internal magic so everyone can get stuff done faster without worrying about breaking anything." — Rob N

"The continued exchange of ideas and software between FastMail and Pobox. I think that 2017 will be the year when a lot of our ongoing sharing will begin to bear fruit, and it's going to be fantastic" — Rik

"Focusing on Abuse and Deliverability — making sure your mail gets delivered, and keeping nasties out of your Inbox" — Marc

"Getting our new project in front of customers — it brings the best parts of Listbox's group email infrastructure together with FastMail's interface expertise. It's going to be awesome!" — Helen