Best Tools for Code Collaboration
According to Forbes, 50 percent of Americans will work as independent contractors by 2027. Many tend to downplay freelancing as pertaining to only small-scale or personal projects and dismiss the implication and economic sustainability of freelancing. Independent contractors are not only casual freelancers; they are highly skilled individuals for whom freelancing is their job. Needless to say, such workflows are built on collaboration.
For example, in my city, most IT companies are already doing that. Most developers I know enjoy working from home. The biggest challenge, however, when working from home, for developers and project managers, is collaboration. While there are a lot of tools for project management or team collaboration, for actual code collaboration, things are not as good as you’d expect.
So, I talked with some project managers, sent some emails and buzzed a few more devs from my messenger list, and asked them how they deal with real-time code collaboration and how work from home affecting their projects. So, here are the options.
Atom + Teletype
Teletype is a tool designed by GitHub. It’s a free and open source package created to bring code sharing and collaboration to the Atom. The tool works by creating a virtual collaboration space, known as portal, for sharing workspaces.
For example, after creating a portal, the host will invite collaborators that can join the session. As the host cycle via files, guest can make edits or spectate the active workspace. After entering a portal, collaborators get their cursor so that everyone can type in the same time. Thankfully, only the host can save edits.
Code sharing is done over an encrypted WebRTC peer-to-peer connection. While the package uses GitHub servers for the initial handshake, servers never see any file or edit, thus maintaining privacy and minimizing latency between you and your collaborators.
Teletype can be installed via terminal using the apm command or from the package manager. After installation, clicking the antenna icon from Atom’s status bar will launch the code sharing session. After starting a portal, the host can invite anyone using Teletype by sharing the unique Portal ID. Collaborators will then join the collaboration workspace once they’ve entered the Portal ID. For now, Teletype doesn’t support voice collaboration, but teams can use their preferred tool for communication.
Teased for more than a year and announced at this year’s Build Conference, Visual Studio Live will become the favorite tool for code collaborations. It’s like Word online but with the latency problem sorted out. To begin using Live Share users will need to sign in with a Microsoft or GitHub account. The host will then send a link that will load a collaborator’s editor with a Live Share session, giving collaborators the ability to access all the project files from the editor file pane. When using the Live Video, you still use your personalized environment, including themes, key bindings and any other customization.
Key features include the ability to pin to a user and follow their cursor as they navigate, setting breakpoints, viewing web apps and databases without exposing ports to the Internet, running commands and tasks, with output streamed to team members and more.
Live share supports up to six collaborators and can be configured to work over a peer-to-peer connection. Live Share is not a replacement for screen sharing but the option to use Live Share along with chat, voice, video and screen sharing is there. For now, Visual Share is free and is expected to remain that way for the foreseeable future.
AWS Cloud9 is a cloud-based integrated development environment from Amazon that lets developers write, run and debug code within a browser. It features a code editor, debugger and terminal.
Cloud9 also features real-time collaboration enabling developers to pair sessions and track each other’s inputs. It works especially great for local testing and debugging as you get terminal access to AWS. It also features group chat. Cloud9 may seem like overkill when you are just sharing code, so unless you are deep into Amazon’s cloud ecosystem, it may not be your first choice.
Brackets + Multihack-Brackets
Brackets comes straight from the Adobe Lab. It’s a robust code editor, packed in a beautiful interface. It doesn’t come with code collaboration functionality by default, but, as long as you manage to make sense of Brackets extension repository, you’ll find a few extensions that will do the trick.
Start with multihack-brackets. While it hasn’t seen many updates lately, the extension still works as intended.
Once you install the extension, a sync icon in the right toolbar will appear. Enter the session ID and you are set. By default, the extension points to the extension’s author server. This shouldn’t be a problem as long as you run WebRTC, but for teams looking to keep their code on their servers (or where there is a legal requirement to do so), another multihack option — multihack-server — can be used to run the code collaboration in a private environment. The tool uses Conflict-Free Replicated Data Type to avoid merge conflict and keeping everyone on the same code base. You can also use voice calls if you don’t mind tweaking with Bracket’s media-stream feature.
There is also a web version of the tool available at https://multihack.github.io/multihack-web/, but it lacks the polish and feature base of Brackets. Still, there are a few scenarios where the online tool would fit.
Sublime Text + Remote Collab
If you are using Sublime Text, then you’ve heard about Remote Collab. It’s an open source plugin for code pairing that brings real-time collaboration to Sublime Text. Once you install the plugin via Sublime Text’s Package Control, a new option is available from the Tools menu: Remote: Host Session.
From there you can start a collaboration session. Collaborators use Remote: Connect to session feature to join your instance.
This set-up works, but keep in mind, that the last update to the package was made more than four years ago, so, sometimes you may have a hard time getting the plugin to work. Hey Eliza, throw in some love for Remote Collab, please!
Firepad is much more than a text editor with collaborative features. It’s built with the Firebase Realtime Database as a backend, it doesn’t need any server-side code and can be embedded in any web application. Firepad is built at the core of popular commercial code collaboration tools such as Koding, CodePad or ShiftEdit. By default, it uses the CodeMirror text editor, but can also be configured to work with Ace. For teams looking to build on top of a code-sharing collaboration fundamental, Firepad may be a perfect choice.
Codepad is one of the most recommended tools to make the task of sharing source code easier and faster. It is a place for developers to share and save code with a remarkable community of developers that can you help you with your code.
CodePen needs no description. It’s a popular social development environment for front-end designers and developers, where you can show off your skills, build and deploy websites and find inspiration. Pro users have access to “Collab Mode” where multiple developers can work on the same Pen at the same time. Depending on your plan, there may be a limit to the number of collaborators. However, none of the collaborators need to be signed on a paid plan. The cheapest plan, $2 per month per user, allows two collaborators, while the most expensive enables up to 10 collaborators.
When entering Collab Mode, anyone with access to the URL can edit the code. There is also a handy chat feature, where collaborators can share their ideas, issues or annoy anyone else in the session. While only the host can save the changes, collaborators can fork the code and start working on their own. Of course, there are some controls to keep code from being leaked away, but this is social collaboration. Anyway, it’s an excellent tool for brainstorming and learning.
If you don’t need all of CodePen’s features, Codeshare is another web app service focused on simplicity. Being a hosted environment, the code has to be ported out of the local environment, so it’s a no-go for production code. However, it still can be used for various other scenarios such as testing, review, sharing snippets of code, debugging or learning. It also offers video collaboration. Codeshare is free, but if you want to keep the code for longer than 24 hours, you’ll have to sign up.
This online code editor is built with collaboration in mind. It features a built-in terminal console for tasks such as ssh, ftp/sftp that allows developers to code from any platform.
Remote collaboration is done by sharing a workspace link with a collaborator. The share permissions can be fine-tuned so Codeanywhere can be used even for production scenarios. Also, a handy versioning feature will keep chaos from settling in. That’s a must-have because on Codeanywhere hosts can share entire projects, files, or folders with developer all around the world. Also, the service does not impose any collaborators limit. Of course, there is a price to pay. Pricing starts from $2 per month for regular use. The commercial tier starts at $7 per user.
SSH and tmux
For those who like to tinker under the hood, there is always the option of SSH and tmux. As usual with anything involving terminals, there are many ways to add real-time collaboration features in your terminal. You can check out this amazing tutorial that goes in depth to explain the pros and cons of terminal collaboration. Of course, there is also the option of tmate, an open-source project that brings instant terminal sharing out of the box.
Code collaboration, while being an essential feature of many workflows, is yet to be as polished as one would expect. You can make it work, and there are even some decent plugins to make it happen, but it still feels like there is much to be done. Existing tools, however, should suffice for now, whether you are programming, code sharing, teaching or learning.
Moreover when Microsoft is in the game, it’s safe to assume that more will tools will feature live collaboration. So, what are your favorite tools? Is code collaboration part of your team’s workflow? Are you ready for the office-less office?