https://github.com/boazsegev/neorack
Pushing the Ruby webserver interface to the next level
https://github.com/boazsegev/neorack
Last synced: 6 months ago
JSON representation
Pushing the Ruby webserver interface to the next level
- Host: GitHub
- URL: https://github.com/boazsegev/neorack
- Owner: boazsegev
- License: mit
- Created: 2020-09-17T22:20:22.000Z (over 4 years ago)
- Default Branch: master
- Last Pushed: 2024-10-26T21:29:40.000Z (6 months ago)
- Last Synced: 2024-10-26T23:16:33.923Z (6 months ago)
- Language: Ruby
- Size: 254 KB
- Stars: 14
- Watchers: 4
- Forks: 0
- Open Issues: 1
-
Metadata Files:
- Readme: README.md
- Changelog: CHANGELOG.md
- License: LICENSE
- Code of conduct: CODE_OF_CONDUCT.md
Awesome Lists containing this project
README
# NeoRack - Taking Ruby's Rack into the Future
NeoRack, like Rack, provides [a specification](./SPEC.md) detailing how Ruby Servers and Web Applications interact.
Where Rack is based on the historical CGI specification, NeoRack looks to the future and aims to provide solutions for modern Web Applications.
## Evented, Blocking or Async?
The choice is yours.
[The NeoRack specification](./SPEC.md) is designed to force the underlying architecture into allowing you to choose the best approach for your needs.
## Backwards compatibility?
> "[All for the sake of momentum,](https://youtu.be/2F-0pKS3xgk?t=105)
>
> [I'm condemning the future to death,](https://youtu.be/2F-0pKS3xgk?t=105)
>
> [so it can match the past.](https://youtu.be/2F-0pKS3xgk?t=105)"
>
> - Aimee MannNeoRack applications are designed in a way that allows NeoRack to "host" or contain one or more Rack applications - this way, backwards compatibility can be achieved.
However, the Rack specification simply has too many limitations and it's making it hard for Ruby Web Applications to enjoy modern approaches and features.
Much has been written about this, [issues were already glaring at us more than 12 years ago](http://blog.plataformatec.com.br/2012/06/why-your-web-framework-should-not-adopt-rack-api/)... but backwards compatibility is alluring and momentum has its way.
Maybe the existing Rack design will prove to be better and NeoRack will fade away, much like [Rack-Next](https://github.com/Wardrop/Rack-Next), [The Metal](https://github.com/tenderlove/the_metal), and others. Maybe NeoRack will prove better, but still momentum will win.
But if we don't allow ourselves a clean slate and a fresh start - how would we ever know?
> [It's the question that drives us, Neo.](https://youtu.be/jXeF1rMkpQw?t=80)
>
> - The MatrixWhat if we took more than a decade of experience and wrote a specification designed for modern Web Applications?
Yes, new code wouldn't be able to use old code without accepting old limitations, or without porting it to the new specification - but what about new code? what would we be able to accomplish with if we implemented all the lessons we learned in the past?