Skip to content
This repository has been archived by the owner on Mar 18, 2021. It is now read-only.

Support for nullsafety #917

Open
vanlooverenkoen opened this issue Nov 23, 2020 · 21 comments
Open

Support for nullsafety #917

vanlooverenkoen opened this issue Nov 23, 2020 · 21 comments

Comments

@vanlooverenkoen
Copy link

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

@olfek
Copy link

olfek commented Feb 16, 2021

Any update on this?

@j4qfrost
Copy link

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.

@itsjoeconway
Copy link
Contributor

itsjoeconway commented Feb 22, 2021

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
Copy link

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
Copy link

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

@Reductions
Copy link
Contributor

@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
Copy link

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

@vanlooverenkoen
Copy link
Author

@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
Copy link
Contributor

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

@j4qfrost
Copy link

j4qfrost commented Feb 25, 2021

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

@itsjoeconway
Copy link
Contributor

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
Copy link

Dart is a moving target.

hehehe

@j4qfrost
Copy link

For lack of a better place stablekernel/dart-isolate-executor#10

@j4qfrost
Copy link

j4qfrost commented Feb 26, 2021

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
Copy link

j4qfrost commented Mar 1, 2021

stablekernel/open-api-dart#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
Copy link

j4qfrost commented Mar 5, 2021

@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
Copy link

j4qfrost commented Mar 8, 2021

#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
Copy link

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
Copy link
Author

@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
Copy link

@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
Copy link
Author

vanlooverenkoen commented Mar 17, 2021

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

Sign up for free to subscribe to this conversation on GitHub. Already have an account? Sign in.
Labels
None yet
Projects
None yet
Development

No branches or pull requests

5 participants