We’re Thankful for the Unsung Heroes of Open Source Software

November 25, 2015 Comments


Impact Index

Initial Effort LowHigh
Ongoing Effort LowHigh

Using Open Source Software to help build your products lets you move orders of magnitude faster than if you were to build everything on your own. However, there are times where libraries collide or don’t support exactly what you need, requiring your developers to go under the hood. That’s the only reason these scores aren’t negative. We rate using OSS as Non-Existent to Low effort on both Initial Effort and Ongoing Effort


You can’t build a great SaaS product without help

We are thankful.

This blog series is about building great SaaS products, so today we’re talking about the importance of Open Source Software.

There is plenty of fanfare for what I think of as the “Big Dogs of Open Source Software”. This includes projects like Ubuntu, nginx, Ruby, Rails, Mongoid, Devise, Bootstrap, and Sidekiq. These projects are the backbone of a large amount of the Internet including Ramen, ChartURL (a side product we recently launched), and this blog.

But this post isn’t about The Big Dogs.

This post is about The Small Dogs: small to medium software libraries that do a ton of heavy lifting behind the scenes. There are a ton of these open source software projects that help Make the SaaS Go ‘Round. Ramen alone relies on 299 Rubygems and 52 JavaScript libraries.

This Thanksgiving, we want to call attention to the people behind these projects. They work a lot. They deal with a lot of requests and complaints. They don’t get paid for it. They keep working.

We spent yesterday going through the list of open source software projects used at Ramen & ChartURL, and came up with 12 projects that we felt were especially worth noting. So, in no particular order, we give you the 12 open source software developers we’re thankful for this Thanksgiving, and the why we love the projects they work on so much.

 

Thanks @AkzhanAbdulin & @fphilipe for premailer

Sending HTML emails is a huge pain in the butt. With all the different ways clients out there mash up CSS & HTML, the only way to ensure your styles are respected is through “inlining” your style. This is not only tedious, but means that making changes is a nightmare, as any inlined style rules need to be changed everywhere. This gem fixes all that. You write your CSS & HTML, feed it into premailer and voila: all your styles are inlined.

premailer is a generic gem for inline styles, but the awesome continues because premailer-rails will automatically hook it up to your Rails app so that all your HTML emails get inlined on-the-fly.

One thing to keep in mind is that psuedo-classes like :hover cannot be inlined. You can still keep them in a <style> tag, and some clients may support it, but it’s best to not rely on :hover for any UX concerns in your emails.

Thank them on Twitter

 

Thanks @javan for whenever

Not very long after a product comes into the world, it needs to do “stuff” on a regular schedule: send emails, update caches, delete old files. cron is the status quo when it comes to managing jobs like this, but for a whole bunch of reasons it can be a real pain in the butt to work with. The whenever gem takes care of everything:

  • A simple Ruby interface for defining your jobs
  • Updating the list of jobs to be run, keeping in mind it may need to remove jobs that are no longer needed.

For the technical folks, reading this, that ‘whole bunch of reasons’ is a big mess. In what has become the standard Rails stack, it’s common to use to Bundler and RVM. The TL;DR here is that cron doesn’t run jobs in the same environment as your console, which plenty of times causes things that work just fine in the console to silently fail when ran through cron. whenever deals with all that beautifully.

Say thanks to @javan on Twitter

 

Thanks @tmilewski & @carrot for P3P

P3P is a security standard that is only Internet Explorer uses. It determines what a page can do when it’s loaded as an iframe. Both Ramen & ChartURL allow certain pages to be rendered inside iframes. Without P3P, some pages will not load in an iframe on IE, and some pages will load but won’t allow you to use cookies. With P3P, all is well.

This library is less than 130 lines code: 54 lines of code & 75 lines of test, yet the commits for it span almost 2 years: updating gem dependencies to newer versions, fixing things so that the gem works with newer versions of Ruby. It’s these kind of things that make even the smallest open source projects valuable. One more thing you don’t have to think about.

Say thanks to @tmilewski & @carrot on Twitter

 

Thanks @joshpeek for rack-ssl

I adore SSL. The upcoming HTTP 2.0 spec makes SSL a requirement. Some sites still don’t use SSL and for understandable reasons: SSL certificates cost money and can negatively impact performance. At Ramen, though, SSL is the rule, and the rack-ssl gem makes it a breeze to manage SSL.

One of the nerdy things that I love about rack-ssl is that it doesn’t just check to see if the incoming request is over SSL and redirects to SSL if not. rack-ssl even deals with HSTS and will force your cookies to be secure, which tells the browser never to send those cookies over a non-SSL connection.

Thank @joshpeek

 

Thanks @cyu for rack-cors

Cross Origin Resource Sharing, like SSL, is another really tricky thing to deal with. Without getting into too many specifics, one thing CORS can do is prevent hotlinking. If you host an image on your site, without CORS, someone else could put your URL to that image on their site and have you pay for the bandwidth. Among other things, CORS can prevent this.

The rack-cors gem is an awesome, well-documented project that helps manage CORS without having to think about it.

Aside from hotlinking, there are some really interesting security implications that CORS addresses. For further reading, the Wikipedia article on CORS is quite good.

Tweet at @cyu

 

Thanks @ktheory & @kickstarter for rack-attack

rack-attack let’s you block people from your app. You can block based on all kinds of things like IP address and browser type. It’s the kind of thing that you never need until you do, and then you need it immediately. We recently had an episode where dozens of fake accounts were being created a day, and it was messing up our reporting so this gem was a life saver.

Say thank you to @ktheory & @kickstarter

 

Thanks @grocerybaghead for active_link_to

active_link_to is one of those things that everyone should be using. This is a super nerdy one, but you know how when you click on an item in a navigation menu, there’s usually some kind of visual indicator that it is the current page once navigation is complete? That’s what active_link_to is for. It’s meant to be used with Ruby on Rails, and works alongside the built-in link_to function.

active_link_to will automatically add an “active” class to the <a> tag if the current URL matches the URL the link is meant to go to.

Super helpful and keeps your view logic nice and clean.

Thank @grocerybaghead on Twitter

 

Thanks @dblockdotorg for grape

grape helps you build APIs. While very opinionated, it has thought through and settled on best practices that will help API builders, new and old, avoid a lot of pitfalls. This includes things like:

  • Parameter validation
  • Authentication
  • Error handling

But the most incredible part of `grape`, in my opinion, is how they handle versioning. I won’t get into the details here, but by following their patterns, you can easily build a versioned API while massively reducing development, testing, and QA time.

Tweet at @dblockdotorg

 

Thanks @i0rek for typhoeus

Last, but not least, is typhoeus. typheous is a gem for making HTTP calls. Ruby comes with a library that does this. It’s called Net::HTTP, and it’s awful.

typhoeus is a Ruby library, but it sits on top of curl — the standard library for making HTTP request on OSX and Ubuntu — so it’s super fast and reliable. It’s got a simple API that makes firing off HTTP requests a breeze, and it includes hydra which enables you to make concurrent requests without suffering the limitations of Ruby’s green threads. That’s nerd-speak for: it’s super fast despite Ruby being in it’s way.

Tweet at @i0rek

 

It takes a lot for great software to exist

For a lot of us, it seems like there’s never enough time in the day. These developers are just a fraction of a fraction of the total number of people that Make The SaaS Go Round. This Thanksgiving, let’s all take a minute to realize that no good SaaS products would exist without the time they take away from their job, their hobbies, their families, and their sleep, to make a small dent in our world.

From all of us at Ramen: Thank you for what you do, OSS peeps. Happy Thanksgiving.

Oh, and if by some chance SaaS products are your thing, check out our newsletter :)

Wrong form ID

Get Started with Ramen for FREE

Nothing to see here. Just a yeti.

© Ramen Inc. 2017