Why We Never Shipped Collaboration
As a developer, you need to be a prime user of your app. If you actively use your app all the time, you understand its ins and outs best and can design the smoothest experience for all of your users.
As our company grew in the last few years, we kept running into situations where we wanted to use MindNode for specific tasks, but the app needed to be more adapted to our needs. If you’ve tried using MindNode as a team, I’m sure you have encountered the same problems. For example, it’s impossible to simultaneously work on a document stored on iCloud Drive without running into merge conflicts.
Seven years ago, we started actively thinking about adding a collaboration feature to MindNode. We explored collaboration technologies, did hack weeks to write prototypes, and began to adapt our codebase. When we started working on our new outline mode we designed it with collaboration in mind, and we have been using it to collaborate on the same document for some time now.
However, taking a prototype that is good for internal use, to shipping a great solution to customers takes time. This is especially true when it comes to a collaboration mode, which requires deep integration at all levels of the code. Other projects always took priority, and we never came close to shipping this feature.
Last year at WWDC, Apple announced several features related to collaboration that got us interested, and we started to prioritize the feature. We formed a dedicated team with the ambitious goal of shipping a beta version of collaboration in MindNode by the end of that year.
Our idea was to initially only support collaboration in the outline and build a dedicated document format for shared documents. This new document format would evolve over time and ultimately replace our existing file format. This would have had the added advantage of being able to edit documents on iCloud Drive on several devices without triggering sync conflicts.
Initially, we wanted to use iCloud Drive for sharing documents but planned to extend it to other document-sharing providers. As iCloud Drive is very slow when it comes to syncing documents, we developed a dedicated service called “MindNode Live” to support near real-time collaboration.
Screenshot: Prototype of collaboration in outline using Share Play instead of MindNode Live.
Our approach closely mimicked how iWork supports collaboration, and we didn’t expect to run into issues adopting it. Unfortunately, one crucial aspect became a massive problem for us: We found no reliable way to identify a specific document stored on iCloud Drive across devices. We require this to ensure our live collaboration solution can securely and reliably distribute changes and combine them with the correct document. This is especially important when changing participants of a shared document or when duplicating a document on the file system.
While iCloud seems to provide the required features for the iWork apps, we didn’t find a way from our side to access them. As we reviewed our options we came to the conclusion that our current approach wouldn’t work out. We sadly had to abandon our goal to ship collaboration as initially planned.
Every failure is a chance for something new. We are working on a new solution that we plan to ship in the second half of the year, but we want to share more details later this month on MindNode’s 15th birthday.