When I think of GitHub I imagine a vast network of people and code; a superorganism that changed how we make software. When I was getting into programming, starting a new project was daunting -- you had to imagine and build everything nearly from scratch. My version of code-sharing was calling my older cousin who was going to college for CS and getting code dictated to me over the phone. When the Internet arrived in my home town, it made hacking on new projects so much more fun. Starting a new project, at least initially, became about discovery:
- I would walk to the Internet cafe and Yahoo search “vb code online”
- There were a number of pseudo-GitHub sites that hosted Visual Basic projects
- I’d download projects related to what I wanted to build, burn them on a CD and head back home
- I’d run these projects, change & tinker with them, and get inspired on how to build my own
This mirrors the experience of many developers today, except, thanks to GitHub, they have many more options and a lot smoother UX. However, one thing that has remained the same: You still have to download projects you discover on GitHub and figure out how to run them just to start tinkering. While easier than walking to the Internet cafe, it’s enough friction that many people will give up.
That’s why today we’re making it easier to run repos on Repl.it. Now you can
instantly run code from a GitHub repository without the hassle of configuring a
local development environment. Simply click the import button on Repl.it or
click a run on repl.it
badge, which will be coming to README files near you.
Here’s how it works
After cloning a GitHub repo into a repl we detect the run command, and if we’re unable to do so we help the user configure a .replit file that includes the run command information. We then help the user create a Pull Request back to GitHub so that other users won’t have to search for the run command in the future.
At Repl.it we built multiple layers of abstractions in pursuit of minimum
configuration instant programming environments: Polygott: This is our base monster
docker image that we hope includes most of the native dependencies necessary
to run most projects (we’re also aiming to make this image swappable with your
own in the future) UPM is our universal package manager that
knows how to install packages in a number of different programming languages we
support. Window manager: Our novel approach to window
management allows us to reconfigure the IDE on the fly to create any number of
environments: from web apps to command line or even data science environments. Collaborative Development Protocol
(crosis): Makes it possible for us to operate Git
from the browser. It’s as simple as opening an Distributed filesystem: A snapshot-based filesystem with atomic writes is
necessary when dealing with large-scale file changes which happens when
running This is all work in progress and doesn’t give us anywhere near 100% coverage on
all GitHub repos, however, all the essential components are there and it’s a
matter of improving our infrastructure to cover more and more projects that can
be instantly run in the browser. As much as possible, we're building our infrastructure in the open, and with
participation from our community. If we don't support your favorite language or
runtime, please consider contributing to Polygott and UPM. This feature was silently earlier this week to our community, and since then we’ve seen a lot
of excitement from both our users and repo authors when they receive a
pull-request. Here are some of our favorites so far. Just go to the repo and
click “run on repl.it” to see it in action. If you’d like to add it to your repo, simply import a repo and follow the
prompts. I also wrote a quick guide here. If you have any trouble getting your repo to work, consider asking a question on our
community, or visit the #developers channel on our Discord
server.How is it possible?
exec
channel and streaming
git
commands to the server.git
.Try it out