Ruby Sass is Deprecated

Posted 2 April 2018 by Natalie Weizenbaum

With the release of Dart Sass 1.0.0 stable last week, Ruby Sass was officially deprecated. I’ll continue to maintain it over the next year, but when 26 March 2019 rolls around it will reach its official end-of-life. I encourage all users to start migrating away sooner rather than later.

The Deprecation Period

Over the next year, I’ll continue to work on Ruby Sass in a limited capacity. I’ll triage and fix any bugs that are reported, unless they’re minor or obscure enough to be unlikely to pose a practical problem over the next year. I’ll also add support for any new CSS features that require changes to the Sass parser or other parts of the language.

I won’t be working on language features that aren’t necessary for CSS support, though. The latest and greatest features will be appearing exclusively in Dart Sass and LibSass from here on out.

I also won’t be accepting pull requests for new Ruby Sass features. While pull requests are a great way to contribute to projects, they still take work on my part to merge in, and it just doesn’t make sense to spend time on that work when the project is being turned down. If you’re interested in contributing to Sass, I highly recommend contributing to Dart Sass—Dart is an extremely easy language to learn!

We’re also be migrating the Ruby Sass repository to https://github.com/sass/ruby-sass, so be sure to update your Git URLs. The old repository URL will continue to work during the deprecation period, but it will be frozen; all ongoing maintenance will happen at the new URL. Once the deprecation period is over, the Git history for the old URL will be wiped and replaced with feature specifications. See this issue for the full plan.

Migrating Away

We want to make it as easy as possible to migrate from Ruby Sass onto an actively-maintained implementation. The best way to do that depends on how you use Ruby Sass today.

If you use Ruby Sass as a command-line tool, the easiest way to migrate is to install Dart Sass as a command-line tool. It supports a similar interface to Ruby Sass, although it currently doesn’t support the --watch or --update flags—adding them is high priority, though!

If you use Ruby Sass as a plugin for a Ruby web app, particularly if you define your own Sass functions in Ruby, the sassc gem provides access to LibSass from Ruby with a very similar API to Ruby Sass. In most cases, you can just replace the Sass module with the SassC module and your code will continue to work.

If you’re using Rails, I particularly recommend using the sassc-rails gem, which wraps up the sassc gem and integrates it smoothly into the asset pipeline. Most of the time you won’t even need to change any of your code.

We’re also planning to add support to Dart Sass for embedding it in Ruby (and other programming languages). This will allow Ruby users to get the latest and greatest features as soon as they’re implemented.

End of Life

On 26 March 2019, the deprecation period for Ruby Sass will end and it will no longer be maintained. The new sass/ruby-sass repository will be archived, which means no changes will be made and no new issues or pull requests will be accepted. The old sass/sass repository will have its Git history replaced with feature specifications that have historically just been scattered around issue comments.

Leading up to the end of life, we’ll be migrating the user-focused reference documentation from the Ruby Sass repository to the Sass website. We could use some help doing the migration and touching up the documentation, so if you’re interested please chime in on the tracking issue!

Unless…

We’re turning down support for Ruby Sass because the Sass team just doesn’t have the bandwidth to maintain it along with the other major implementations. But there could be another solution. If someone from the community is willing to step up and take on the mantle of maintainer, we’d be more than happy to show them the ropes and help them keep Ruby Sass going.

Maintaining a language implementation isn’t necessarily easy. It requires keeping up with features as they’re added to Dart Sass, as well as fixing bugs and fielding pull requests. But it’s also a great opportunity to work on a big project with a lot of impact, and I’m happy to help get a new maintainer up to speed. If you’re interested, please email me and Chris and we’ll talk about how to get started.