Mon, Mar 1, 2021Replit Teams for Education is Leaving Beta!
*Edit: As of March 2022, Teams for Education is free for all educators. You can gain access here. At Replit we believe that computers give people superpowers. With computers, anyone who's willing to learn can spend more of their time on creative invention rather than tedious drudgery. They help us automate repetitive tasks and build on the collective knowledge of all the great thinkers, inventors, artists, and teachers who came before us. Computer science teachers around the world are bestowing these superpowers upon the next generation of creators and builders. We built Replit Teams for Education for them, and today we're officially taking Teams for Education out of beta. Sign up for a free trial if you haven't already!* Thank you teachers for beta testing Teams, for giving us invaluable product feedback, for helping one another out as part of a vibrant and diverse community of Replers, and for being a part of the history of computers.
Thu, Feb 25, 2021HTTPS by default
The easiest, fastest way to put a server on the internet should also come with secure defaults. That's why we're excited to announce that Replit is now HTTPS-first, which brings additional privacy, integrity, and security benefits to servers hosted on our platform. This applies to every HTTP server repl on Replit. HTTPS-first Our hosting infrastructure makes it easy for anyone to instantly have a secure, HTTPS-secured server by default without having to lift a finger. Any repl can open up a port and we'll automatically give it a publicly-accessible URL. Routing requests from the internet through to individual repls is handled by a component of our infrastructure we call the proxy.
Wed, Feb 17, 2021Series A to Revolutionize Computing
Our mission is to give everyone in the world computer superpowers. We build powerful yet approachable tools & platforms for developers, students, and educators. We see a new generation of hackers and entrepreneurs rising to seize the power of computers and the internet to create software that empowers them and their communities. They refuse to be programmed by the software priesthood that wants them to endlessly consume ads. Instead, they build a more free society where computers work for and under human users, not the other way around. The world we're describing is coming, and we exist to accelerate the shift. Join us! Replit is a multiplayer computing environment that makes it fun to learn how to code, build, and share apps with other people. You can create a cloud-powered computer in milliseconds -- we call them "repls" -- and you can create as many of them as you'd like, all for free. Repls come with storage for your code and files, a database for your data, and a multiplayer editor & console to code with your friends. For $7/month, you'll get more powerful machines and, with one-click, make them run forever.
Mon, Feb 8, 2021Hosting Apps with Always On
Today we're excited to announce that Always On repls are available to all hackers! Anyone with Hacker plan can choose up to 5 repls and keep them running all the time. Users with a free plan can access Always On power ups using Cycles! With Always On, you can for example spin up and host an app like a Discord bot in 30 seconds: As a reminder, Replit gives you most of what you need to rapidly build and ship apps in the cloud -- at lightning speed: A blazing fast online IDE Automatic Package Management Automatic hosting
Wed, Feb 3, 2021Introducing Spotlight pages
Replit has never been just about code. It's also about the stories we tell, the apps and games we build, and how we collaborate. It's a part of Replit's DNA to make our community baked into the experience of learning and making. Today, we're announcing Spotlight pages: a new way to showcase your repls to the world. Whenever you visit someone else's repl, you'll see its Spotlight page where you can play with the repl's output, browse its code, and comment all in one place. And if you want to start a multiplayer session with someone new, you can directly request to edit their repl. Here's a demo of adding a new feature to a game using the Kaboom framework on Replit.
Mon, Feb 1, 2021The Internet of Fun
Yesterday, I accidentally built a chat app. Surprisingly, it wasn't the first time it happened. Before I tell you how Hackernews turned (this blog's) HTTP logs into chat, let me tell you about how a 12-year old user hacked the first chat app and community space on Replit right into a Python REPL. In 2018 we didn't know we had such a strong community of tinkerers. We knew people make games with Replit and share it with other people. But we didn't realize we'd already been a Schelling point for young hackers. One day, @pyelias created a post on our support forum saying he built a Chatroom and linked to a repl. I thought it would be a simple chatbot or something similar because I hadn't seen internet-based apps on the platform until that point. We had just opened up internet access to everyone, but we didn't support web hosting or any advanced features Replit has today. It was a very constrained environment.
Sun, Jan 31, 2021Killing Containers at Scale
To make it so that anyone with a web browser can code on Replit, our backend infrastructures runs on preemptible VMs. That means the computer running your code can shutdown at any time! We've made it really fast for repls to reconnect when that happens. Despite our best efforts, though, people had been seeing repls stuck connecting for a long time. After some profiling and digging into the Docker source code, we found and fixed the problem. Our session connection error rate dropped from 3% to under 0.5% and our 99th percentile session boot time dropped from 2 minutes to 15 seconds. There were many different causes of stuck repls, varying from: unhealthy machines, race conditions that lead to deadlock, and slow container shutdowns. This post focuses how we fixed the last cause, slow container shutdowns. Slow container shutdowns affected nearly everyone using the platform and would cause a repl to be inaccesible for up to a minute. Replit Architecture Before going in depth on fixing slow container shutdowns, you'll need some knowledge of Replit's architecture. When you open a repl, the browser opens a websocket connection to a Docker container running on a preemptible VM. Each of the VMs run something we call conman, which is short for container manager. We must ensure that there is only a single container per repl at anytime. The container is used to facilitate multiplayer features, so its important that every user in the repl connects to the same container.
Fri, Jan 29, 2021Rails in 30 seconds
Philosophically, Replit and Rails are incredibly aligned. We both exist to remove excessive configuration and complexity that stands in the way of building things. However, for a long time, it bothered me that Replit didn't work well with Rails because we focus on small and lightweight projects. Recently, our infrastructure has gotten much more powerful, and I decided to give Rails another spin. It turns out it's not only possible to do Rails on Replit; it's quite a delightful experience. It takes less than 30 seconds from starting a project to seeing the welcome screen: There is no magic under the hood. You can view the template here. I merely followed the getting started guide on the rails site and had to do only a couple of modifications to make the development website show up in the iframe on Replit (detailed in the readme file). Give it a spin, and let me know what you think!
Wed, Jan 27, 2021Going Global
We had the idea for Replit in Jordan, launched as a startup in New York, and incorporated as a company in San Mateo. The US gave us the infrastructure, the capital, and network to launch our business, and for that we're forever grateful. However, to us, the internet is a new country and we want to make our citizenship official and our commitment real. We're joining our global community of hackers, students, teachers, and entrepreneurs and becoming a global company and service. Starting today: Our first two non-US compute regions are up -- Mumbai, India and London, England -- making us a global service We're hiring worldwide making us a globally distributed company Global routing Previously, Replit has been operating out of a single datacenter in the United States. When you start a repl, or join multiplayer, all of your traffic had to make it to our one datacenter. While that's not a significant issue if you live nearby, for our friends all over the world it means every time you type a letter, you had to cross an ocean at least twice! That means you could see latencies as high as 300ms for each keystroke in the terminal! Now, when you create a repl, it lives in the datacenter closest to you. Instead of everyone having to cross the ocean multiple times, you can feel even closer than your own computer! And if you have friends far away, things will feel better too. Instead of connecting to a datacenter that is far away, you'll connect to the datacenter closest to you, and we'll deliver your bits as quickly as possible, so you don't have to travel the world all on your own.
Fri, Jan 15, 2021Native Graphics Love ❤️
We have reimagined the native graphics experience on Replit. Our community of educators and hackers have given us immense feedback on graphics performance and reliability. Yes, It Runs DOOM! Our engineers have built a native graphics experience that is faster, more reliable, and elegant. Games and other native GUI applications launch quickly and reliably on our platform. Common issues like applications not launching and window resizing have been fixed. Among our most popular use cases is Pygame for beginner game programming and Java Swing for AP CSA students. Engineering behind the scenes Before we take a peek behind the curtain, let's look at a very high-level view ofhow graphics work in practice. Like many Linux systems, Repl.it uses the X Windows System to display graphics. The X Windows System is natively a network-ready system: so there is one process that directly interacts with the hardware (the server), which doesn't need to be the on same machine where the program (the client) is being run. Nowadays, the networking capabilities of X are rarely used, since many optimizations rely on the fact that both the server and client processes run on the same machine and are able to share memory between them cheaply, to avoid having to move around massive amounts of graphics data through a narrow networking pipe. In order to support being able to view and interact with graphical user interfaces remotely other techologies are used, like VNC. And just for completeness' sake, X is not the only solution for graphics in Linux, and Wayland is slowly becoming the alternative of choice for X. Android users will be more familiar with SurfaceFlinger.
Mon, Dec 28, 2020Tabbed Shell
Among the many things that makes Repl.it special is our ability to provide free compute to millions of users. We've built a platform that not only lets you write and run code, but also gives you access to a Linux container through which you can execute arbitrarily complex commands. Despite being such a powerful feature, we haven't done a great job of exposing that capability to its fullest. Today, we're excited to announce that we're rolling out a redesign of the shell as a separate tab next to the console. Although we've already had a shell, this new redesign helps make it a more integral part of the experience in a repl. Here's what it looks like: Now it'll be easier than ever to switch between viewing your program's output in the console and executing bash commands in the shell. This will also greatly benefit beginners that are new to Linux since it will expose them to an easy to use shell that they can play around with in any repl. Note that you can still use the existing keyboard shortcut (Cmd/Ctrl + Shift + S) to open and focus the shell in addition to the new tab UI. If you have any comments or feedback, please let us know on Canny. We'd love to hear it!
Tue, Dec 15, 2020Input/Outputing Testing & Autograding
Today, a highly requested feature has been released: Input/Output testing & autograding. The Input/Output Tests pane is embeded within all new and existing Teams for Education projects. This pane contains tools designed to simplify testing code. Instead of manually entering typing input and checking output for every submission, the autograder allows you to define and automate testing. How do I use it? Input/Output tests is only available for projects created within the Teams for Education product. This feature is available on all projects - new and existing. Click on the icon within the workspace sidebar nav to reveal the Input/Output tests pane.
Wed, Dec 2, 2020We've Been Pwned
As long as I can remember Replit has been receiving a large number of vulnerability reports. We're very grateful for these and take them extremely seriously. However, 99% of them stem from a misunderstanding of what we do. Our main product is RCE (remote code execution) and naturally this leads to a whole lot of RCE vulnerability reports. Fed up with low effort and time consuming vulnerability reports I set up this repl earlier this year. The bounty is simple: read my secret or edit my file and receive a $1000 cash prize. Either would be a critical vulnerability in our infrastructure. Having a clear goal and a prize was a good motivator, and indeed there was a lot of initial interest with many valiant attempts. All was quiet until PDanielY was messing with our developer API (currently in closed alpha). Here is how he tells the story: I was trying to make a repl.run clone and then when I tried to use it run a public repo on my alt, I saw that my main account actually connected to the repl and I could edit files and stuff. This was ultimately due to an oversight in the token minting code used by our developer API. It used a long since deprecated method of generating tokens when accessing repls owned by someone else. Instead of producing a temporary transparent fork you'd get full access to the underlying repl. Yikes! Once PDanielY alerted us we verified it looked suspicious and immediately revoked all developer tokens. Next we looked at the logs to see if anyone other than PDanielY have exploited the bug and luckily, we found none (the alpha developer program has only a few developers).
Mon, Nov 30, 2020How Far We've Come
In early September we set out to simplify and stabilize Replit. "There's no better time to cut back than when you're growing," said Amjad. We've been working on this project in earnest for 10 weeks now. When you're in the thick of improving things all you can see is what remains undone, so it's good to look at how far you've come! Towards the end of September, we had multiple incidents where latency across Replit rose to unacceptable levels (the median request to the site could take 10 seconds). We were embarrassed. We had embarked on a stability sprint and the site felt worse. Increased load on Replit and in particular our legacy Classroom product seemed to have tipped us over a cliff. We added followers to our Postgres database and allowed people to export their classrooms into the much-more-stable Teams for Education, but it wasn't enough. We wanted to stop reacting to growth and put the web app on a solid footing. So we took the time to evenly distribute Postgres connections across all follower databases, cached the most frequently queried objects, and put rate limits in place. Since then latency has looked flat and boring. When you visit a repl, your browser opens a websocket connection to a running container. Despite this being a crucial step (if you can't connect to the container, you can't do much of anything in a repl), we had never measured how often it succeeded. The actual numbers weren't great but also weren't dire: if you tried to connect to the Replit backend in September, you would succeed 97% of the time (1 out of every 33 times you simply wouldn't connect). Now connections succeed 99.5% of the time (you'll only fail to connect 1 out of every 200 times).
Sat, Nov 28, 2020Replit's Community Standards
Welcome to the Replit Community! While you're here, please help us keep this community safe, supportive, and creative by adhering to our Community Values and Standards. Community Values Empower others. Replit is for everyone, and everyone starts somewhere. Be patient and inclusive - things that are simple for you may be hard for others. We have absolute beginners and coding experts on our platform, and we want everyone to feel at home here. Support one other. As part of the Replit Community, we hope you'll share your wins so other members can celebrate you and that you'll return the favor by supporting other users' work. Be kind. There is no place for hate in our community. Respect each other, use appropriate language, and be kind. Be positive, and always be sure to reinforce that coding on Replit is a fun and friendly experience.
