3 ms·
TL;DR good start, I just don't think it's enough in practice. We thought about this too, it's a really, really commonly asked question when the company size in
by davidjgraph 13y ago
TL;DR good start, I just don't think it's enough in practice.
We thought about this too, it's a really, really commonly asked question when the company size involved > 10.
We think the process a user would go through after the service was no longer, as:
1) It needs to run in the immediate and medium-term future with minimal effort from the user. Open source isn't much use, you've an entire codebase/architecture to learn. "Open source" is a red herring, it just need to allow the user to user and edit it.
2) Without maintenance, the product will rot (new browsers, etc). You need an easy way to keep users running for 6-12 months, but assume they'll migrate to something else after a year.
3) The key problem is how to migrate users' data to a new system that they don't want to spend ages setting up.
The app is https://www.draw.io https://www.draw.io. We've two non-static parts, the save/load and the image export. (The data I'll come to later)
First thing we did is enable the gh-pages branch on the repository - http://jgraph.github.io/draw.io/war/ http://jgraph.github.io/draw.io/war/. On modern browsers with FileAPI support, the load can be done locally, so that works. The only way to save locally without a server round-trip, that we found, was downloadify, which unfortunately is flash - https://github.com/raldenhoven/downloadify https://github.com/raldenhoven/downloadify. We add a parameter to the URL to enable that - http://jgraph.github.io/draw.io/war/?flash=1 http://jgraph.github.io/draw.io/war/?flash=1 and you now have local save/load without the need for a back-end.
For the image export, we're thinking about possible solutions. My favourite is something like a Docker image that does the image/PDF export as a stand-alone server, but is lighter weight than a full VM. You could extend this concept to include all of the back-end processing your app does, and create the image automatically as part of the build process.
But also there's a print preview function. You can print that locally to PDF, etc.
For the data, we specifically selected bring your own storage for this reason. You can either persist locally, using localStorage, using Google Drive or Dropbox (https://db.draw.io https://db.draw.io). The reason for this decision was very much around this topic, users should own their own data and it shouldn't be tied to the lifespan of a service.
OK, maybe that isn't practical for some SaaS', but even if the data were in some DB, you could make life easier for users in the event of shut-down. You could have an AWS image built as part of the build process and anyone can run up. This replicates your DB environment (and if your DB is on AWS, frankly this should be part of the build process anyway). You give them the means to simply move the data over when required and now you have the static app part, the dynamic part and the storage.
The last part is the hardest, this is why BYOS is a _really_ user centric thing to do.
Two other important side-effects of doing this:
1) The github gh-pages gives us a second, independent serving of the app. There was a DNS problem with .io domains in the summer, some people couldn't resolve us. We could say go here in the meantime.
2) By creating something that doesn't need anything more than a static web server, you create an environment where the user's data doesn't have to leave their computer, which seems to be popular for some reason...
Oh, and we're not going anywhere, it just doesn't hurt to show users you think about this stuff.
- timothy89 13y agoGreat feedback! Of course it wouldn't be totally friction-less. But as we see it it would be very easy in contrast of writing the user management all by your own. And regarding updates etc. - that is something they would have had to to with their own systems as well (considered they had written their own user management). As I mentioned in a couple of other replies, IF this were to happen we would of course make it very easy for our customers to continue on by giving them instructions, documentation and nicely packaged as an AWS instance (or other formats). This might not suit all SaaS's and would mostly be useful for SaaS that are developer focused (as we are). However, appreceate your feedback :)
- erikpukinskis 13y agoEvery customer doesn't have to do the work to re-host the service, it only takes one. Promising to share the source means you just need one enterprising individual to do all the work you described. For them they get for free a validated business idea, a set of highly interested potential customers, and 90% of the engineering work done. Now you might say the business is the opposite of validated if it closes up shop, but the opportunity is for someone to reopen it in a "lower energy state". The original startup has a large staff and presumably some ambitious growth plan. The new startup can have a smaller staff, more realistic ambitions, and the benefit of hindsight.