tendermint / coding

14 stars 10 forks source link

how to handle the difference in versioning a lib and its various binaries #16

Open zramsay opened 6 years ago

zramsay commented 6 years ago

from https://github.com/tendermint/basecoin/pull/223 :

So far our standard is to keep versioning information in version pkg. Should we have some standard for keeping the versions of binaries in there too? How do we distinguish binary versions from lib version?

IMO we should have the version/version.go used by a package and all its binaries (i.e. same version). the Makefile can append a commit if we want to get fancy

odeke-em commented 6 years ago

Thank you @zramsay! Paging the rest of the crew @adrianbrink @ebuchman @ethanfrey.

@zramsay in regards to your proposition

IMO we should have the version/version.go used by a package and all its binaries (i.e. same version). the Makefile can append a commit if we want to get fancy

In deed, I agree, and we currently have version/version.go populate the major, minor and plain versions https://github.com/tendermint/basecoin/blob/unstable/version/version.go#L1-L8

and then whatever tool can populate their specific commit hash as we've seen https://github.com/tendermint/basecoin/pull/230 and https://github.com/tendermint/basecoin/pull/223 do.

adrianbrink commented 6 years ago

Ethermint currently does that.

zramsay commented 6 years ago

ok great. Ideally each ethermint, basecoin, and tendermint (and other repos) all do it exactly the same way. That's what I'm aiming for with this repo. Same with https://github.com/tendermint/ethermint/issues/196, which is really an issue for this repo, since it applies to all repos

adrianbrink commented 6 years ago

The issue on ethermint is more to remind me to actually integrate that into the CI process. If you check the Makefile you can see which linters I am running: https://github.com/tendermint/ethermint/blob/develop/Makefile#L69 .

Essentially all of them besides linelength and I would recommend that we are using that as the standard. The problem so will be that initially it will be a ton of work to update 25,000 lines in tendermint core so that it builds against the linters.

adrianbrink commented 6 years ago

I've raised the issue on tendermint core as well: https://github.com/tendermint/tendermint/issues/616

ethanfrey commented 6 years ago

I just updated the makefile in cosmos Sdk to reflect repo versión and git commit in all binaries

ebuchman commented 6 years ago

What if a repo has multiple binaries? Do they all share a version? What if you make a breaking change to the lib but not that binary? What if you make a breaking change to the binary but not the lib? All share one version ?