After releasing the beta and seeing other people use Lotus for the first time, I had a fear that all the ideas I've built into Lotus just wouldn't work in the real world. Developers would still drown in notifications, struggle to keep up with issues and pull requests and continue burning out.
That fear never went away.
I started thinking what other features I could add to make Lotus a better and more powerful tool for maintainers. The results of this brainstorming were GitHub Sponsors integration, Focus Zone and separation of work and personal notifications.
Two weeks ago I told you that I would stop adding new stuff and focus on improving the existing functionality, fixing bugs and polishing the app overall.
Today I want to make a stronger commitment to release Lotus by the end of March.
Funny that I almost never give any estimates on when I will ship something, but I've reached a point where I have to commit to a certain deadline. Without it, I'll keep running in a loop by adding new features forever in a hope for a perfect launch. It won't be anyway, so why wait for an imaginary finish line when I can have a real one in front of me?
This week I wanted to get some clarity on this, so I turned to one of my favorite books of all time - Getting Real. Chapter "Fix Time and Budget, Flex Scope" is extremely relevant to where I am today.
I encourage you to read it in full, but the gist is this:
Here’s an easy way to launch on time and on budget: keep them fixed. Never throw more time or money at a problem, just scale back the scope.
Fortunately (or not), the scope of Lotus already covers much more than I had imagined it to do originally. Don't take me wrong, I like all the new ideas and I believe they will have a lot of value for some people. But this is the point where I say "stop" to increasing the scope and building more.
There’s a myth that goes like this: we can launch on time, on budget, and on scope. It almost never happens and when it does quality often suffers.
Quality is not something I'm ready to compromise on. What's the point of having a lot of features, if the whole app feels half-baked? If I want to charge money for this, it better work well and look good.
I've been focusing on polishing Lotus in the past two weeks and I can already see the positive effect it has on the entire experience.
Previously, preferences were just another page in the sidebar navigation. This is a trait of web apps, not Mac apps. I extracted preferences into its own window, which can be opened by a standard <kbd>⌘,</kbd> keyboard shortcut. Even the window itself animates its height depending on the height of the content to achieve a similar effect in native apps.
I also tweeted a step-by-step process on how I designed it from scratch.
There's also a new dark mode for GitHub embedded pages when you're viewing a notification. I override GitHub's stylesheet with custom rules to match the styling of Lotus. Now embedded github.com pages don't look so embedded now, huh? 😄
Undo / redo functionality got better as well. There was no visual indication that you undid or redid some action. Now Lotus shows a neat toast message on top.
There's also another little improvement on the page where you view the notification. When you move the cursor over "Open in Browser" button and press Option key, it will change to "Copy URL". That way you can copy the URL of an issue or a pull request to clipboard without opening it in the browser and doing it manually.
I think all these improvements I mentioned above wouldn't have happened if I hand't put the brakes on adding the new stuff. I feel great about the new direction and I'm excited to keep polishing and refining the feature set that exists today.
End of March is a little more than a month from now, which sounds like enough time to finish it or I could easily be completely wrong on this.
It's scary, but I like it.
Thank you for reading! Until next time.
I'm building Lotus in the open and I'm sending out progress updates just like this one every Sunday.
I won't send spam and you can unsubscribe anytime.