Scenario: You’ve created a new tool/language/framework and want to get it shared – either online, to the highest number of people possible, or in a live demo and workshop. You need people to start working with it and learning as fast as possible, and to spend as little time as possible getting it set up.
One of the biggest challenges when creating a new development tool is precisely getting it into the hands of users. Chances are your target audience will have to setup the necessary environment and dependencies.
Languages like Golang and NodeJS, and Ruby offer simplified installers, and in the case of Golang and Ruby, in-browser code testing sandboxes that allow for getting a taste of the languages and possibly following through a tutorial online.
But to get a real sense for the tool, they need it on their machines. So, you either sacrifice the flexibility of working locally, or the immediacy of starting to code ASAP. That is, unless you take the hassle out of setting up an environment all together – that’s where Sandbox comes in.
With Sandbox, batteries are included
Let’s try a Ruby application. No, you don’t need to have Ruby installed, it will run inside a container. No you don’t need Docker installed, it comes with Sandbox, which includes everything you need to get going, right there in the Git repo. Automatically, no hassle.
Go ahead and clone this ruby sample repo. Simply run:
git clone https://github.com/stackfoundation/sbox-ruby cd sbox-ruby ./sbox run server
And your app is running! Run
./sbox status to find out the IP Sandbox is running at, and your app will be at
[Sandbox IP]:31001 ! This app will update as you change the code in /src, so feel free to experiment with it.
What just happened?
The magic was made by the Sandbox binaries included in the Git repo. They are tiny – less than 200k – but they install everything needed to run Docker and Kubernetes. A workflow file determines what should run where, which includes caching installation procedures, and all things needed for live reloading changing files, in easy to read YAML:
steps: - run: name: Install dependencies image: 'ruby:2.4.2-alpine' cache: true source: include: - Gemfile script: |- gem install foreman gem install bundler cd app bundle install - service : name: Run Application step: Install dependencies script: |- foreman start -d /app source: exclude: - Gemfile - Gemfile.lock - src volumes: - mountPath: /app/src hostPath: ./src ports: - container: 5000 external: 31001
You can read more about how Sandbox does this here.
As a user, you don’t need to go through the hassle of installing a tool to know if it’s right for you – it just works. Also, as the workflow files are very clear and simple to read, they can get a sense of what needed to happen to make the application run, just by glancing at them.
As a developer, your tool can be that easy to share, and that easy to get running on someone else’s machine, with no issues and very little time spent. That means more time and user patience left to try out your creation, and a lower barrier of entry overall!