All your versions are belong to us

Totally made up conversations about choosing Entity Framework version numbers

These conversations are a work of fiction. Any resemblance of to real Microsoft employees, either past or present, is purely coincidental.

EF1

A: So this Entity Framework thing we're shipping. What version is it?

B: It's version 1. Duh.

A: So the assemblies are stamped with 1.0?

B: Err. Well, no. The assemblies are in .NET Framework, so they are versioned as 3.5.

A: So this is really version 3.5? Isn't that weird for a v1?

B: I guess we shouldn't give it any version, since it's in .NET Framework.

A: Okay...

B: How about, "ADO.NET Entity Framework for .NET Framework 3.5 Service Pack 1"?

A: Catchy!



EF4

A: So this Entity Framework thing we're shipping. What version is it?

B. It's version 2. Duh.

A: So the assemblies are stamped with 2.0?

B: Err. Well, no. The assemblies are in .NET Framework, so they are versioned as 4.0.

A: So this is really version 4.0? Isn't that weird for a v2?

B: I guess we shouldn't give it any version, since it's in .NET Framework.

A: Err. We've already been telling customers that it's EF2.

B: Hmm.

A: Also, customers are referring to "ADO.NET Entity Framework for .NET Framework 3.5 Service Pack 1" as EF1.

B: What!? Can't we stop them? We gave it a catchy name for a reason!

A: Customers will be customers...

B: Fine. Fine. EF4 it is.

A: Four?

B: Yes. it's in .NET 4 so it's EF4.

A: But...



Code First

A: So this Entity Framework Code Only thing we're shipping. What's it called?

B: It's a preview right?

A: Yes.

B: And it's a preview of new features, right?

A: Yes...

B: So call it a "Feature Community Technology Preview". That's the catchy name we have for previews.

A: Why not just "Preview"?

B: Because otherwise people won't know it's for the community, uses technology, and has features.

A: Right. Got it. So it's "ADO.NET Entity Framework Community Technology Preview"?

B: Yep. Catchy and informative!

A: Hmm.

B: Hang on a minute. What is "Code Only" anyway?

A: Well it describes how only code is needed to specify database mappings.

B: But we have "Database First" and "Model First". Can't we have "Code First" too? It would be really catchy!

A: But that implies you must write the code first.

B. Yeah, but "Code First" is catchy!

A: But...okay, fine. What about the new DbContext API surface? How we refer to that?

B: You can't give it a name. New brands are bad.

A: How do we refer to it?

B: Call it "productivity improvements".

A: Nice! Catchy and it doesn't mean anything!



EF 4.1

A: So this Entity Framework thing we're releasing on NuGet. What version is it?

B: It's a minor release that builds on EF4, right?

A: Yep.

B: Then call the package EntityFramework and version it as 4.1.

A: Are you sure?

B: Yes. Doesn't it make sense?

A: No, no. It does make sense. I just wasn't expecting it to!



EF 4.2

A: I'm going to go out on a limb here. Can it be EF 4.2?

B: Ship-it!

A: I can't believe this is happening. It makes so much sense!



EF 4.3

A: Rinse and repeat?

B: Yep.

A: Awesome!



EF5

A: So this Entity Framework thing we're shipping. What version is it?

B. So it's aligned with .NET 4.5, right?

A: Yes.

B: So EF 4.5 then?

A: But it's a major release and semantic versioning says it should be 5.0.

B: Fine. Call it EF5, then. I miss the catchy names we used to have. But hey, we're living in a NuGet world!

A: Awesome!



EF6

A: EF6?

B: Yes.



EF Core 1.0

A: So this new Entity Framework thing we're building. What do we call it?

B: Entity Framework?

A: But it's a different code base and works differently. We've been calling it EF Lite.

B: No, no. New brands are bad. It must be called Entity Framework.

A: Won't that be confusing and send the wrong message?

B: Just bump the major version.

A: So, EF7?

B: Yep.

A: But... Okay.

B: No, wait. We just decided, everything Project K will now be "Core".

A: So, EF Core?

B: Yep. But you have to change the package name as well. Some people can't tell EntityFramework comes from Microsoft.

A: Microsoft.EFCore?

B: Not catchy enough. How about, "Microsoft.EntityFrameworkCore"?

A: So be it. By the way, you do realize we're not actually really ready for a 1.0 release?

B: Does it work.

A: Well, yeah. But there's a lot of stuff missing.

B: It must ship!



EF Core 1.1 - 3.1

A: Can we use semantic versioning and make sane version number changes?

B: Why would we not do?

A: I love new Microsoft.



EF Core 5.0

A: So, we're not calling ".NET Core" ".NET Core" anymore?

B: Nope.

A: What about EF Core.

B: It can stay the same.

A: Cool. What version number?

B: Everything in .NET 5 is version 5.

A: But EF Core isn't technically even part of .NET 5. It should be just EF Core 4.0.

B: Everything in .NET 5 is version 5.

A: Five might be confusing because we already had an EF5. And a six. And kind of a seven. Maybe EF Core 8?

B: Everything in .NET 5 is version 5.

A: Well, it given our history, it certainly could be worse!

