Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Define versioning scheme #36

Open
cornelius opened this issue Oct 19, 2018 · 6 comments
Open

Define versioning scheme #36

cornelius opened this issue Oct 19, 2018 · 6 comments
Labels
open sourcing Task related to setting up the open source project

Comments

@cornelius
Copy link
Member

The software needs to be versioned and we need to agree on a scheme how to do that. While it's fun to debate the millions of possible schemes we should not overthink this and come to a practical solution.

It probably is helpful if the version expresses compatibility expectations in some way so users can tell from the version number what they need to do when updating, e.g. using the patch level to indicate a compatible change which is safe to upgrade, the minor version for new features which keep compatibility, and the major version to indicate breaking changes.

There are various ways how compatibility can be broken, e.g. protocol changes, configuration changes. What is most important to consider for the user here?

@cornelius cornelius added the open sourcing Task related to setting up the open source project label Oct 19, 2018
@scravy
Copy link
Member

scravy commented Oct 19, 2018

Another thing which I think we should talk about and finalize in an ADR is how we want to deal with soft forks, hard forks, etc. That is also the ultimate versioning.

There are BIPs about versioning and the like in bitcoin:

Also there are more strings attached. As we are starting over we do not have any needs for all the checks and feature negotiations in the protocol which we want to always include by default. We have a good change to get rid of some legacy stuff which we don't need to carry around.

An interesting discussion by bitcoin about breaking user space and to what extent to keep compatibility in RPC commands.

There's the following versioning / interface items IMHO:

  • RPC Interface
  • ZMQ Interface
  • P2P Interface
  • Blockchain Protocol / Layout
  • BIP activation checkpoints
  • Internal API
  • what to do with libbitcoinconsensus

Regarding P2P interface and blockchain version bits I'd vote for starting over. As for versioning in general, as long as the network goes permissioned I think we can go 0.x, once we open to the public we should go 1.x. I realize that bitcoin is still 0.x, but come on, in reality everybody thinks about "bitcoin 16", "bitcoin 17" etc

@cornelius
Copy link
Member Author

One more aspect is if we want to reflect the upstream version somehow in our versioning scheme.

@Gnappuraz
Copy link
Member

@cornelius I'd say we want to mention it in the changelog whenever we merge from upstream but I would not tight ourselves to their versioning, we are our own project at the end and even if we take huge contributions from bitcoin we still wanna retain independence and flexibility to arbitrarily deviate from it.

@mergeable
Copy link

mergeable bot commented Nov 29, 2018

There has not been any activity in the past month. Is there anything to follow-up?

1 similar comment
@mergeable
Copy link

mergeable bot commented Dec 29, 2018

There has not been any activity in the past month. Is there anything to follow-up?

@mergeable
Copy link

mergeable bot commented Jan 20, 2019

There has not been any activity in the past 10 days. Is this still active?

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
open sourcing Task related to setting up the open source project
Projects
None yet
Development

No branches or pull requests

3 participants