parse-community / Parse-SDK-Flutter

The Dart/Flutter SDK for Parse Platform
https://parseplatform.org
Apache License 2.0
575 stars 188 forks source link

why parse_server_sdk updated and parse_server_sdk_flutter not updated #816

Closed catalunha closed 1 year ago

catalunha commented 1 year ago

New Issue Checklist

Issue Description

I'm making an effort to study parse_server_sdk in search of a clearer understanding to contribute to an issue. But for now I'm just going to raise one more issue. My contribution is for the next moment. Sorry.

Why was parse_server_sdk 3.1.3 updated to 3.1.9 and this was not updated in parse_server_sdk_flutter: 3.1.3 ?

Because they are the same code base for parse.

parse-github-assistant[bot] commented 1 year ago

Thanks for opening this issue!

RodrigoSMarques commented 1 year ago

parse_server_sdk is the basis of the SDK.

parse_server_sdk_flutter internally uses parse_server_sdk.

Improvements can be made to parse_server_sdk, without having to update parse_server_sdk_flutter, as it uses semantic versioning.

parse_server_sdk is pure dart, without references to platform (mobile, web, desktop). parse_server_sdk_flutter, uses plugins to be used on platforms.

Previously, both packages were updated keeping the same version number, but today this is no longer necessary.

RodrigoSMarques commented 1 year ago

@mtrezza

Since this issue is open, I'll make a comment.

I noticed that some improvements were made available in the SDK and classified in the changelog as a bugfix e not a feature.

There was a version increment in the patch and not in minor.

If there is a version increase in the minor of parse_server_sdk, remember that you have to update the version in parse_server_sdk_flutter.

catalunha commented 1 year ago

Thanks @RodrigoSMarques I verified that all implementations of parse_server_sdk 3.1.3 to 3.1.9 also reflected in parse_server_sdk_flutter 3.1.3 without any version changes.

I understand your explanation and agree with it.

However, the constant update of the parse_server_sdk (Published 19 hours ago) encourages the community to use the Parse Serve solution on Dart/Flutter. And the lack of an update on parse_server_sdk_flutter (Published 5 months ago) somewhat bothers some users.

It would be interesting to put a reminder about this and link to parse_server_sdk at the beginning of the parse_server_sdk_flutter documentation. I believe it would help with the overall marketing of the products.

catalunha commented 1 year ago
Important alert @RodrigoSMarques Considering what is available at https://semver.org/ Here are some observations under your careful analysis. Accessing: https://pub.dev/packages/parse_server_sdk/changelog current changelog recommended changelog Comments
3.1.5 3.2.0 A feature. Add upload / download cancel and progress callback for ParseFile
3.1.6 3.3.0 A feature. Add and, nor operators in QueryBuilder
3.1.7 3.4.0 A feature. Add include option to getObject and fetch
3.1.8 3.4.1 It was a fix. The ParseObject.toJson() already existed but it is not working.
3.1.9 3.4.2 It was a fix. The include option to getObject feature has been released but is not working.

Your last sentence: "If there is a version increase in the minor of parse_server_sdk, remember that you have to update the version in parse_server_sdk_flutter."

Refers to a minor update of parse_server_sdk will also reflect a minor update to parse_server_sdk_flutter. This is it ?

Or would they be completely independent? Remembering what I said about the reminder to link between one and the other.

mbfakourii commented 1 year ago

I bumped the Flutter version @RodrigoSMarques But isn't it better to use any for the Dart version in Flutter?

mtrezza commented 1 year ago

Thanks for the discussion.

But isn't it better to use any for the Dart version in Flutter?

No. A major version increment means a breaking change. That breaking change cannot transpire into the Flutter package without it also incrementing its major version, otherwise apps will break.

However, the constant update of the parse_server_sdk (Published 19 hours ago) encourages the community to use the Parse Serve solution on Dart/Flutter.

Could you explain?

And the lack of an update on parse_server_sdk_flutter (Published 5 months ago) somewhat bothers some users.

Why? Where did you read this feedback from "some users"?

I noticed that some improvements were made available in the SDK and classified in the changelog as a bugfix e not a feature.

True, I didn't always consider to check whether the version number increment is according to the commit type. That's a manual step we need to do only for the Parse Flutter SDK, all our other SDKs already use auto-release. Once we have auto-release here, this issue won't occur anymore as version increment and change log entry will be automated.

However there isn't much harm (other than an incorrect changelog) when misclassifying a bug for a feature or vice versa. So I don't believe any historic corrections are necessary. It would only be a problem if there was a breaking change that had been released as minor or patch version instead of major version.

The Flutter package should reference the latest dart package up to incl. minor versions, so bumping the dart reference in the flutter package should only be necessary for a major version increment of the dart package.

Going forward, we'll take an extra look at the matching of commit type and version increment. Thanks for pointing this out.

catalunha commented 1 year ago

@mtrezza Not that you need to be updating all the time.

But once a colleague commented that packages without updates for more than 3 or 6 months is not a good thing. But it is not necessarily a rule.

I can learn from you new concepts about this. You can correct me if necessary.

catalunha commented 1 year ago

Thanks @mtrezza I just commented in an attempt to help or raise other important points to keep the product in line. Let's walk... we can close

mtrezza commented 1 year ago

But once a colleague commented that packages without updates for more than 3 or 6 months is not a good thing.

That's a weak and possibly misleading indicator. There are packages in the ecosystem that have matured over years and are so stable that they don't require many updates. A better indicator for package maintenance is how long there are reported issues without a fix and how many issues there are.

I good package index would take that into account when calculating a maintenance score for a package and ranking search results.

A lower release count is also a symptom of the dart/flutter versioning convention to use wildcards for dependency versions, unlike other ecosystems where it's more common to point to a specific version for reproducibility. So fewer releases seems to be an intended effect, as it doesn't require the parent package to release a new version only because one of its dependencies had a minor or patch version release. In our case it just happens that the child and parent package are in the same repository.

Thanks again for raising this issue.

catalunha commented 1 year ago

I fully agree. It's a glass half full or half empty.

RodrigoSMarques commented 1 year ago

Important alert @RodrigoSMarques Considering what is available at https://semver.org/ Here are some observations under your careful analysis. Accessing: https://pub.dev/packages/parse_server_sdk/changelog

current changelog recommended changelog Comments 3.1.5 3.2.0 A feature. Add upload / download cancel and progress callback for ParseFile 3.1.6 3.3.0 A feature. Add and, nor operators in QueryBuilder 3.1.7 3.4.0 A feature. Add include option to getObject and fetch 3.1.8 3.4.1 It was a fix. The ParseObject.toJson() already existed but it is not working. 3.1.9 3.4.2 It was a fix. The include option to getObject feature has been released but is not working. Your last sentence: "If there is a version increase in the minor of parse_server_sdk, remember that you have to update the version in parse_server_sdk_flutter."

Refers to a minor update of parse_server_sdk will also reflect a minor update to parse_server_sdk_flutter. This is it ?

Or would they be completely independent? Remembering what I said about the reminder to link between one and the other.

Yes. If there is a change in the minor of the parse_server_sdk, the parse_server_sdk_flutter must be updated to use the new minor.

This way, any new minor from parse_server_sdk will also generate a new minor from parse_server_sdk_fluter.

If this is not done, parse_server_sdk enhancements will not be available in parse_server_sdk_flutter

RodrigoSMarques commented 1 year ago

I bumped the Flutter version @RodrigoSMarques But isn't it better to use any for the Dart version in Flutter?

Using any is not recommended.

An ideal solution would look like this.

parse_server_sdk: '>=3.1.0 <4.0.0'

That way parse_server_sdk_flutter will always use the latest version parse_server_sdk available.

But that way, the Flutter version would never have a new minor.

mtrezza commented 1 year ago

We are currently using the caret to specify the version.

parse_server_sdk: ^3.1.2

is the same as:

parse_server_sdk: '>=3.1.2 <4.0.0'

That means that the Flutter package doesn't need a version increment until the dart package reaches 4.0.0.

RodrigoSMarques commented 1 year ago

We are currently using the caret to specify the version.

parse_server_sdk: ^3.1.2

is the same as:

parse_server_sdk: '>=3.1.2 <4.0.0'

Truth. I made a mess.

mtrezza commented 1 year ago

No worries, all these different wildcard syntaxes can be hard to track sometimes. I think we're good here; just need to be more careful when it comes to aligning the commit type (feature / bug) with the version increment, which catalunha pointed out correctly. Thanks everyone for the discussion.