I’ve been involved with many web applications through the years, and had the chance to explore different technology stacks. If you’re working on a legacy application, you have to use whatever technology is already in place, and work around what is available to you. If you’re working on something more greenfield, you get the opportunity to pick the stack that’s right for your project. I’ve previously written about choosing your technology, but I wanted to get a little more opinionated here.
There are so many great open source projects these days, so how do you choose?
In my mind, there are three categories of technology: established, emerging, and bleeding edge. With web development progressing rapidly over the last few years, there are more options than ever to choose from. Sometimes, I have a fear of missing out on cool technology, but I’m also afraid to suffer the productivity loss when working with something new. Finding the right balance for me and my products is a real challenge.
We created an open source example app to help showcase a stack that is a good blend of established (Ruby on Rails), emerging (React), and bleeding edge (Apollo + GraphQL).
Why Ruby on Rails?
While not the most popular or most hip, Ruby is known as one of the most eloquent languages with great community support. Ruby on Rails has been around since 2005 and brings the power of Ruby to the web. Useful features such as a powerful ORM (ActiveRecord) and file upload facilitator (ActiveStorage, just released), paired with improvements to performance continues to push Rails forward.
There’s still plenty of life left in Ruby on Rails; I think it’s one of the most productive web frameworks available.
Why React?
React is a JavaScript library that was open sourced by Facebook in 2013. It has seen huge growth over the past few years, and one of the best parts of React is not only what it can do, but what it doesn’t do. Because it’s designed as a library and not a framework, you can pick and choose the pieces that are right for you. Much like Rails, there are many projects influenced by React that are faster, lighter, and newer, but with Facebook as a strong driving force paired with a wide-reaching community, using React is a well-supported approach to creating user interfaces.
GraphQL was also developed by Facebook, and opened sourced in 2015. From the website:
GraphQL is a query language for APIs and a runtime for fulfilling those queries with your existing data. GraphQL provides a complete and understandable description of the data in your API, gives clients the power to ask for exactly what they need and nothing more, makes it easier to evolve APIs over time, and enables powerful developer tools.
Tech author Robin Wieruch has a number of articles about Apollo and GraphQL. In contrast to both of the previous (relatively safe) picks of Rails and React, Apollo + GraphQL definitely have challenges that come with any bleeding edge technology. Things are constantly changing, but with that being said, both Apollo and GraphQL have excellent documentation and the maintainers communicate changes very well.
---
One theme you may have noticed is that I like technologies that have great communities and a focus on documentation. Documentation gives a reference point on where to start and how things were designed to be used. The community will imagine new use cases, develop plugins or add-ons, and continue to drive progress forward.
Hopefully our open source project will help inform your engineering lead’s decision on picking the tech stack. You can use it as a simple example -- or you can fork the project, make some changes, and send a pull request if you’d like to contribute!