Roast of github.com/Aha-app/mvc
The "Aha!" moment nobody asked for
Congratulations to the team at Aha! for securing the GitHub repository name mvc. That is a level of domain squatting usually reserved for people selling sex.com in the 90s.
Naming your JavaScript framework mvc is the developer equivalent of naming your dog "Dog." It’s bold, it’s vague, and it guarantees that googling for help will return 40 billion results from 2008 about ASP.NET and zero results about this repository.
Architecture by hallucinations
According to the README, this framework is a "simple MVC framework with React views." That sounds nice, until you read the fine print on the architectural choices:
- View: React (Okay, standard.)
- Controller:
react-easy-state(Oh no. We're doing this?) - Model: GraphQL (...)
Hold on. The Model is GraphQL?
That’s not an architecture; that’s a cry for help. Defining your data model as "the internet wire protocol" is like saying the engine of your car is "the highway." You aren't building a Model-View-Controller; you're building a Query-View-Mutation-Soup.
"Have your state and mutate it too"
The tagline proudly proclaims: "Have your state and mutate it too."
This is a hilarious flex in the React ecosystem. While the rest of the world spent the last decade learning discipline, immutability, and unidirectional data flow to prevent bugs, this repo kicked the door down and shouted, "LETS JUST MODIFY window.obj AND PRAY!"
Using react-easy-state to bypass React's rendering lifecycle is the coding equivalent of fixing your car's engine by turning up the radio. Sure, it feels "easy" now, but wait until you have a race condition that only appears on Tuesdays when the user is hovering over a button.
The "World's #1" Ghost Town
Aha! is a major SaaS company. You build roadmap software. You have customers. And yet, this "framework" has been sitting there for years gathering dust with a single-digit star count that suggests even the employees who wrote it are trying to distance themselves from it.
It’s written in TypeScript, which is ironic, because usually, you use TypeScript when you want more safety, not when you're building a framework based on the premise that "Redux is too hard, let's just mutate global variables."
Verdict
Aha-app/mvc is what happens when a Rails backend developer is forced to write a frontend app and decides to fight the framework every step of the way. It is a monument to the phrase "Just because you can, doesn't mean you should."
Rating: 0.1 stars out of 5. (But don't worry, you can just mutate that rating to 5 directly in the DOM.)