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

Babbage → Vasil #2849

Closed
KtorZ opened this issue Jun 7, 2022 · 15 comments
Closed

Babbage → Vasil #2849

KtorZ opened this issue Jun 7, 2022 · 15 comments

Comments

@KtorZ
Copy link
Contributor

KtorZ commented Jun 7, 2022

Hi, just a small silly thing but, before we cut off the final release, shall we consider a massive sed "s/Babbage/Vasil" across the entire ledger, consensus, networking and cardano-node code bases?

I reckon the decision to name it Vasil came after the work on Babbage started, but I can't help thinking that in weeks and months from now, it'll all be very confusing to talk about "Babbage/Vasil" all the time. It's a bit silly, but it's also quite easy to do and shall happen before the final release.

Thoughts :/ ?

@ch1bo
Copy link
Contributor

ch1bo commented Jun 7, 2022

AFAIK only the hard fork event is called "Vasil" but the Ledger era very much is intended to stay "Babbage", where the next era has been discussed to start with "C".

@KtorZ
Copy link
Contributor Author

KtorZ commented Jun 7, 2022

That's kind of my point. With all the communication that happened around this, I think the era should also be named Vasil 😶. Otherwise in few months from now, only Babbage will remain.

@JaredCorduan
Copy link
Contributor

JaredCorduan commented Jun 7, 2022

No, the era should not be renamed to match the name of the hard fork. We were striving for time based releases, and I still want to keep that hope alive.

@KtorZ KtorZ closed this as completed Jun 7, 2022
@KtorZ KtorZ closed this as not planned Won't fix, can't repro, duplicate, stale Jun 7, 2022
@JaredCorduan
Copy link
Contributor

It can be hard for me to know what to make of the 😕 emoji often times. I don't know if it is more "dissatisfaction" or "I don't know what you are talking about" @KtorZ :)

The idea behind the time based releases, at least how I understood them, was that we would limit the dates when we could hard fork to: February, June, and October. When a named feature set, such as the Babbage era, is ready, we introduce it at the next available time. I had imagined the hard fork names to be things like "June 2022", but I think it is wonderful that we are honoring Vasil Dabov. What I don't want to happen is for folks to conflate feature sets with dates before we are ready. I have just started writing the next ledger spec, calling it the Curry era, and I definitely do not want that name falsely associated with any dates that we are not yet comfortable with.

@dcoutts
Copy link
Contributor

dcoutts commented Jun 7, 2022

Babbage is a feature set. Vasil is a release date. We can fix features xor release dates. We cannot fix both.

@rdlrt
Copy link

rdlrt commented Jun 7, 2022

So.. how do we represent this (what seems to be internal decision) to new users onboarding to the platform? It feels a lot like decisions made on-the-go without documentations or any reasoning - which might be to increase the pace, but I'd think someone somewhere needs to start documenting these decisions/changes with reasons - as community is not privy to such conversations 🙂

  • What era will we be in? Babbage/Alonzo/Vasil/...?
  • How will start of an era be differentiated between forks (and looking back, were any of Allegra/Mary/Alonzo not eras but only fork names)
  • if there are two HF within an era, do we refer to both using same era, but with different forks?

@dcoutts
Copy link
Contributor

dcoutts commented Jun 7, 2022

@rdlrt It's a good question.

@KtorZ
Copy link
Contributor Author

KtorZ commented Jun 7, 2022

It can be hard for me to know what to make of the confused emoji often times. I don't know if it is more "dissatisfaction" or "I don't know what you are talking about" @KtorZ :)

Just for the sake of clarification: it was more of a "I understand, I acknowledge the situation, and I am just sad that it turned out like this --> 😕"

@dcoutts
Copy link
Contributor

dcoutts commented Jun 7, 2022

@rdlrt Yes this is complicated. Historically it has usually been the case that a HF has corresponded to a change in the ledger era, but this is not in principle a 1:1 relationship. We did have one HF within Byron, it was actually the second HF that got us from Byron -> Shelley.

The ledger rules certainly have a notion of era, but this does not necessarily have to correspond to HFs.

@rdlrt
Copy link

rdlrt commented Jun 7, 2022

Thanks for the reply @dcoutts , I understand but ... not wiser, as am still not clear if I can answer previous questions 😄 , it sounds like it would have to be handled via explicit comms/support page to redirect to, while verbiage when talking about forks/eras might need to be consistent to avoid confusion (can prolly easily whip up a page with start of each era - assuming that's atleast considered to always start from a fork)

@JaredCorduan
Copy link
Contributor

@rdlrt - I'll give my take on things, but just know that this is my admittedly biased view. I'd love for everyone to come together to make the language easy and clear for everyone.

In the ledger code, we needed a way of abstracting logic so that we could balance reducing code duplication and supporting old logic. For this we introduced a notion of "era", which we took from the cardano roadmap right after we finished the Shelley features (Shelley was an entire re-write, a new codebase, but after that we wanted to re-use code for subsequent eras). We retroactively called the Shelley features the "Shelley Era", but this turns out to cause confusion, since after that the naming diverges from the roadmap (Allegra, Mary, Alonzo, and Babbage are all a part of "Goguen"). When we named the "Allegra" era in the ledger code base, we definitely did not intend this to be a public facing thing, we thought it was just a variable name in our codebase. But inevitably the reach grew, we used the name for the specs, and GitHub lables, etc. And then it ended up on social media (which is fine, it just surprised some of us).

In Alonzo, we executed the first so called "intra-era hard fork", meaning a hard fork which does not change the era (remember, this is a very specific detail of how the ledger code is organized) but does bump the major protocol version and change the semantics. See this table: https://github.com/input-output-hk/cardano-ledger/wiki/First-Block-of-Each-Era. This is a technique that we can use for very focused and small changes.

After Alonzo, we decided to try time based releases, as I described above. And as Duncan said above, "we can fix features xor release dates. We cannot fix both". Using the same name for both seemed to some of us as only adding further confusion.

So the language I use is:

  • I refer to new groups of ledger features as "eras", which regrettably is also a name used on our roadmap for larger groups of features. Since Alonzo, we were thinking of keeping up the convention of naming them in A, B, C... order, and after folks who walk the line between math and computer science. Maybe we should make a CIP? So with this, the next ledger era will be Babbage.
  • When a ledger era is near enough to being complete, we can release it on one of the hard fork dates. Naming these dates is one way that we have chosen to honor people.
  • When I need to refer to the semantic differences relating to an intra-era hard fork, I talk about the major protocol version.

@gufmar
Copy link

gufmar commented Jun 7, 2022

Please excuse me if I come here in such a Github issue with a somewhat more general attempt to shed light on the question.

Already on https://roadmap.cardano.org/ there is a double terminology. In the menu

  • Byron
  • Shelley
  • Goguen
  • Basho
  • Voltaire
    are described as "Phases". However, further down in the text, as well as many other pages, there is talk of Era's.

At https://input-output-hk.github.io/adrestia/cardano-wallet/design/Eras an attempt is made to explain the difference between Phases and Era's. It seems to make sense to me to call the major roadmap areas phases, especially because they can and actually run in parallel in their development. However, it then says that Era's are related to (exactly) one Hardfork event each. Is that so?

On https://input-output-hk.github.io/cardano-node/cardano-api/lib/Cardano-Api.html beside the already known further Era's are defined.

  • Byron (Ouroboros classic, federated, hasGenesis)
  • Shelley (Ouroboros praos, staking, hasGenesis)
  • Allegra (token locking, metadata)
  • Mary (multi-assets, NFTs)
  • Alonzo (Plutus, smart contracts, hasGenesis)
  • Babbage (aka Vasil: plutus2, pipelining)

In particular, it says at https://input-output-hk.github.io/cardano-node/cardano-api/lib/Cardano-Api.html#g:2 that all era's after Shelley are so-called ShelleyBased eras. This seems strange to me, because Alonzo - as THE SmartContract enabler - should clearly belong to Goguen.

From a previous comment

@ch1bo where the next era has been discussed to start with "C".

it seems that at some point after Allegra and Mary there was the decision to name further Era's to the ABC after mathematicians. Alonzo, Babbage, ... Conway (game theorist) ?
It looks that this decision was not known to another group, which made the decision to name the upcoming June/July hardfork after Vasil (a recently deceased Ambassador).

I certainly don't manage to find a clear line and answer here.
This has been very difficult to impossible for us outsiders for a long time anyway. In any case, some such internal ambiguities are becoming also effective in the public eye. This can be seen, for example, if you google "Cardano era" or "Cardano hardforks". (https://www.google.com/search?q=cardano+eras)

In addition:
During the preparation for Alonzo there were so-called stages (red, blue, purple, ...) which were purely testnet related, but also made it into the public news. To a normal community member it will probably create additional ambiguity.

In parallel there are completely different names for the different Ouroboros development levels and research branches (classic, BFT, praos, genesis, crypsinous, chronos) . Somehow but not exactly they are also related to hardforks and/or era's.

At this point, although not a real problem, it should also be mentioned that there are new protocol versions in the node-config for some hardforks. Currently MaxKnownMajorProtocolVersion: 2. But the Cardano-node versionnumbers always stay at 1.xx since the Shelley launch.

I would find it very helpful if one tries to give the terms (phase, era, stages, hardfork, version, ...) as well as the respective names (Shelley, Alonzo, ...) a completely clear structure and meaning. If there should be additional names for marketing or commemorative occasions, I am not against it. But I am afraid that these can hardly or not at all be "formalized". So it might be better to keep this separate, and not confuse it with the technical definitions.

@JaredCorduan
Copy link
Contributor

@gufmar I think you and I were writing at the same time. :) What you wrote all makes sense to me, and I hope that what I wrote clarifies things a bit more. I have a few random comments:

Shelley (Ouroboros praos, staking, hasGenesis)

Technically, at least in the codebase, a lot of us refer to the consensus mechanism in Shelley as "transitional Praos". Since it includes the overlay schedule which provided the smooth transition from a federated system to one where block production was decentralized (ie the d parameter). The Babbage era removes the "transitional" parts, see Praos. This is pretty down in the weeds, though.

all era's after Shelley are so-called ShelleyBased eras

Shelley was such a drastic re-write, that everything afterwards has a lot in common with each other, including Alonzo.

@rdlrt
Copy link

rdlrt commented Jun 7, 2022

Thanks @JaredCorduan for all the details, appreciate it.

Your suggestion about CIP seems like the best way ahead to my eyes (as you can see from links shared by @gufmar , it's currently all over the place - having CIPs for next era , as well as documenting a short summarised table for retrospective phase/era/fork differentiation seems like a good outcome)

@JaredCorduan
Copy link
Contributor

I've made a CIP: cardano-foundation/CIPs#274

Feedback would be most welcome!

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

6 participants