Closed CAMOBAP closed 2 years ago
@CAMOBAP mnconvert.jar already provides version information in command line.
@ronaldtse at this moment latest mnconvert.jar is v1.13.0, latest mnconvert-ruby
is v2.0.0 (because we did breaking changes)
Let's say the next release of mnconvert.jar will be v1.14.0, or v1.13.1, how should we change our mnconvert-ruby
version?
You can use v2.X.Y.Z to the vX.Y.Z of mnconvert.jar.
This implicitly creates restrictions to mnconvert.jar:
mnconvert-ruby
. Let's say we will need to release a patch with v2.1.13.1, and next release of mnconvert.jar
for v1.13.1
will lead to conflictMy approach will correctly handle all those cases and make releases of mnconvert.jar
and mnconvert-ruby
really independent.
A single downright of this approach that mnconvert.jar
and mnconvert-ruby
but if we decided to keep them separated ( in separate repos) that's fair enough that they may have different versions
@CAMOBAP The previous approach was that mnconvert-ruby
followed mnconvert.jar
versioning with a patch version that makes a difference.
e.g. mnconvert.jar
v1.2.3 is used in mnconvert
gem in v1.2.3.0. Updates to mnconvert
gems are represented as X in v1.2.3.X.
The recent breaking change broken this convention because the Metanorma gemspec did not restrict usage of versions related to mnconvert
gem, without regard to mnconvert.jar
.
I'm fine to have the versions independent, but the original intent of mnconvert
gem is PURELY for including/representing mnconvert.jar
.
If the gems have independent versions then perhaps they should not be named identically.
@ronaldtse I agree with every line which you are writing above.
And next time for such *-ruby
wrappers I am sure that we should never use argument-based methods like run(arg0, arg1, arg2)
but only keyword arguments run(arg0:, arg1:, arg2:)
I also really like the idea of synchronized versions.
But what should we do in this situation to synchronize versions back? I see only one option:
mnconvert.jar
with version 2.0.1
, and enable back automation release workflow@CAMOBAP we can also revoke the published version 2 gem if we want to sync.
@ronaldtse yes we can, and because we are probably a single user of this gem, I hope it will not affect anyone, metanorma-iso isn't released yet
There is no perfect choice at all, let me compare all approaches:
mnconvert
gem must PURELY for representing mnconvert.jar
mnconvert-ruby
mnconvert-ruby
will wait to be released after upstream mnconvert.jar
releasemnconvert.jar
to release pending changes in mnconvert-ruby
mnconvert-ruby
version and mnconvert.jar
version are the samemnconvert-ruby
too, and if need do MAJOR release of mnconvert.jar
mnconvert
gem and mnconvert.jar.
have completely independent release strategiesmnconvert-ruby
anytime manually (via CI or by pushing tag)mnconvert.jar
release still can trigger mnconvert-ruby
mnconvert
gem to have its own releases but only for PATCH action (x.y.Z
, only for Z
)mnconvert.jar
to never use Z
componentmnconvert-ruby
mnconvert-ruby
was released and jar version != gem versionNotes:
mnconvert
, mnconvert-ruby
as a monolith, the first scenario (with fake releases) should not be ok metanorma->packed-mn->{choco,snap,brew}
. But there is an impossible case when packed-mn
will introduce any breaking changes@ronaldtse @Intelligent2013 how do you think about this?
I still thinking, and cannot select between any it right now...
@ronaldtse @Intelligent2013 please share your vision
@CAMOBAP
the main application is mnconvert
. mnconvert-ruby
is just wrapper for mnconvert
. In case of issue in business logic I need to know the version that installed in user environment, i.e. should be compliance between mnconvert
and mnconvery-ruby
versions to determine it. For instance, 1.5
vs. 1.5.0
or 1.5.1
is ok for me.
So I think 3rd approach is preferrable.
Agree with @Intelligent2013 , thank you @CAMOBAP !
Great! Action items:
https://github.com/metanorma/metanorma-iso/pull/563 - created
closing this one
Idea:
cc @ronaldtse