-
-
Notifications
You must be signed in to change notification settings - Fork 206
Labels
type:metaNon-code issueNon-code issue
Description
New Issue Checklist
- I am not disclosing a vulnerability.I am not just asking a question.I have searched through existing issues.I can reproduce the issue with the latest version of Parse Server and the Parse Flutter SDK.To pick up a draggable item, press the space bar. While dragging, use the arrow keys to move the item. Press space again to drop the item in its new position, or press escape to cancel.
Issue Description
It seems we have an mistake in our support policy, which says:
To give developers time to upgrade their app to the newest Dart framework, previous Dart framework releases are supported for at least 1 year after their release date.
The end-of-support date needs to depend on how long a newer significant (=minor) release is available to give developers time to upgrade. Dart 3 has been released in May 2023. So we'd support Dart 2.19 until May 2024. That gives developers 12 months to upgrade.
mbfakourii
Metadata
Metadata
Assignees
Labels
type:metaNon-code issueNon-code issue
Activity
parse-github-assistant commentedon Sep 26, 2023
Thanks for opening this issue!
mbfakourii commentedon Sep 26, 2023
In my opinion, one year is too much time. If the developers are not interested in updating and using the new version, they can still use the old version of the package.
In my opinion, this policy also annoys the developers, it makes us unable to use new features for up to 1 year! And this actually slows down the development of the package.
mtrezza commentedon Sep 26, 2023
Can you give an example of a new feature that is not available because we still support Dart 2.19?
mbfakourii commentedon Sep 26, 2023
One of the new features of Dart 3 is Multiple returns, which allows us to have multiple output values in the function
Another point is that Flutter and Dart do not have a long lifespan and are developing and growing, I think they offer a new version almost every two weeks.
mtrezza commentedon Sep 26, 2023
The question is whether that impedes Parse SDK development, or it's just less convenient because it doesn't allow us to use the latest greatest Dart features when developing the SDK. For a developer who is using the Parse SDK this should be irrelevant as long as it's not affecting their own development. For Parse SDK maintainers that should be acceptable as long as it doesn't significantly increase maintenance effort.
We only care for breaking releases (minor releases in the Dart world), which currently seem to happen about every 4-5 months. We could think about reducing the support time from 12 to 6 months, if we can find real examples that show a significant increase in maintenance effort because of the 12 months support. Also, if you could find Dart adoption statistics of apps somewhere, and we see for example that in the Dart world, 80% of developers upgrade their app to the latest significant Dart release within n months, we can adapt our support policy.
mbfakourii commentedon Sep 27, 2023
In addition, it impedes development, it also prevents developers from using other packages that do not support versions below 3 !
For example, a package that does not support the version below Dart 3 cannot be in the same project as our package!
It is better to ask the question in the Dart repository.
Another thing is that all the packages that are currently available in Flutter packages, none of them support below 3! [1]
mtrezza commentedon Sep 27, 2023
Are you talking about app developers, and if yes, why would that be? If someone wants to use Dart 3, they can do it as the Parse SDK supports it.
mbfakourii commentedon Sep 28, 2023
I think I explained it wrong. For example, when a developer uses version
2.8
of Dart, in order to use a package that supports version3
and above, he must update himself, which is not a problem on the developers' side.But when we want to use a package in our package that supports version
3
and above, we encounter a problem in CI because it is not possible to use it in version2.8
or2.9
.If we skip from our CI and CI no longer checks the old versions below 3. When the developer adds our new version, he encounters a message that he should upgrade to the new version of Dart.
If the developer has secrets about using the old version of Dart, he can use the old version of our package!
And currently, most of the famous packages no longer support versions below
3
. If you check the pub.dev site, you will understand this!mtrezza commentedon Sep 30, 2023
Let's do a quick analysis.
There are two different aspects: "compatibility with Dart 3" vs. "required min Dart SKD version 3".
Looking at the packages listed on the overview page you linked we can see these min Dart SDK versions:
Let's take a look at the min SDK distribution:
This is a bimodal distribution. The first peak (2.18) are the "moderate speed adopters" which take about a year (Dart 2.19 was released in Jan 2023) to upgrade. The second peak (2.12) is most likely a deliberate choice to support older Dart versions, because all of these packages are well maintained. An interpretation of this could be that 45% of the most popular Dart and Flutter packages still support Dart 2.12 to reach a broader developer audience and to make life easier for developers.
Looking at the
firebase_core
package as an example: the min SDK was raised to2.18
in March 2023, but Dart 2.18 was released in August 2022. Developers had 9 month to upgrade their app, meanwhile they were able to upgrade the package with bug fixes and new features.The fundamental problem with increasing the min Dart SDK version fast is that the time a package maintainer takes to make their package "Dart 3 compatible" varies. If an app has 10 packages and only 1 package requires a min Dart SDK version of 3, then all other 9 packages must be Dart 3 compatible in order to upgrade to Dart 3. Otherwise the developer must look for alternative packages that already support Dart 3 (higher development effort), or cannot upgrade to use the latest release of that one package that requires Dart 3, which can be especially challenging if a release contains a critical bug fix.
The developer is between the front lines of package maintainers. The more rapidly we increase the min Dart SDK version, the more difficult we make life for developers who use the Parse Platform SDK. We need to strike a balance, and I would say from the data above that balance is somewhere between Dart 2.18 and 2.12.
mbfakourii commentedon Sep 30, 2023
Great analysis, I'm convinced, but what do you suggest? Is the support period the same as one year?
mtrezza commentedon Oct 1, 2023
In time terms:
That means that the Parse SDK's support policy of 1 year is already on the lower end of the range. Unless there is a critical reason - which we would evaluate on a per-case basis - I would keep it at 1 year.
What we could do now is to open a PR that removes Dart 18 support (it's already >1 year old) and fix the wording in the support policy, which is the original issue opened.
mbfakourii commentedon Oct 1, 2023
Yes, it is a good suggestion
mtrezza commentedon Oct 1, 2023
Would you want to do the honors? 🙂
33 remaining items