←back to thread

488 points levkk | 1 comments | | HN request time: 0s | source

Hi everyone,

I've been "funemployed" for a few months and with all that free time and idle hands I wrote a full web framework (think Rails, not Flask) for Rust.

It's boring old MVC, has its own ORM, templates, background jobs, auth, websockets, migrations and more. If you're keen but don't feel like rewriting your app in a different language, Rwf has a WSGI server to run Django (or Flask) inside Rust [1], letting you migrate to Rust at your own pace without disrupting your website.

I think Rust makes a great prototyping and deploy straight to production language. Now it has yet another framework for y'all to play with.

Cheers!

[1] https://levkk.github.io/rwf/migrating-from-python/

Show context
imiric ◴[] No.41918890[source]
After years of working with web frameworks in Python and Java, and then picking up Go along the way, I've come to appreciate Go's approach much more. That is, with a rich and capable standard library, you really don't need traditional frameworks. Need an HTTP server, router, etc.? Use stdlib. Need templates? Use stdlib. Need an ORM? You don't, but you may want to consider a small 3rd party query builder library of your choice. And so on.

This avoids depending on a complex framework that may or may not exist in a few years, improves security by minimizing the amount of 3rd party dependencies, keeps the learning curve low for any new developers joining the project, and is more flexible and easier to maintain. I don't have experience with Rust, and judging by the comments here, web frameworks might still be useful for it. Which is a shame, since the batteries included stdlib approach is far superior IME.

Anyway, I don't want to shoot down your efforts. Congrats on the launch and good luck!

replies(13): >>41918959 #>>41919110 #>>41919336 #>>41919738 #>>41919823 #>>41920300 #>>41920442 #>>41921397 #>>41922584 #>>41923056 #>>41923336 #>>41924884 #>>41924982 #
metadaemon ◴[] No.41919110[source]
Not needing an ORM made me laugh
replies(2): >>41919353 #>>41920132 #
sunrunner ◴[] No.41919353[source]
Why is that?
replies(2): >>41919390 #>>41927294 #
stickfigure ◴[] No.41919390[source]
Your programming language has objects. Your database has relational tables. By definition, you need to map between the two.

You can write your own or you can use someone else's. Those are the two choices.

replies(7): >>41919421 #>>41919544 #>>41919839 #>>41920270 #>>41920443 #>>41920482 #>>41921770 #
BlarfMcFlarf ◴[] No.41919421[source]
You can map objects to db updates, and map query results to objects. Neither of those objects needs to have a mapping to actual relations, like how ORMs insist on.
replies(2): >>41920405 #>>41920435 #
threeseed ◴[] No.41920405[source]
Only for basic objects.

The minute you add relationships your approach becomes unusable.

There is a reason ORMs have persisted for over 30 years.

replies(1): >>41920461 #
wtetzner ◴[] No.41920461[source]
No it doesn't. Why would relationships matter? You handle the relationships in SQL queries, and just copy query results to structs.
replies(2): >>41920622 #>>41920907 #
stickfigure ◴[] No.41920622[source]
> copy query results to structs

Congratulations, you've invented an ORM.

replies(3): >>41920796 #>>41920891 #>>41994227 #
1. wtetzner ◴[] No.41994227[source]
This is clearly not what anyone means when they say they don't want an ORM.

An ORM library maps an entire relational database to a graph of objects, with the intention of abstracting away the relational database. Copying query results to structs doesn't actually do any of that.

https://en.m.wikipedia.org/wiki/Object%E2%80%93relational_ma...