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
Release nokee-version-management plugin #641
Comments
Maybe @Ladalz has a great idea. Let me describe the particularity of the plugin as it should be documented and see if we can find a better name for the plugin. BackgroundNormally, users would apply an external plugin like this:
The previous works great when the plugin is contained in a single library. The Nokee plugins are fragmented into multiple libraries. For this reason, all versions must align. Thus we must avoid things like the following (version misaligned):
In a single build script, it's easy to spot, but across multiple build script, it can be quite hard to figure out the issue. From the beginning, we propose using the following blob in
Although not technically correct, it works for most cases. The technically correct blob is much more complex than this. The blob is problematic as it requires the users to understand some advanced Gradle concepts as well as some Gradle oddities. The new plugin referred to, in this issue, will replace the previous blob with something like this:
The plugin will always perform the technically correct configuration in different scenarios given all the work is abstracted by the plugin. Plugin documentationThe plugin manages the configuration in relation to the Nokee distribution used. There are two main mandates: 1) the repositories configuration and 2) the version selection/alignment. The plugin reads the Nokee version from The plugin performs additional works not present in the original blob above. The additional work strictly aligns with the two mandates listed and explained above. @Ladalz We can take the discussion offline and summarize it here after. |
Maybe we should consider the following changes:
|
Have you considered the word "platform"? It is used elsewhere to mean an artifact whose purpose is to align versions. |
That is a good point. I was mostly focused on the "version manager"/"version management" tools often used by other languages/environments: Finding the correct name for this plugin has been quite a challenge. It needs to be easy to remember. Given only the plugin id, users need to have a good enough idea of what the plugin does. I understand the last part is quite hard, but we can expand that if the user has some basic understanding that a plugin is used to manage the Nokee version, it should be obvious which plugin takes care of this capability. This plugin also needs to differentiate itself from the other plugins. All the other plugins produce artifacts in relation to their product. On the other hand, this plugin focus on the user builds itself. The previous name, e.g. Internally, we may try to use a Gradle platform (BOM), if possible, but right now the version management is handwritten. As mentioned, I didn't consider the term "platform", but I will give it some more thought. I'm not 100% set on the name yet. The name Any suggestion is more than welcome. |
When considering included build scenarios, version seeding and choosing the right version (from the environment variable, parent builds and remote location) we have a lot of test cases to consider. Although those features weren't part of the initial specs, they quickly fall into scope. We are counting 25 different environmental setups with 5 decision points when choosing the version. The complexity lies mostly with test authoring than the actual implementation. The development of the tests entered a bit of a rabbit hole exploration work which we don't really have the time at this instant. We will park this work and think a bit more about the test setup requiring multiple projects. |
We should consider this scenario as a potential problem that we may want to try and reproduce. |
The plugin is now released. |
We are still unsure about the selected plugin id:
dev.nokee.distributions-management
The main problem is the namespace. The plugin does not manage native distributions but manages Nokee distributions. Maybe we could use
build.nokee.distributions-management
(by using thenokee.build
DNS) but it doesn't sound right. We could always use a very specialized DNSbuild.using-nokee.distributions-management
.As for the plugin name itself,
distributions-management
could be swapped for something better. We need something that makes the most sense for all users and is easy to remember. The goal of this plugin is to make Nokee feels like a core Gradle plugin by making the setup as easy as possible. Names likedev.nokee.setup
is short and sweet but have little meaning.The text was updated successfully, but these errors were encountered: