aqueduct icon indicating copy to clipboard operation
aqueduct copied to clipboard

Support for nullsafety

Open vanlooverenkoen opened this issue 3 years ago • 21 comments

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

vanlooverenkoen avatar Nov 23 '20 19:11 vanlooverenkoen

Any update on this?

olfek avatar Feb 16 '21 17:02 olfek

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.

j4qfrost avatar Feb 22 '21 21:02 j4qfrost

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.

joeconwaystk avatar Feb 22 '21 21:02 joeconwaystk

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 avatar Feb 22 '21 23:02 j4qfrost

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.

j4qfrost avatar Feb 25 '21 10:02 j4qfrost

@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?

Reductions avatar Feb 25 '21 12:02 Reductions

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

j4qfrost avatar Feb 25 '21 12:02 j4qfrost

@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.

vanlooverenkoen avatar Feb 25 '21 12:02 vanlooverenkoen

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

Reductions avatar Feb 25 '21 12:02 Reductions

@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.

j4qfrost avatar Feb 25 '21 12:02 j4qfrost

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.

joeconwaystk avatar Feb 25 '21 14:02 joeconwaystk

Dart is a moving target.

hehehe

j4qfrost avatar Feb 25 '21 18:02 j4qfrost

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

j4qfrost avatar Feb 25 '21 19:02 j4qfrost

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 avatar Feb 26 '21 07:02 j4qfrost

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 avatar Mar 01 '21 11:03 j4qfrost

@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 avatar Mar 05 '21 07:03 j4qfrost

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 avatar Mar 08 '21 00:03 j4qfrost

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.

j4qfrost avatar Mar 17 '21 18:03 j4qfrost

@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

vanlooverenkoen avatar Mar 17 '21 18:03 vanlooverenkoen

@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.

j4qfrost avatar Mar 17 '21 18:03 j4qfrost

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

vanlooverenkoen avatar Mar 17 '21 18:03 vanlooverenkoen