nforgeio / neonKUBE

Public NeonKUBE Kubernetes distribution related projects
https://neonkube.io
Apache License 2.0
78 stars 13 forks source link

Distinct neonDESKTOP and neonLIBRARY release versions #939

Closed jefflill closed 4 years ago

jefflill commented 4 years ago

While working on #937, I realized that it's probably time for us to rethink how we're versioning and doing releases.

History

Up until now, the source repo is used for building and releasing the **Neon.* libraries, neon-cli, neonDESKTOP** and implicitly, the neonKUBE cluster. We've been releasing these together using a single version number with the libraries being published to nuget with the library documentation being published to https://doc.neonkube.com, and we also publish other build artifacts including client setup and the library help CHM to this GitHub repo as releases.

This single version scheme has worked OK so far, but only because we haven't started doing public preview releases of neonKUBE. Once we do that, and people start having things like neonDESKTOP installed on their workstations, we won't want to release a new version of neonDESKTOP (and perhaps auto-update users) just because we updated an unrelated library like Neon.Temporal.

Our neonKUBE versioning strategy to date has also been confusing. The original idea, going way back to the neonHIVE days, was to allow a user deploying a cluster to customize the versions of various components like Docker, Kubernetes, Istio, Help, and the Kubernetes Dashboard via KubernetesOptions in the cluster definition. We've decided that allowing this is a really bad idea from a testing and support perspective: way too many combinations of components.

Also what's totally lacking right now, is a way to describe the version a deployed cluster. Say we just deployed a cluster. We could say it's running some version of Kubernetes, say 16.0, but what if we've added new stuff to neonKUBE but that it still runs Kubernetes 16.0; saying a new cluster is still a 16.0 cluster doesn't doesn't really convey the change.

GitHub Repo Thoughts

One idea is to split the neonKUBE repo up into two or more independent repos (but we'd continue with centralized issues). We could potentially:

Another thing we need to think about is where will we put any proprietary code that will not be made public. This could include things like neonCLOUD that will manage cluster setup and updates perhaps very soon and perhaps other premium features.

Proposal

Here's a summary of what I think we should do:

What this Means

jefflill commented 4 years ago

We discussed this and have decided to go with this plan. I'm closing this issue and we'll track progress in #937.

jefflill commented 4 years ago

Some additional comments and tweaks:

I did some more research and git implements something called subtrees which looks to be closer to what we want than submodules. This still doesn't seem ideal though.

While talking to Stuart yesterday, I thought of the name neonLIBRARY when discussing our nuget packages. I really like this and went ahead and registered neonlibrary.com, .net and .io. We'll want to use neonLIBRARY when referring to library releases.

I also believe it's time to distinguish between neonDESKTOP and neonKUBE. We've been conflating these as neonKUBE. Going forward, neonDESKTOP will refer to the client side artifacts used to deploy and manage clusters and neonKUBE will refer to the cluster itself. We'll also rename neonKUBE-setup-#.#.# --> neonDESKTOP-setup-#.#.#

I also noticed that we've been using the term neonKUBE Desktop. This is yucky. Let's formalize this as just neonDESKTOP. I've been using that when speaking; we just need to update the documentation.