Why We’re Sticking with Ruby on Rails at Gitlab
I don&#x27;t use Rails anymore, but I did use Rails from pre-1.0 through version 3 (and played with later versions a tad).<p>The best thing about Rails is that it delivers a complete package. Rails doesn&#x27;t come along and say &quot;Oh, you need to use JS packages and minify your CSS and compile your SASS&#x2F;SCSS? That&#x27;s an exercise left to the reader. Good luck dealing with npm or yarn, choosing between Bower&#x2F;Gulp&#x2F;Grunt&#x2F;Webpack&#x2F;Browserify, good luck figuring out how to integrate Node into your build process, good luck figuring out how to add caching, good luck with async background task runners, good luck sending email, good luck with validation, good luck with testing, good luck with all the things beyond the core competency.&quot;<p>That&#x27;s one of the things that made Rails so powerful and continues to make it great. They offered good practices for so much of what you need. I don&#x27;t want to say best practices because I think sometimes Rails has faltered, but at least there was a reasonable path and because it was &quot;in&quot; the framework, people in the community would talk about it - and talk about how it could be better.<p>I think Rails also pushed the industry toward more structured organization of code (rather than just creating a mess), toward better testing, MVC and other patterns, etc.<p>I hate picking on projects that I think are mostly good, but to illustrate some things it helps. Ninja Framework (Java) has a section &quot;Advanced Topics&quot; which includes things like &quot;working with relational databases&quot; and &quot;validation&quot; and &quot;testing&quot;. Frankly, those aren&#x27;t add-ons or advanced topics.<p>In fact, Rails really pushed testing. It&#x27;s been a while (so correct me if I&#x27;m wrong), but all their generators built testing stubs. Sure, you&#x27;d have to fill out the tests, but it gave you a place for the tests, a way of running them, and generating the file gave you that little push of &quot;oh, this isn&#x27;t hard&quot; (which is especially important for newer programmers).<p>I think Django and ASP.NET are wonderful, but neither really offers a great answer for handling the JS&#x2F;TypeScript&#x2F;SCSS&#x2F;SASS&#x2F;minification stuff that you really want for a modern web app. ASP.NET points you to LigerShark&#x27;s WebOptimizer which is good. There are add-ons for Django. But it means that you&#x27;re left looking around the internet for what is the &quot;right&quot; path which can simply waste time and put people into analysis paralysis. Likewise, there are add-ons for background tasks. ASP.NET has the incredibly popular Hangfire. Django has add-ons as well. These aren&#x27;t impossible things to overcome, but Rails holds your hand a bit.<p>Many frameworks don&#x27;t deal with things like &quot;how do I deal with the fact that I want to test my stuff against a database&quot; and set that up nicely for you. Instead, it&#x27;s an exercise left up to the reader.<p>If you&#x27;re at a giant company where you have a platform team who can handle all these things, you don&#x27;t need Rails. You have your own teams making this stuff good for you. If you&#x27;re a start-up with a few engineers, do you want to spend your time figuring out how to compile assets, how to wire up MySQL to your tests, how to run background async tasks, etc.<p>That said, I do think Rails went in certain directions that have limited it. Static typing has become the way most people want to program. People are less interested in &quot;magical&quot; ways of typing less code and more interested in understanding how code is working. Other languages have become a lot better with lambdas, local type inference, less ceremony, etc. and we&#x27;ve seen new languages like Kotlin and Go. Other languages are substantially faster. Ultimately, a lot of frameworks learned a ton from Rails and copied a lot of the best bits. I still think Rails has a broader vision than basically anyone else and I think it&#x27;s a bit of a pity that no one else seems to want to have that vision (and please point me to projects you think have that broad vision if you know of them).<p>Rails really changed web software. Even if you want to use something else, Rails has likely had a huge impact on how you&#x27;re developing web software (even if you don&#x27;t know it). I&#x27;m grateful for what Rails taught me and how it impacted the industry even though it&#x27;s been a long time since I&#x27;ve used it.