Remember in Back to the Future when Marty was playing Johnny B. Goode and got a little carried away and started really rockin' out? That's how I feel when I'm front-end programming with Opal. I may be getting lots of sideways glances from my peers, but your kids are gonna love it!

Javascript has reached an amazing point in its storied history where it is entirely suitable for serving as a low-level compilation target. That may seem a bit strange when Javascript is considered a high-level language with "scripting" origins, but due to the immense leaps forward in language performance thanks to the work of browser vendors constantly improving their Javascript VMs—not to mention the recent rise of server-side technologies such as Node—it's possible to write code in other languages that are then translated into their nearest JS counterparts all while maintaining reasonable performance profiles. Coffeescript, Dart, Clojurescript, Scala.js, Typescript, and many others have recently risen in popularity or are fresh new projects. Here's an amazingly lengthy list of most of the options.

Opal is basically a port of Ruby to Javascript. And it does an incredible job—you can write real Ruby code rife with metaprogramming, blocks, enumerable tricks, even method_missing. Ruby builtins like Array, Hash, Set, etc. are all present. Entire Ruby libraries including the standard library and even much of ActiveSupport have been ported to work with Opal. You can do string interpolation with the best of 'em.

Not only that, but it integrates right into the Sprockets pipeline for use in Rails and other projects, and it includes a handy-dandy wrapper around jQuery so that it's easy to do all the fun DOM manipulation, event handling, and 3rd-party plugin setup we all know well.

But what about the children?

Those crazy kids listening to the devil's music!

As cool as Opal is, not everyone in the Ruby community is ready to jump on board the Opal bandwagon. Many developers have invested time, energy, and money into learning comprehensive front-end frameworks like Angular or Ember and aren't willing to leave that behind to try out an unproven technology. Others are so used to the idea that Server = Ruby and Client = Javascript that it's too shocking to consider using Ruby everywhere.

One other issue which is simple enough to fix with better education & documentation is the perception that Opal is an all-or-nothing proposition. That either you write your front-end in JS or in Opal.

Nothing could be further from the truth. I have yet to develop a project fully in Opal—to the contrary, in both major projects where I've used it thus far, it has had to exist in a world with plenty of existing JS code and even interop with it. That's not a bad thing. (Just keep on eye on your compiled asset bandwidth needs!)

This is really just the beginning

Opal's momentum as an ecosystem definitely seems to be taking off, with new libraries and frameworks coming out at regular intervals. The Opal project itself is processing through PRs on GitHub on a frequent basis and the chat room on Gitter is quite busy. In fact, my inability to quite keep up with all the updates and new stuff coming out was the impetus for starting the Opalist newsletter.

Starting with a bi-weekly cadence, Opalist will feature the latest news, tutorials, gem updates, front-end innovations, and more in a simple email newsletter. Like many of the other great link list newsletters out there, I hope it will be a great way to stay fresh on the Opal ecosystem and learn more about Ruby's "latest frontier" aka the world of the web browser (and beyond!).

I hope you bookmark Opalist, subscribe to the newsletter, and enjoy receiving the publication as it comes out. Please let me know in the comments section if you have any thoughts or suggestions. I'd love to hear from you!

Many thanks to the Opal team for creating one of my favorite open-source projects of all time. I can hardly wait to see what comes next!

Jared