stablekernel / aqueduct

Dart HTTP server framework for building REST APIs. Includes PostgreSQL ORM and OAuth2 provider.
https://aqueduct.io
BSD 2-Clause "Simplified" License
2.42k stars 280 forks source link

Support for nullsafety #917

Open vanlooverenkoen opened 3 years ago

vanlooverenkoen commented 3 years ago

With the null safety of dart landing in beta. Is there a timeline when this package will be migrated to nullsafety?

olfek commented 3 years ago

Any update on this?

j4qfrost commented 3 years ago

I've followed the dependency chain down and a lot of them are not nullsafe. If anyone is interested in starting a group to start migrating the libraries I would be down, I'll be starting on my own.

joeconwaystk commented 3 years ago

This was one of the things I was most excited about bringing to Aqueduct!

Unfortunately, as you can tell, we have no ability to invest resources in this project right now. We have tried a few different avenues in looking for help from Google, but the Dart team doesn't have the resources & budget to provide, either. With each major change to Dart and our inability to keep up, the likelihood of Aqueduct catching up is getting smaller and smaller. I am hanging on the off-chance there is a significant opportunity that changes Aqueduct's fortunes - but I don't realistically see that happening outside of funding specifically for Aqueduct, and that funding is greater than small donors can provide.

You can try the migration and forking Aqueduct for null safety, but I think it's much larger & robust framework than you might be expecting, and that migration will take considerable effort. Additionally, I am not sure Dart is really making headway as a language - it seems like it is easier to improve JS and other popular languages than it is for programmers to adopt Dart.

TLDR: Aqueduct was an amazing framework that I personally sunk thousands of hours into. The cost-to-benefit ratio of continuing the development of Aqueduct isn't attractive for Stable Kernel. Other languages and ecosystems are far more supportive for this type of framework.

j4qfrost commented 3 years ago

As someone who has become js-phobic, I think dart still has a good chance at overtaking nodejs and doubly so if Google actually focuses their efforts. Dart's tooling and flutter's native-centered approach make for cleaner development than React imo. Even despite Google's weak community support, the tech is still going strong.

I'm unemployed and bored, so I'll sink some time in. Starting with postgres first, since it's got the most generic usecase.

j4qfrost commented 3 years ago

https://github.com/stablekernel/postgresql-dart/pull/153 Took me longer than it should have, because I made some stupid unnecessary changes that caused side effects for some tests.

Reductions commented 3 years ago

@joeconwaystk Are you willing to transfer the aqueduct and all surrounding packages to a separet organization so we (the comunity) could maintain it and publish new versions?

j4qfrost commented 3 years ago

@Reductions it doesn't really need to be transferred, but someone needs to be on top of reviews to get the ball rolling.

vanlooverenkoen commented 3 years ago

@Reductions it doesn't really need to be transferred, but someone needs to be on top of reviews to get the ball rolling.

A transfer is not required but I think it is in the best interest of the community to move it to another organization.

Reductions commented 3 years ago

@j4qfrost @vanlooverenkoen A transfer is required as stablekernel is privatly owned company.

j4qfrost commented 3 years ago

@Reductions The license is still open source. It's not really required. It would just suck if they just revoked the license, though we could just fork the project. This is a digression though.

Some of the dependencies down the line are actually somewhat circular e.g. https://github.com/dart-lang/pubspec_parse depending on a package that is dependent on an older version of it, which makes it exceedingly hard to upgrade to nullsafe. Trying to find a suitable substitute.

joeconwaystk commented 3 years ago

Yes, you can fork the project - there are 188 forks already. The license is open source.

The primary challenge is that the "supporting cast" - documentation, website, CI/CD, etc. - would need to be replaced.

The other challenge is that Dart is a moving target - non-nullability will impact all of the packages we have in the ecosystem (Postgres, Aqueduct, safe_config, Codable, open_api, and password_hash) and the changes are going to be significant. It is potentially hundreds more hours of work - and that's for someone who has already been onboarded and trained on the codebase.

There is currently no plan to support or update any of Stable Kernel's Dart packages, but there are no plans to revoke licenses or delist packages. As unfortunate as it is, we are simply unable to find a way where continued investment in the Dart ecosystem is sustainable for us. I believe we have an internal meeting late next week to evaluate our options.

j4qfrost commented 3 years ago

Dart is a moving target.

hehehe

j4qfrost commented 3 years ago

For lack of a better place https://github.com/stablekernel/dart-isolate-executor/pull/10

j4qfrost commented 3 years ago

I've made PRs for all the dependencies except for password_hash which already appears to have a PR for nullsafety. Going to check in again sometime next week.

Oops missed openapi, I'll just let that sit too, I need a break.

j4qfrost commented 3 years ago

https://github.com/stablekernel/open-api-dart/pull/7 with this all aqueduct dependencies now have nullsafety PRs in review. Going to be a while until all the dev-dependencies get migrated. Crossing my fingers that there's enough inertia to keep maintenance going in the coming weeks. I highly doubt my PRs are optimal.

j4qfrost commented 3 years ago

@joeconwaystk checking in to see if you guys had that meeting.

The flutter team had an event yesterday. Hopefully that came up or will come up in the meeting if you haven't had it. Lol Flutter might actually avoid being sent to the Google graveyard.

j4qfrost commented 3 years ago

https://github.com/stablekernel/aqueduct/pull/955 This shit is no joke. The porting itself might take a week, but even after that validating that nothing broke is an entirely different issue. Once this does get migrated it'll probably be unstable for a while. Do you guys want this enough to help contribute?

j4qfrost commented 3 years ago

https://github.com/j4qfrost/aqueduct Whelp, I got all the tests to pass. Looks like the project is being sunsetted, so all the dependencies will be maintained on my end.

vanlooverenkoen commented 3 years ago

@j4qfrost will you publish this to pubdev. Under a aqueduct_community?

It should be better if @joeconwaystk passes the admin rights to the repo and pubdev dependencies

j4qfrost commented 3 years ago

@j4qfrost will you publish this to pubdev. Under a aqueduct_community?

It should be better if @joeconwaystk passes the admin rights to the repo and pubdev dependencies

I want to take the conversation with him to an email first. The sunset message alludes to some of the reasons why Stable Kernel didn't opt immediately for a community transition, and I want to write a personal thank you.

vanlooverenkoen commented 3 years ago

Alright perfect. Keep us posted :) thanks for your great effort already