đź“ŁPostmark has been acquired by ActiveCampaign
x

Conveyor: a focus on Git

After much consideration and many conversations, we've decided to shut down Conveyor. We'll begin the process on September 1, 2020. Thank you again to all the people who shared their feedback or time with us!

We love Git at Wildbit. Years ago when we switched over from SVN, its performance and flexibility blew us away. Now after running Beanstalk for ten years and listening to thousands of developers, we realized things could be better.

We wondered if we could use Git as an underlying layer for a different type of product. One that sacrifices a little flexibility to reduce complexity so that it’s harder to shoot yourself in the foot. One that wouldn't need as much maintenance. One with a built-in workflow so that visitors wouldn't have to try and stitch together their own.

That's how we started talking about Conveyor.

More than just a web app

The first thing we realized was that Conveyor has to run on your computer. It’s where you work and write code. It was the only way for us to provide the experience we needed to make our workflow possible.

From the moment you launch Conveyor to your first commit, Conveyor will guide you through the workflow. It steers you away from all the troubles you can experience with Git.

There is a complete disconnect between services like Beanstalk and version control desktop clients. By the time customers come to us for help, it’s too late.

Their version control client gives them plenty of options, but no guidance on which options to use. Now it's costing them their productivity. At this point, all we can do is hold their hand, give them some documents to read and hope they can figure it out.

That's why Conveyor is a desktop application that you run on your Mac. It connects to our API service and our private Git servers to store your repositories safely. And it works side by side with the web application. You use the Mac app to do work and make commits, and you use the web app for retrospectives and project management.

Powered by Git

When we sat down to brainstorm our ideas, we agreed that we did not want to build "Git for dummies." We wanted to build Conveyor for people who are Git-agnostic. You can be great at Git or know nothing about it. It doesn't matter. What matters is that you hate wasting your time every day on mundane tasks that could be automatic or eliminated altogether.

You would rather use a tool that takes care of that for you and lets you focus on what matters. Shipping your web projects!

After ten years, I still get annoyed when Git requires me to dance with a tambourine performing some specific ritual before I can get to work. I know how to do it, it's not hard for me to do, but I would prefer to be doing something else.

Instead of giving you a big bag of LEGO bricks and a thousand-page manual, Conveyor gives you the right steps so you can get to work.

It's OK to love Git. To enjoy messing with its internals and doing crazy things that people love to hear about on Hacker News. I get it, it's fun. It's what we hackers do.

But there are times when you just need to get something done, and the "fun" of playing with Git becomes a hindrance. And you have to repeat it again and again, day after day. Time passes, and you start to wonder if you even enjoy that anymore. It's a chore.

Conveyor is powered by Git to leverage its performance and flexibility. It uses Git the same way Finder uses HFS file system. We take various pieces of Git and assemble them in the right way to provide a workflow that your team can use.

Instead of giving you a big bag of LEGO bricks and a thousand-page manual, Conveyor gives you the right steps so you can get to work.

Better together

Since we built Conveyor on top of Git, it uses a different terminology. Conveyor has Projects and Tasks. Each Project has a built-in Git repository, and each Task has a built-in branch. It's a fusion of Git and project management.

In Git, a branch is only a piece of text (branch name) attached to a commit. Once it's deleted, there are zero traces of its existence in the repository's history. That's why we're used to reading long lists of commits to figure out what happened in our repositories.

But commits are terrible at helping us understand what's going on. There are too many of them, too granular, and their messages are often too cryptic to understand. For this reason, people give up on trying to understand what's going on in their repositories.

Conveyor allows you to look at your repository history from a different perspective. We call it Task-based history. You can look at what your team is working on by reviewing Tasks that are in progress, not commits.

Unlike branches, Conveyor never deletes information about Tasks. So if you want to see finished or rejected Tasks from last month, you can do that. You don't have to store that information in a yet another system or service. It lives together with your code inside your version control system, where it belongs.

Task in Conveyor macOS app

It's a way of treating repository history that can make us more effective.

Less focus between “local” and “remote”

With Conveyor, we wanted to remove some of the friction between local and remote resources in your repositories. There is a level of duality in Git that can cause confusion.

  • local vs. remote repositories
  • local vs. remote branches
  • local vs. remote commits, etc

How many times have you forgotten to push a commit while working at home? You get to work to find out that you can't pick up where you left off.

Another example? When you've finished working on a branch and merged it to stable, you then remove it from your computer. But you need to remember to remove it from the remote too. It works the other way too. If a team member completes a branch and removes it from the server, you need to remember to do so locally. This is where things get messy!

Conveyor tries to solve this by synchronizing things for you as much as possible.

Projects. It will auto-clone all Projects from your Workspace and store them on your disk. This way every Project is ready for you to jump in and get to work. You go to the app, look at the list of Projects, click on the one you want and boom, you're in. If someone on your team creates a new Project, it will automatically appear on your computer as well.

Tasks. We do a similar thing for Tasks. Whenever someone adds a new Task to a Project, we automatically download it to your computer. We even pull updates to Tasks, so you don't have to worry about it (unless it's checked out, in which case we will let you synchronize it manually). Conveyor also keeps your master branch current by pulling updates whenever they become available.

By getting rid of some of the "local" aspects of Git, Conveyor makes your repositories and branches more accessible. Whenever you need something, you should be able to do it quickly and without hassle. No more thinking about Git repository URLs, remotes, pulls and fetches. Everything is always cloned, up to date, and ready for you to jump in and work.

But that doesn't mean that you can't work while offline. Conveyor detects when your internet becomes shaky and enters a special offline mode. This allows you to create new Projects, Tasks and make commits. Everything a developer needs to make progress. Once you come back online, Conveyor will synchronize everything you worked on.

Babysitting Git

And there are many other things that Conveyor does to make your life with version control more pleasant. It automatically sets up SSH keys and adjusts the Git config for you, so you don't have to. It will even keep an eye on the date & time settings on your computer to make sure you don't create commits with a wrong timestamp.

It also makes it much harder for anyone to shoot themselves in the foot by prohibiting rebasing, force pushing and other features that can cause problems if not used correctly.

We also wanted to improve the speed for switching between Tasks. Conveyor stashes any uncommitted changes from your working directory when you switch from one Task to another. And it will un-stash them next time you return to it. Automatically.

With auto-stashing, you can jump between Tasks quickly, without thinking. You're no longer slowed down by another set of operations you have to perform to satisfy Git.


Conveyor is still in progress as a product, but its vision is firm. And one we’re passionate about. We can’t wait to show you more.

Curious about anything we mention here? Let us know on Twitter — we'd love to hear what you think!

Want to get early access to Conveyor? Sign up to join the beta list!