Skip to content

Replace colorize gem with rainbow.

What does this MR do?

It replaces the colorize gem with rainbow.

Are there points in the code the reviewer needs to double check?

Make sure all relevant modified rake tasks still work. I checked repeatedly using git grep 'color' that all uses of any .color method were replaced by their Rainbow equivalent, you'll want to double check. We (should have, at least) only used ANSI colors, so black, red, green, yellow, blue, magenta, cyan, and white.

Note that colorize will still be required by Spinach, but since we only use Spinach in the test/dev environments, this isn't a problem. To ensure 100% that tasks run without requiring colorize, you may wish to try removing all spinach-related gems, running bundle install, and then gem uninstall colorize before running them. I tested all tasks that could be run in dev with Spinach enabled, and then a handful after removing Spinach and uninstalling colorize, and saw no failures or errors in either case.

Why was this MR needed?

Colorize is a GPLv2 gem, which means that we cannot use it without ourselves being GPL'd, which we are not. This is the last gem we use that was breaking the terms of the GPL, so I took it upon myself to remove it.

Some argue that libraries can be used without GPL'ing the product itself, but the GNU Project, as well as the Open Source Initiative disagrees. Out of an abundance of caution, having researched various software licenses extensively, and in the interest of covering ourselves legally, I'm going to go with that interpretation of the license.

An attempt at relicensing Colorize was made, but didn’t succeed as the library owner hasn't responded more than four weeks after attempting contact.

What are the relevant issue numbers?

!3775 (merged), gitlab-com/operations#164 (closed)

cc: @sytses, @rspeicher, @rabbitfang, @rymai

Merge request reports