IntersectMBO / cardano-ledger

The ledger implementation and specifications of the Cardano blockchain.
Apache License 2.0
256 stars 158 forks source link

Babbage → Vasil #2849

Closed KtorZ closed 2 years ago

KtorZ commented 2 years ago

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 commented 2 years ago

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 commented 2 years ago

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

JaredCorduan commented 2 years ago

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.

JaredCorduan commented 2 years ago

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 :)

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 commented 2 years ago

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

rdlrt commented 2 years ago

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 🙂

dcoutts commented 2 years ago

@rdlrt It's a good question.

KtorZ commented 2 years ago

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 --> :confused:"

dcoutts commented 2 years ago

@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 commented 2 years ago

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 commented 2 years ago

@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:

gufmar commented 2 years ago

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

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.

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 commented 2 years ago

@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 commented 2 years ago

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 commented 2 years ago

I've made a CIP: https://github.com/cardano-foundation/CIPs/pull/274

Feedback would be most welcome!