This site is historical, from when Sandstorm was a startup. Sandstorm the open source project has moved to sandstorm.org. More info »

Sandstorm Blog

draw.io: Advanced Diagram Editor on Sandstorm

By Kenton Varda - 03 Feb 2015

Today we are releasing draw.io, an advanced diagramming editor developed by the folks at JGraph. You can install it on your Sandstorm server from the app list. Or, try it on our demo server now »

As you may recall, draw.io was one of the “Corporate Sponsors” of our Indiegogo campaign, chipping in $4096. Now, they’ve given us an app.

I’m excited about this for three reasons:

First, draw.io is an app I really want to use. I often need to create system design diagrams or UI mockups, and in the past I’ve struggled to find a good tool for these jobs. Local apps are a pain to manage (hard to share, need to make backups, etc.) but the cloud offerings I’ve used in the past were mostly unsophisticated (like Google Drive’s) or required keeping my data on the servers of a company I knew nothing about. With draw.io on Sandstorm, I know where my data lives, I can share it securely, I know the app cannot disappear on me, and I know the app is not secretly mining my data. And as far as functionality goes, it’s more powerful than anything else I’ve used.

Second, draw.io’s Sandstorm port uses the Sandstorm APIs natively, and that makes it start faster and use far fewer resources than other apps. Although Sandstorm apps are web-based, Sandstorm does not actually speak HTTP directly to apps. Instead, it converts incoming requests into Cap’n Proto requests according to the WebSession API. This brings significant security benefits. However, most apps are built on existing HTTP frameworks, and therefore most Sandstorm apps use sandstorm-http-bridge, a small program that runs inside the sandbox and converts incoming WebSession calls back into loopback HTTP requests. This allows these apps to run in Sandstorm with minimal code changes, but it’s a bit inefficient.

draw.io on Sandstorm does not use sandstorm-http-bridge; instead, it implements the Cap’n Proto interfaces directly, avoiding a step. Moreover, this makes the code much simpler – draw.io does not need to include an HTTP server framework at all. The whole server is actually implemented in one C++ file, based closely on our Raw API Sample App. As a C++ program, draw.io’s server also uses only a couple megabytes of RAM, whereas most apps written in dynamic languages use on the order of 100MB – this means that on our upcoming managed hosting service, draw.io will use almost no compute units.

Third, draw.io is our third app whose Sandstorm port is maintained directly by the upstream authors, joining LibreBoard and EtherCalc. Ports maintained by upstream authors tend to be higher-quality and get more timely updates, since it’s tough for us to closely track our 20+ app ports while working on Sandstorm itself. (Speaking of which, this week is App Update Week: we’ll be refreshing most of our app ports to their latest versions. Today we published updates to GitLab, GitWeb, MediaWiki, Groove Basin, and Telescope. We’ll talk more about this in another blog post later this week.)

It’s worth noting that draw.io is our first proprietary app. It’s “free as in beer”, but the code is not open. For many people, as long as they have control of the server, whatever gets the job done is fine. But, we know some of you would prefer to use only Free / Open Source Software. To that end, we’ve implemented a new filtering feature on our app list which allows you to choose to see only open source apps.

Wiki permissions and community docs

By Asheesh Laroia - 22 Jan 2015

The Sandstorm wiki is now world-writable, and I made a new page to help people get involved.

I realized the wiki should be world-writable when phildini remarked on IRC that the porting guide could give better advice for Mac OS users. What I really wanted to do was ask him to update the page himself, but I discovered I would first need to grant him access. So I made it writable by anyone logged into GitHub, and I configured a script to email a mailing list whenever it gets changed. Within forty-eight hours, I saw a new person contribute to the wiki!

The wiki is one of the things I mention on the new Get Involved page. In writing it, I took a lot of inspiration from Meteor’s – it’s a particularly great one. My goals are to showcase all the ways to contribute to Sandstorm across diverse skill sets and to have a contextualized listing of all the places that project members communicate. I’m excited to watch the community build great things on Sandstorm, and extraordinarily grateful to people who share the platform with friends. I think the most important thing Sandstorm needs right now is more people knowing about the project.

So please give it a read and get involved!

Gitweb and Gitlab

By David Renshaw - 21 Jan 2015

When I write software, Git is usually at the core of my workflow. Therefore I’m particularly excited to announce today that we are releasing not one but two Git apps for Sandstorm.

With either of these apps, you can host a Git repository on a Sandstorm server, connect to it with a Git client, and browse it through a web interface. Furthermore, both apps make it easy to share access to a repository without any need to manage SSH keys.

The first app is a simple wrapper around GitWeb, the minimalist Perl CGI script that comes bundled with Git.

Gitweb

The second is a port of GitLab, a sophisticated Ruby on Rails app whose features include an issue tracker, a wiki, and an editor that allows you to compose and submit commits entirely from a web interface.

Gitlab

Both apps can now be found on the Sandstorm app list. If you don’t have your own server already, try the demo.

The Rise of Modular Frontends

These two apps bring into focus some distinguishing characteristics of the Sandstorm platform.

Web software today tends to consist of monolithic, centralized services – at least when viewed from a user’s perspective. As the number of users grow, the demand for scalability and easy deployability can drive developers to put a lot of effort into modularizing backends. So the software often gets split into reconfigurable components like databases, caches, webservers, and message queues, and we see lots of clever ways to organize and orchestrate all of these things. However, as far as the user can tell, the only benefit is that, well, the service still works.

Sandstorm enables a more fundamental kind of modularization. Because it is decentralized and carefully designed to take full advantage of Cap’n Proto’s object-capabilities, Sandstorm allows web software to be split into fine-grained components along user-facing concerns. The components can be so finely grained, in fact, that scalability ceases to be a major concern. When each app instance (a “grain” in Sandstorm jargon) contains only a single document, app developers can instead focus on user-facing functionality, and can start thinking seriously about cooperation between apps.

And that’s why we’ve set up the GitWeb and GitLab apps to provide only a single repository per grain. This setup means that sharing a Git repository with another user through these apps works just like sharing anything else in Sandstorm. Although it does imply that some GitLab features, like forks and merge requests, are not supported within our port, it also means that once we’ve fully implemented Sandstorm’s Powerbox interface for sharing capabilities between grains, “fork” and “merge request” can be actions that are allowed to take place between instances of any Git app.

Sandstorm raises $1.3M seed; paying forward crowdfunds

By Kenton Varda - 15 Jan 2015

Lately, some of you may have noticed that Sandstorm’s daily meeting notes have often contained the ill-defined bullet point “business crap”. Today we’re finally able to share what that meant: we have secured $1.3M in seed funding from a great group of venture capitalists and angel investors, led by Quest Venture Partners.

When we decided to raise VC money, we insisted on doing it in a way that keeps us aligned with our original grassroots goals. We needed a business plan that allowed us to make money by protecting our users’ privacy, not by violating it. We’re happy to say that we found one.

As it turns out, every problem individuals have with increasing centralization of “the cloud”, businesses have ten-fold. Businesses, too, worry about things like privacy, security, being able to customize their software to their needs, and being able to smoothly integrate software from multiple vendors. In fact, businesses worry about these things far more than the average user. As a result, many businesses – especially the largest enterprises – maintain massive in-house compute infrastructure, at heavy cost. Securing this infrastructure has proven difficult, as attacks on Target, Sony Pictures, and so many other large companies have proven. We and our investors believe that the technology we are building in Sandstorm can solve these problems – and any time you solve a problem for big businesses, money is not far away.

We like this objective because it keeps us totally aligned with our users. In fact, we are now arguably more aligned with the community than before. Whereas previously there had been a lot of pressure on us to focus on our subscription-based managed hosting option as a way to get revenue, our immediate goal now is just to develop and prove the platform. That means that self-hosted users are just as important to us as paying subscribers. To that end, the first thing we have done with our new money is to hire Asheesh Laroia, a long-time self-hosting and Free Software enthusiast, whose main focus will be improving Sandstorm’s self-hosting experience. To be clear, everything you need to run your own Sandstorm server will always be free and open source, still developed in the open.

To fund Sandstorm’s development, we will be also starting a separate project – codenamed “Blackrock” – aimed specifically at building tools to maintain large Sandstorm clusters integrated with common enterprise-oriented infrastructure (such as Active Directory). Some of this may not be open source, but if it turns out that a feature of Blackrock is of interest to the community at large, we will look to move that code into Sandstorm proper. I personally hate the idea that some of my code may not be open – I have been releasing all of my personal code under open source licenses since high school – but I am happy that it means we can fund heavy development of the open source Sandstorm platform, without the need for advertising or data mining.

Paying it Forward: Indiegogo Backers

Back in August, the community gave us $58,929 to make Sandstorm happen. We could not have gotten to this point without the help of our Indiegogo backers, and we are deeply grateful for your support both during the campaign and since. You helped us prove that a decentralized internet is something people want. Now that we’ve raised VC money, we want to pay forward your investment in us.

First, all of our Indiegogo perks will of course be honored. T-shirts and stickers have been sent out already (if you didn’t get yours, please let us know), the App Committee has been actively meeting, and our managed hosting option will open later this year.

We would also like our backers’ help in growing a marketplace that makes open source web applications viable. With this new funding, we are able to build a marketplace in which open source Sandstorm apps will be sold on a “pay what you want” basis, with all proceeds going to the developer. To honor our backers, we will be providing credit in our marketplace equal to backers’ contribution on Indiegogo. Use this credit to fund any open source web application that matters to you. Yes, you can choose your own project – even if it contains only one line of code – but we hope you’ll spread the love and choose a project that is advancing the decentralized web.

Stretch Goals

With our new funding, we will be able to implement all of the “stretch goals” listed in our Indiegogo campaign. We don’t have a timeline for these yet, but they are coming! Here they are, for those that don’t remember:

Pre-order Managed Hosting

While Sandstorm is getting easier to run on your own Linux machine, many people don’t want the hassle of maintaining a physical server. Thus, we are planning to provide subscription-based managed hosting option as well.

For those who missed the Indiegogo campaign, we are now accepting pre-orders for this service. Pre-ordering now will get you free access to our beta (when it is ready); you will not actually be charged until the beta is over.

Get Involved

We regularly post internal meeting notes and answer questions on the sandstorm-dev mailing list, and we are usually available to chat on IRC (#sandstorm on freenode). Feel free to come talk to us in either place!

Want to write a Sandstorm app, or port an existing app to Sandstorm? Check out the Porting Guide and drop us a line in sandstorm-dev if you get stuck.

FAQ

Who controls Sandstorm?

Sandstorm and Cap’n Proto are properties of Sandstorm Development Group, Inc., a company founded by Kenton Varda and Jade Wang. Kenton is the CEO. Jade is the President. The Board of Directors is Kenton and Jade. The company is majority-owned by Kenton and Jade, with room for additional financing rounds without losing that majority.

When will managed hosting be available?

Software project time estimates are always autorectumatic, but we anticipate the beta will open in Summer of this year. Once the service is stable, secure, and backed up, it will come out of beta and we will start charging for it. To get a spot in the beta, pre-order now (we won’t actually charge you until after the beta is over).

Thank You

Pre-orders now available for Sandstorm managed hosting

By Jade Q Wang - 14 Jan 2015

I’m excited to announce that starting today, pre-orders for Sandstorm managed hosting are now open.

Pre-order Managed Hosting »

All pre-order customers will enjoy free access to the beta once it’s ready, and beta invites will be distributed first-come-first-serve as capacity ramps up. Backers who pre-ordered Sandstorm hosting on Indiegogo will get beta access first, followed by the new pre-orders. Oh, and I’ll also send you some sand cat stickers in thanks!


Sand cat stickers by Néna Nguyễn

Of course, you don’t need to use our managed hosting. You can always run Sandstorm on your own Linux box, using only open source code. We provide managed hosting so that those who don’t know how to run their own server – or just don’t have the time – have a way to run Sandstorm.

Whether or not you have any questions or feedback, come hang out with everybody in #sandstorm on freenode IRC!

Missed out on other perks during the Indiegogo campaign? Come get a shirt and some stickers at an upcoming meetup!

Upcoming Meetups