Roadmap · ·

Amber 2.0 Road Map

The business-framework direction behind Amber 2 and the responsibilities a mature application needs.

Amber character portrait
Illustration for Amber 2.0 Road Map

Planning for Amber's future has been tough. There's a lot of questions I have had to ask myself and research to make decisions. Things such as:

Well a few things from these questions have become obvious:

The Introduction to Amber 2.0

The Ultimate Goal of Amber

To empower a solo developer to go from idea -> MVP -> Enterprise in record time, while following consistent conventions that easily scale all along the way. A smooth developer experience, with tooling that improves productivity for both writing and testing your application. A single developer should be able to build an app and run the business themselves.

As of now, Amber is not just a web framework, it is a business framework.

Improving The Asset Pipeline

Improving Background Job Processing

Improving How Business Logic Is Handled (Organizationally)

Improving Developer Productivity

I come from a Rails background (primarily) and one of the things I love about Rails is how extensible it's own tasks are. That's much harder to do with Crystal apps because CLI tools are compiled binaries, so making it extendable by being able to add tasks to the tool inherently means re-compiling the CLI tool and that's not a smooth experience.

Making AI A First-Class Citizen

AI tooling is becoming more and more popular, so we should lean into that. There are several parts of the development process where AI can be used:

  1. During the development process.
  2. Creating documentation, public and private.
  3. Creating training material for public documentation that can be used for public AI models like ChatGPT.

More to come as this is still in early planning stages, but I expect this aspect will move fast.

Improving the ORM (Granite)

Granite is currently the default ORM that ships with Amber. I had originally intended on replacing it with Jennifer, however I've decided to back peddle on this decision. There are a handful of reasons for this:

  1. I want the default ORM to be as close to feature parity (including config files, schema file, migrations and model methods, etc.) to ActiveRecord as possible.
  2. Granite is a little less full-featured than Jennifer, however the changes required to bring Granite up to feature parity with ActiveRecord are easier than refactoring an existing code base.
  3. I want to create a gem that allows a strangler pattern to be used on a Rails app to create an Amber app. Having the ORM entirely under the control of the Amber org is going to be critical in helping make this smooth and maintainable.
  4. I want to use as much of the original foundation as possible for the framework to respect it's original creators and the time they put into this framework.

The specifics for Granite will be handled in the repo itself using the issues tracker.

Improving the CLI tool

The Amber CLI tool currently ships with the Amber framework as a monorepo. This makes development of the framework aspects bluried with the CLI tool, and it makes testing changes a bit weird. Since the CLI tool is going to be far more robust, it just makes sense to have the framework code itself separate. I already created a repo and have begun working on this, however it's still very early.

Wrapping up

Thanks for reading this far along! If you want to participate, please make sure to star the Amber repo and join the discord!