Sandstorm Apps and Grains

Understanding the difference between Apps and Grains is important to understanding how Sandstorm works.

Grains are discrete instances of apps. Each grain is a copy of an app. This allows each grain to run isolated from other copies of the app in Sandstorm. Here’s a little walk through to help you understand how they relate to each other.

Adding the app to Sandstorm

Before you can create grains, you have to add the app from the Sandstorm app market to your local instance of Sandstorm.  When you log into Sandstorm the first time, you’ll see a blank slate that looks like this:

blankslate

Not much there.

In the left hand navigation, there are 2 sections; Apps and Grains. The screenshot above is the default Apps section. If I switch to the Grains view I get a message that I don’t have any Grains installed yet.

Grains

Understanding the difference between Apps and Grains is important to understand how Sandstorm works.

In a nutshell, you install the application once on your local instance of Sandstorm. Once it is installed, you can create multiple copies of that app to use. Each of these copies is called a Grain in the Sandstorm world.

So, let’s use Etherpad as an example. I install the Etherpad app from the Sandstorm App market onto my Sandstorm server. Once that is done, every time I want to create a new unique Etherpad document, I create a new grain (copy) of Etherpad with each grain operating independent of the others.

Installing an App

The first step in making Etherpad available on Sandstorm is to install the app from the Sandstorm App Market. Think of the Sandstorm App Market like Google Play or the Apple App Store. I only have to do this step once. Once Etherpad is installed on my Sandstorm server, I can then create multiple grains of Etherpad with the click of a button.

In the Apps section, click Install from App market. This will open a new tab/browser window in the Sandstorm App Market.  Find Etherpad and click Install.

Etherpad

You’ll be taken back to Sandstorm and get a message asking you to verify that you want to install the app.

install

This is one of the most visible places where you will see the commitment to security that Sandstorm has as each app has some additional information included to help you verify that this application is legitimate. You will see a PGP key signed by the application publisher along with their verified contact information. Sandstorm provides a cryptographic chain of trust that connects the app package you’re installing to the app publisher’s online accounts. This is an assurance method that you are installing a legitimate Sandstorm application and provides a verified trail back to the person who published the app.

Click Install Etherpad and the application is installed and ready to use.

Create a Grain

Once the app is installed, you can now create your first Etherpad Grain by clicking on Create new pad.

EtherpadReadyToUse

You’ll see the Etherpad Grain now appear in your left hand navigation under Grains as Untitled Etherpad. To change the title to something more meaningful, click on the title Untitled Etherpad pad at the top of the screen.

Untitled

A popup will appear where you can change the name

MyNew

Click Ok and your Etherpad name is changed at the top of the screen and in the Grains navigation on the left.

MyNewEP

And I am ready to start working on this Etherpad. Click the Share access link at the top of the page and I can generate a link that I can send to co-collaborators and give them anonymous access to collaborate on this document, just like you can with Google Docs.

share

Go back to the apps page and you’ll see that Etherpad has now been installed on our local instance of Sandstorm.

MostUsed

If I want to create another Etherpad Grain, I don’t have to go back to the app market and reinstall the application from the start. I simply click on the Etherpad app icon and a create a new grain. Clicking on the Etherpad icon also shows me all the grains of Etherpad I currently have installed.

CreateASecond

With the app installed, I can now create dozens of discrete Etherpad apps and share them with different groups of people, each running as their own application within Sandstorm.

ManyEtherpad

Header image: Grains of Sand by Fran Tapia CC-BY-ND

 

Working with Sandstorm

I’ve been making an attempt to kick the tires more with Sandstorm in preparation of our upcoming workshop at the Festival of Learning.

MyGrains

Snapshot of my Sandstorm grain dashboard

Small pieces, loosely joined is what Sandstorm is all about. Sandstorm is the stitching that joins the small pieces, providing a common authentication and security framework to a patchwork quilt of open source applications.

So far I’ve tested out about half a dozen of the 50+ applications within the Sandstorm eco-system trying to use them in my day to day work. Etherpad (the collaborative document editor that is a scaled down version of Google Docs) and Frameadate (a handy meeting scheduler alternative to Doodle) have been the most useful. I’ve also played around with Ethercalc (spreadsheet), Quick Survey (survey tool), Hacker Slides (presentation tool that uses Markdown), OpenNode BB (forums), GitLab (Git repo), Rocket Chat (Slack alternative), and mucked around a bit with the WordPress port in Sandstorm.

My general observation is that the applications that work well within the Sandstorm environment are small, discrete and focused where you can create a single instance of the application (called a grain in the Sandstorm world). Things like a single document or meeting invitation. Tools like Etherpad, Ethercalc, Quick Polls, Hacker Slides and Frameadate are the type of applications that Sandstorm does well in that you create a document, share with others to collaborate and contribute to, and then move on.

I tend to think of these tools as being somewhat disposable. Once a discrete task is done, it’s done. The survey is finished, the meeting dates are picked, the document has been edited and completed. Get in, do your work, get out.

As you can see from my screenshot, I’ve got a lot of Etherpad instance on the go, working on collaborative documents with different users. There is no folder scheme in Sandstorm, or way to organize these multiple instances so I can imagine over time as you create more and more documents, the user interface could become quite cluttered. I’m just starting to get to the tipping point where I’d like to be able to put some structure around the different applications I have going. Maybe organizing by project I am working on and grouping all the related apps I am using with a single project in a single folder or some other visual organizational metaphor. But haven’t seen a way to do that yet.

More complicated applications seem to have more limitations. WordPress, for example, is not the full featured version of WordPress that you would get at WordPress.com or if you installed it yourself. Installing plugins and themes means uploading a zip file instead of connecting to the remote WordPress plugin repo. Publishing is static, meaning whenever you add new content you have to rebuild the site.

Rocket Chat (a nice open source Slack-like application) also has a limitation with the mobile app. Rocket Chat works quite well if you are logged into Sandstorm, but  the mobile application cannot connect through Sandstorm, which limits its usefulness.

These are not dealbreakers, but really just the things you learn while sandboxing and experimenting with new technology – seeing what the tool does well and where the limitations are.

Image: Blue Sky by leg0fenris CC-BY-NC-ND

 

BC Open Education Infrastructure

As I wrote about a few weeks ago, my role at BCcampus has undergone a bit of a focus shift back to supporting & researching educational technologies in BC with an emphasis on open source technologies. And there are some exciting things happening in BC that I am going to be a part of.

One of the projects that I have begun sinking my teeth into post-opened conference has been the work done by Grant Potter, Brian Lamb, Tannis Morgan and Valerie Irvine, the former BCNet open education working group. Once BCNet announced the end of the group, Mary Burgess and I talked about how BCcampus could provide support for the open education work this group is doing, and I’m very happy that I’ve been given some time & resources to support this group.

The main project on the go right now is (what I’ve called) the BC open education infrastructure project. This is basically the FIPPA compliant (hosted on EduCloud at UBC) Sandstorm instance that I wrote about a few weeks back. I’ve been able to get in and kick the tires a bit more and am able to see a few clear potential use cases for the technology.

In a nutshell, Sandstorm aims to make the deployment of web applications as easy as installing an app on your smartphone. One click installs of popular open source packages like EtherPad and WordPress direct from an app repository/store .

Sandstorm App Store

Screenshot of Sandstorm App Store

At a high level, here are some of the ways I think this could be useful to my work, and to the system as a whole. These are things that are driving me to work on this project.

  1. A simple way for an instructors to deploy open source applications. Instead of having to use the LMS, which may not have the tools you need or even like working with, or impose a pedagogical way of working that you don’t want, Sandstorm provides an app marketplace where instructors can pick and choose the tools they want to use with their students. Need a collaborative document editor? Hit a button and you’ve got an Etherpad instance set up. Need an instance of Git?  Discussion forums? Pick from a few different alternatives, install and share with students. And all the data stays on a locally hosted server under local control. No corporate data mining of students information. Unbundling the LMS.
  2. A system wide sandbox platform. This is my own use case, as one of the projects in my portfolio will be to revive a system wide sandbox process to allow people to experiment with open source edu focused applications. A BCcampus instance of Sandstorm might make it easier to manage that process.
  3. A way to distribute education related open source applications. I’ve been thinking of ways to get Pressbooks Textbooks into the hands of more people, and making a one button install of Pressbooks in something like Sandbox seems like a doable project. Get an instance of Pressbooks into the Sandstorm app store has the potential to get it in front of more eyes and deployed. There are other open source tools that are edu focused that I think could be included, like Candela, TAO, Open Embeddable Assessments, Omeka, and Scalar (to name just a few). I envision an edu section of the Sandstorm app store. It’s premature to be thinking this way, considering the relative newness of Sandstorm, but, this is why we experiment and play.
  4. A powerful tool for students to work with the tools that they want to work with. Give a class a Sandstorm instance and let them decide how they want to collaborate, communicate and work together using the apps in the toolbox.

This work is obviously heavily influenced by Jim Groom & Tim Owens Domain of Ones Own which is, at its heart, about autonomy and control; about giving people the ability to control their own data and their own digital identity. It is also about recognizing that technology is not neutral, and that the systems we set up within our institutions (looking at you LMS) impose a way of doing things that may not be the way that our faculty want to teach. We should, at the very least, try to provide systems that support technology enhanced pedagogical models outside of the narrow confines of the LMS.

But what really excites me about this project is the chance to work with some of the most forward thinking edtech people in the province. And that is putting a big spring in my step.

 

An open edtech playground infrastructure (or the magic of Grant Potter)

experiment

Grant Potter and Brian Lamb have been cooking up some open edtech goodness.

Earlier this week, Grant sent me a tweet with a link to a project that he and Brian have been working on, and it is exactly in line with my musings lately around an open web edtech infrastructure.

What Grant and Brian have done is take a whack of current open web infrastructure platforms and launched an open edtech web playground for BC edtechies to try out.

In the backend there is the UBC hosted higher ed virtualized cloud services EduCloud, a fully FIPPA compliant cloud hosting service. On top of this, Docker containers running Sandstorm, a web application platform that has, as a primary goal, making the deployment of web applications as easy as installing an app on a smart phone. One click and you have a fully functioning web application, like Etherpad or WordPress.

While this development stack is mighty impressive in that it represents a very modern web workflow, it is Sandstorm that holds real interest to me because it allows you to build customized web apps that can be deployed with the click of a button. This is incredibly powerful as it allows you to define the defaults of programs that you want to deploy, and controlling the defaults often means controlling how a user interacts with an application. This is powerful.

Say, for example, that you wanted to make a number of different WordPress installations available to your faculty, each with a separate set of defaults, plugins or themes enabled by default. Theoretically, you could create a Sandstorm SPK file (via Vagrant) for the different versions of WordPress you wanted to make available to your users and let them decide which version they wanted to install. Want the standard blog platform? Here is the WordPress button. Want Pressbooks? Here is the Pressbooks button. All deployable with the click of a button.

Well, that is my working theory of how this works right now. How it works when I actually dig deeper into the system may vary from this high level conceptualization. But if this stack works like I think it works, this will make an excellent platform for the simple deployment of customized web applications where the default is set to “education”.

We really need to come up with a proper way to recognize the technical wizardry of Grant Potter. Maybe a medal?

The Award Winning Grant Potter