Caution to reader: this blog post is 3 months or older. Blog posts older than three months may contain details about the Hack Reactor program that are no longer accurate. Please refer to other pages on our website to confirm current information and email us with questions.
After building a React and Flux framework with his Remote Beta classmates, Gunnari Auvinen documented the experience in a three-part series of blog posts. The framework, Tuxedo.js, was conceived as a way to make React and Flux, two technologies from Facebook, easier to use. The result proved popular--Tuxedo.js spent a full day near the top of the tech news aggregator Hacker News. With time to reflect, Auvinen extracted certain lessons taken from his first experience building a framework.
Frameworks are meant to streamline and augment existing technologies, so one generally wants to make them as user-friendly as possible.
"Building a framework is similar to an app in a lot of ways,” says Auvinen. “You just have different considerations. With a framework you want it to be more accessible out of the box. Whereas when you write the code for your application, you’re not necessarily as concerned with that. An application can be larger and more complex. A framework integrates smaller things which allow you to focus more.”
The Tuxedo.js team started by building a basic chat app with React and Flux, all the while documenting various pain points and other elements of the technologies that could be improved. The team found a lot of boilerplate code (identical blocks of code that have to be typed out each time they are used) and other components that could be abstracted away. From there, the group established their baseline goals for the framework.
“Finding the various features that we had to have these to make this a success was key,” Auvinen describes. “Once we hit the MVP (minimum viable product), we started looking at what else we could add.”
After showing Tuxedo to a couple of mentors, the group elected to build an animations library, among other “extra” components. One element of building a framework as opposed to an app, that Auvinen enjoyed is that one can be relatively modular with a framework.
“For us, if we wanted to have the animations library, we could have just released that and not worried about releasing the rest,” Auvinen explains. “You can silo little things. There are features that we’d like to add, but because they weren’t critical to the core of the framework, we can put them aside for later.”
Perhaps more than anything, the project showed what can be achieved by a dedicated group in a short amount of time.
“When I first started programming, [building a framework] was one of those larger goals that seemed monolithic,” says Auvinen. “It’s amazing what you can accomplish with a group of people with like-minded drive in just three or four weeks. I got everything I could have gotten out of Hack Reactor and more. Having achieved that feels pretty good.”