I Am Making vym

I am currently making a code review software called vym.

Vym allows you to create a slide deck based on a Pull Request that you can present in real-time. It is a new way of reviewing code.


Edit 05/11/2016

I have launched Vym some time ago and I am moving away from the project. You can read why in this article.


Instead of building it in a secrecy, I would like to incrementally release until I am close to the launch.

I am frequently releasing my progress on the sandbox version on vym.io. You can try vym over there!

Why do we need a new way?

The main problem that I am trying to solve is that GitHub’s Pull Request interface is not suitable for large changes or code presentation.

If there are 30 files changed in your PR, presenting it to your team is a nightmare because you have to scroll up and down constantly. There is no way to organize the files.

I have actually already shipped an app to address this problem on September last year. it was called Coddee. You can read more about it on my past blog post Making Coddee.io.

So why am I building a vym while abandoning Coddee? It is because I realized that we need a new way. Let me explain.

After shipping Coddee, I was proud of it. But I could not use it unless I forced myself to do so. It was not a pleasure to use.

I think the reason was because Coddee was merely a simple improvement to the existing solution. In order for people to ditch the GitHub’s interface and use Coddee, Coddee needed to be at least, say, 10 times better. Simply put, we are reluctant to switch from one solution to another if the latter is only a little bit better.

I also documented this thought on this blog post.

All in all, to solve the problem of inefficient code review process, a completely new medium is needed.

Okay, show me the money.

The above picture is what vym looks like at the moment in the sandbox version. The picture shows a ‘wizard’ view in which you can edit slides.

I put previews on the left hand side, and the main view on the right.

When you present, you can simply have all your teammates point their browser to the unique url for the slide deck, and present it in real time (i.e. when you navigate throught the slides, their screens will get updated reactively).

Here is what a live presentation mode looks like:

Note that you can add not only files, but also texts. This feature helps you explain your code better.

What is the tech stack?

I am using Meteor as a full stack framework. The view layer is React. Meteor makes it a breeze to make the presentation real-time. It actually works that way out of the box.

The development experience has been a pleasure, largely because Meteor 1.3 supports the native ES6 module system. The module support makes it easy to write and use React components.

For instance, you can write your component like the following:

import React from 'react';

const Header = ({currentUser, logout, login}) => (
...
);

export default Header;

And you can use it anywhere in your app by importing it.

Also, I am following Mantra to structure my application. It is a project that recently launched to give a more opinionated and solid structure to Meteor application by taking advantage of native ES6 module support.

I wrote the official command line interface for Mantra, and have been actively using it while developing. I love it. I guess you could say that I am eating my own dog food.

By the way, here is the repo for the CLI if anybody is interested in using it. I also wrote a blog post about how I made it.

Ending

I will be frequently releasing my progress on the sandbox version. Also I will write blog posts on vym’s official blog. when I release major features, or just for the heck of it when I feel like doing so. :)

The best way to follow all the updates is probably on vym’s official Twitter account @vym.

By and large, my goal this time is to end up with something that I would actually use daily.