Releasing Super 0.0.5

This is probably... the smallest release of Super so far.

The headline change in this release is the removal of Super::Action. When I originally decided on it, I was working with these constraints:

  • Avoiding the use of inheritance. Although Rails heavily relies on inheritance,   I prefer avoiding it when possible. I find that it overly couples the class to   its superclass. And similarly (perhaps I chose a bad name!), calling super   is a leaky abstraction; in order to override and extend the original behavior,   the subclass must know exactly what the superclass does.
  • Configuration consolidation. I didn't want developers to have to modify the   controller or view at all. I wanted Controls to be powerful enough to control   all aspects of the admin resource.

And Super::Action fit those constraints. Recently though, I came across this article and realized that Super::Action added more developer constraints than I could be happy with. I really enjoyed the blog post and I recommend reading it in full, but an excerpt:

A library is a set of building blocks that may share a common theme or work well together, but are largely independent. [...]

A framework, usually, must predict ahead of time every kind of thing a user of it might need to do within its walls. [...] It must not only take care that every task that needs to be done in it can be done, it ideally needs to offer a better way of doing those things than the way they would be done normally. Otherwise, why use it?

In this case, Super::Action was an abstraction over some of the most fundamental pieces of Rails — controller actions and views. Though it provided some "idealistic" benefits such as the lack of inheritance, I don't think it provided a better way than the Rails way.

So it's gone. I've kept some of the reusability that it used to offer, see Super::Step and Super::ApplicationController. You'd notice it's basically normal Rails.

Next priorities

I want to focus on Super Professional next. I have some cool features in mind that I noticed frequently come up in admin wish lists. I'm excited to show it, hopefully soon!

As for Super FOSS, there are two tracks of work that I'm planning on. Firstly, I hope to reach API stability. Sadly, it's a little hard to reach API stability without having users and feature requests (and it's a little hard to have users until there's some level of API stability). On the other hand, having no users makes it easy to make breaking changes without having to worry about breaking apps in production.

Secondly, I hope to work on some quality of life improvements – keyboard shortcuts for admins, customizable navigation, automatic Controls generation (guessing what columns to show), and automatically deriving Strong Parameters from the form_schema definition. One of my favorite things about ActiveAdmin is how much it can with a basically-empty configuration file. I hope to bring that feeling into Super.

Beta testing

If you're interested in beta testing the professional edition, please send me an email!


Posted on 2020-06-01 11:58 PM
© Copyright 2008–2021 Zach Ahn