When building a development platform, the temptation to build as many things on top of it as possible is great. After all, if the platform is really working, anything built on top of it should work a whole lot better than something that is not. One should resist this temptation though, for its underlying assumption is usually wrong.
Let’s take the example of Sutoiku Activities. It is made of three objects (Event, Project, and Task), but only one is implemented as a native Sutoiku objects (Project). The other two (Event and Task) are syndicated from Google Apps (using the Google Calendar Services and Google Task Service). The reason for it is pretty simple: we don’t stand a chance of convincing anyone to move from Google Calendar to an hypothetical Sutoiku Calendar, no matter how hard we might try. The same is true for Gmail, Google Drive, and many other Google Apps components that we’re in the process of integrating with.
From a strategic standpoint, our approach is to leverage whatever already exists out there and is good enough, and focus all our efforts on building the missing pieces and integrating them within their surrounding environment. For example, a Google Task can reference a Sutoiku Project through a 1-N relationship. And from the viewpoint of a Sutoiku developer, a Google Task actually looks very much like a Sutoiku Task (Cf. Object Data Mapper).
For our first product release, we initially focused on Google Apps as default underlying platform. If you’ve been following this blog closely since the very beginning, this is the not-so-well-kept secret that we’ve been keeping all along. Down the road, we might support additional platforms (Microsoft Windows + Office comes to mind), but for the time being, Google Apps defines the surrounding environment describe above. Here is how we’re using it:
- GMail as universal inbox
- Google Spreadsheet for the object view (list of records), and many other cool things
- Google AngularJS for the record view, the query builder, and other UI components
- Google Contacts for Contacts
- Google Groups for Groups and Roles
- Google Calendar Services for Events
- Google Task Service for Tasks and Task Lists
- Google Docs as Content Management System
- Google Drive as Document Management System
- Google Apps Control Panel as administration panel
- Google Domain as domain manager
- Google Chrome Web Store as marketplace
If we do our job well, users should not see much of Sutoiku, if anything at all. Instead, they should feel like they’re using a better, more powerful version of Google Apps — Google Apps on steroids. And as Google adds new services to Google Apps, we will integrate with the most relevant of them, constantly improving the overall end user experience.
Now that the cat is out of the bag, we better deliver something soon…