michielbdejong / ilp-node

Interledger Connector, used for https://github.com/interledger/interledger/wiki/The-Interledger-Testnet-of-Testnets-(IToT)
https://gitter.im/interledger/testnet-of-testnets
0 stars 0 forks source link

Update versioning schedule to immediately deprecate alpha version? #46

Closed michielbdejong closed 6 years ago

michielbdejong commented 6 years ago

According to https://github.com/interledger/interledger/wiki/Interledger-over-CLP#versioning, version 1 (which uses BTP version alpha), should be supported by all testnet nodes until end of June, and version 2, which uses BTP version 1, should be supported during all of 2018.

Therefore, from January to June, testnet nodes require software that supports both BTP version alpha and BTP version 1.

Both @emschwartz and @sharafian asked why we don't deprecate the alpha version of BTP with immediate effect, so I'm opening this issue to discuss that option.

michielbdejong commented 6 years ago

Answer, IMHO, definitely not. The versioning schedule is there to create a stable dev experience, and we agreed that that's important, and that we're underperforming on that goal.

I see two reasons why we might want to deprecate BTP-alpha earlier:

To cater for the needs of this last group of developers, I'll publish a BTP/1.0 <-> BTP/alpha proxy, which they can put in front of their deployed node, in case someone wants to peer with a them, and does not support BTP/1.0 yet. That way, even Interledger implementations that do not natively support BTP/alpha can still claim to be testnet-compatible, by pointing to that proxy.

emschwartz commented 6 years ago

I feel pretty strongly that we should deprecate BTP-alpha as soon as BTP/1.0 is decided upon and implemented.

Reasons:

  1. There are no existing users or implementations outside of our control that we need to support
  2. If we want multiple implementations it's far more complicated to implement two versions than just one
  3. It's more confusing to have two versions floating around
  4. The way we've been trying to develop these protocols is working under the assumption that at some point they'll be as difficult to change as IPv4 (rather than something that has a steady release cycle). Whether or not we want it to be this way, we have a closing window of time when we still can change things without massively breaking the ecosystem and once we say "we're satisfied for now", they'll probably stay roughly the same for 10+ years (assuming the project lasts that long)
michielbdejong commented 6 years ago

I'll think about it some more.

michielbdejong commented 6 years ago

OK, I thought about it, and this is what I came up with:

I'll add multiple endpoints to Amundsen, 4 per year. The first ones will be 17Q3 (the current version) and 17Q4 (the one based on https://github.com/interledger/rfcs/300). Initially, the 17Q4 endpoint will only support the 'auth' and 'ilp' protocols. Then we add protocols one-by-one as Q4 progresses. So this is not about BTP versioning, more about resetting the sub-protocols registry once every quarter.

Amundsen will support each protocol incrementally during its dev phase (the quarter its name refers to), and then in frozen form for at least an additional 3 quarters.

Interledger software can decide to only (ever) support the sub-protocols from the 17Q4 registry, that's fine. They don't need to support multiple versions, only Amundsen, as a bootstrap node, will do so, so that developers will have a guarantee that their demos will not start failing unexpectedly. If you build a 17Q4-based demo now, and it uses the testnet by bootstrapping from Amundsen's 17Q4 end-point, you can trust that it will not start failing until at least 1 October 2018.

The switch from 2 to 4 versions per year is for two reasons:

michielbdejong commented 6 years ago

Updated, see https://github.com/interledger/interledger/wiki/Interledger-over-BTP#versioning