rudof-project / rudof

RDF data shapes implementation in Rust
https://rudof-project.github.io
Apache License 2.0
40 stars 3 forks source link

Please follow SemVer versionning #194

Open MarcAntoine-Arnaud opened 1 month ago

MarcAntoine-Arnaud commented 1 month ago

I have updated my dependencies this morning it and its broken as the latest version is published as a patch version, which in an auto-update. But the public API has changed between 0.1.30 to 0.1.31.

So normally it was a 0.2.0.

In addition it maybe useful to use conventional commits with the ! to mention in every commit if the public API changed.

P.S.: usage of the conventional commit will enable the cocogitto usage to auto-generate changelog ;-)

labra commented 1 month ago

Thanks a lot...indeed, the other way I was talking with Ángel that we should look to the conventions that other projects follow for commit messages, and that's really something we should try to do.

About semantic versioning, that was our goal but I confess that at this moment, the API is probably in a flux and in fact something I would like to to is to clean it to hide most of the things and only expose the things that we consider necessary...in order to minimize breaking changes between versions.

By the way...what changes in the API were affecting you?

MarcAntoine-Arnaud commented 1 month ago

No problem, I just report back to improve open source code quality ;-)

The issue I have was with conforms method that is removed here: https://github.com/rudof-project/rudof/commit/1bc4155515b13edd24aa7a6f27501c1216802a9d#diff-2b061c6ff86917b2d5669b1a4f61ecd3a834ec9e6ab5d076910d66cf59a7ae0eL17 in a fix: and not fix!:.

In addition, I think some commit can be smaller, so it can be easiest to follow based on the commit history. Some good practice can be taken from FFmpeg https://www.ffmpeg.org/developer.html#Patches_002fCommitting Splitting renaming variable, refactor, new feature etc.

It's great to exercice on minor releases before passing to major to ensure stability of the project in some products... You have also some tools like https://github.com/obi1kenobi/cargo-semver-checks that can check if you have done some bad release. As Rust is correctly typed, it's easy to wrote tools like that ;-)