--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOu%2B0LWecfCHLBcHDG%3D85CKe3KLSLsk2PFmKOm4pqeH-cG2rWw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BmkJp-rMDSWxX-7bMK4XxhLFKgyhmtbFxzeg5oYuJ0HDQ%40mail.gmail.com.
I'd like to point out that all significant changes must have a design doc. All design docs are supposed to have a backward compatibility section. (https://bazel.build/designs/index.html)
For 1. I'd like to make it a bit stronger and consistent with the Starlark policy (https://docs.bazel.build/versions/master/skylark/backward-compatibility.html). Release N+1 should have the flag switched off. This provides a workaround for users who didn't notice the breakage earlier. At least, we make sure they can upgrade and continue using Bazel. This helps with our desire to have all users using the latest version of Bazel.
I understand that it can add too much burden in some cases. So I suggest we keep the rule used by Starlark (and experimented for more than a year) as the default, but authors can request exceptions in their design doc.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOu%2B0LWecfCHLBcHDG%3D85CKe3KLSLsk2PFmKOm4pqeH-cG2rWw%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--Laurent--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BmkJp-rMDSWxX-7bMK4XxhLFKgyhmtbFxzeg5oYuJ0HDQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--all_incompatible_changes", the owners have to fix it quickly (orreport why it's difficult or not feasible).
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/704022c8-2e10-474e-aaf8-a280daa6e575%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/704022c8-2e10-474e-aaf8-a280daa6e575%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--Laurent--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BmXg8cvA%2BTJq0JwqDe0z1vY25kZDRJgdscqja4SEziApg%40mail.gmail.com.
- all tests on buildkite are always run with --all_incompatible_changes. I hope this is true already.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BAhZojfMg7D5D7GzaD_a%3DLcpAg0aSC4kPOCn_EZ_xDFTeYBrg%40mail.gmail.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BndrjrJ_mKyugnPKSew36SctzFWQvCoaBiWh2oB7O%2BuhoioKQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
You received this message because you are subscribed to a topic in the Google Groups "bazel-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bazel-discuss/wYocSoGTJOg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BnZOTq0kygGPK8vXaG%2BuZoA37LJZ5tqy8-j37zb%3DYH6Jg%40mail.gmail.com.
+1 re PACKAGE_NAME example- I was the one who submitted the fix to protobuf on master since, at the time, rules_scala ran with this flag on.
It wasn’t a good experience to try and understand who’s broken and then checkout protobuf, understand how to fix them and wait for someone on their side to take notice (which took a bit of time).
On Tue, 11 Sep 2018 at 2:18 'Laurent Le Brun' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
> For a change like load() positioning, N,N+1,N+2 is fine.Actually, no. For an example of a trivial change, see https://github.com/bazelbuild/bazel/issues/5827I tried to give a lot of notice, but that didn't even worked. Maybe advertising --all_incompatible_changes would help. Maybe testing it on the CI, and filing bugs against downstream projects will be enough.But still: once proto rules are updated, everything that depends on them needs to update their version of the proto rules (and so on, recursively). To make things more bearable, we could synchronize the breaking changes. Some Bazel releases have to be backward-compatible, so that we don't require the recursive updates every month.And yes, we have to improve tooling. Tooling to automatically detect and fix the syntactic issues (we're working on it), and tooling to help update the WORKSPACE files.
On Tue, 11 Sep 2018 at 00:45, 'Ofer Bartal' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
Here are some ideas which may help with parts of this:* We can't see or change our clients code, but for some breaking changes, we might be able to offer an automated fix. Take Java as an example, error_prone, which is already integrated into Bazel, can automatically create patches to fix code (see example here). If we break an API in a way that we can statically analyse, we might be able to offer a fix, and then "allow ourselves" to expect faster fixes from Bazel users.* If people don't notice our deprecation warnings until they actually break them, we could use this "trick": Make it an error, and describe in the error that it can be turned into a warning (until a later release when it'll turn back to error) by adding a flag to bazelrc.
On Tue, Sep 11, 2018 at 1:38 AM 'Philipp Wollermann' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
On Tue, Sep 11, 2018 at 12:13 AM 'Tony Aiuto' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
- all tests on buildkite are always run with --all_incompatible_changes. I hope this is true already.
--On our Buildkite CI we currently don't test with this flag at all, ever. I personally don't know anyone who has ever used that flag (but I guess it might be popular with rule authors, considering that Starlark is where most of the --incompatible flags came from until now?).Laurent recently filed a bug that we should start doing so for downstream projects, so we're about to fix the CI situation. :) However, it's not completely clear to me how it should look like:- Should we test Bazel itself also with --all_incompatible_flags? For the actual Java unit tests and integration tests it "shouldn't" matter, because we should just have tests for the behavior with and without the flag. However, for some changes, "Bazel building itself" or "Bazel running its test suite" is actually part of making sure that it works - think about a flag that affects Bazel's resource scheduling or a flag that affects our test strategy. So maybe yes?- If yes: On presubmit, too? This would mean we have to provision twice the hardware resources as we currently do. Expensive (omg, more iMac Pros), but OTOH people *really* don't like it when their changes are rolled back even though the presubmit passed (even more so when the breakage comes from a downstream project that they don't even know how to build / test on their local machine, making it hard to debug the breakage).- Should we test all downstream projects with --all_incompatible_flags? I guess so and the linked issue says so, too. However note that this will double the number of results on this already overloaded UI: https://buildkite.com/bazel/bazel-with-downstream-projects-bazel/builds/433 - one could argue that before we add even more breakages on top of that pile, we should - at least once, for the love of Bazel - try to get the current downstream projects pipeline green. AFAIK since inception of our Buildkite CI, this pipeline has never been green.Cheers,Philipp
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BAhZojfMg7D5D7GzaD_a%3DLcpAg0aSC4kPOCn_EZ_xDFTeYBrg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BndrjrJ_mKyugnPKSew36SctzFWQvCoaBiWh2oB7O%2BuhoioKQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--Laurent--
You received this message because you are subscribed to a topic in the Google Groups "bazel-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bazel-discuss/wYocSoGTJOg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BnZOTq0kygGPK8vXaG%2BuZoA37LJZ5tqy8-j37zb%3DYH6Jg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOfK4wWLChzyM627QnYgH3RbQatVfdoc_TP%3DTAvi6xgVZkX-PA%40mail.gmail.com.
The incompatible flag that removed PACKAGE_NAME has been there since ages, and there was *still* breakage on ci.bazel.build which is an indication that people either don't update their code or they don't update their dependencies, even when given a lot of time. In other words, time does not help. Then what is the utility of being generous with it? In this case what would have helped is a version of ci.bazel.build that runs with a set of incompatible changes and the understanding that projects there are expected to fix themselves and bug their dependencies to do so. As long as we get that from any policy, we are at a good place.Of course, it would be the best if we had breaking changes less frequently, but realistically, we cannot do that now. What we *can* do now is to instigate a policy that doesn't constrain the speed at which we can remove bad functionality much, and then once we see the number of backward-incompatible changes decreasing, we can make that policy stricter and stricter, eventually culminating in "no backward incompatible changes, ever".In other words, I'm proposing a covenant between the users and the developers of Bazel that says "We give you a flag and a transition period and in exchange we get to remove functionality at a given speed", with "given speed" erring on the "fast" side first, then it being gradually ratcheted down.How does that sound?
On Tue, Sep 11, 2018 at 5:23 AM, ittai zeidman <itt...@gmail.com> wrote:
+1 re PACKAGE_NAME example- I was the one who submitted the fix to protobuf on master since, at the time, rules_scala ran with this flag on.
It wasn’t a good experience to try and understand who’s broken and then checkout protobuf, understand how to fix them and wait for someone on their side to take notice (which took a bit of time).
On Tue, 11 Sep 2018 at 2:18 'Laurent Le Brun' via bazel-discuss <bazel-...@googlegroups.com> wrote:
> For a change like load() positioning, N,N+1,N+2 is fine.Actually, no. For an example of a trivial change, see https://github.com/bazelbuild/bazel/issues/5827I tried to give a lot of notice, but that didn't even worked. Maybe advertising --all_incompatible_changes would help. Maybe testing it on the CI, and filing bugs against downstream projects will be enough.But still: once proto rules are updated, everything that depends on them needs to update their version of the proto rules (and so on, recursively). To make things more bearable, we could synchronize the breaking changes. Some Bazel releases have to be backward-compatible, so that we don't require the recursive updates every month.And yes, we have to improve tooling. Tooling to automatically detect and fix the syntactic issues (we're working on it), and tooling to help update the WORKSPACE files.
On Tue, 11 Sep 2018 at 00:45, 'Ofer Bartal' via bazel-discuss <bazel-...@googlegroups.com> wrote:
Here are some ideas which may help with parts of this:* We can't see or change our clients code, but for some breaking changes, we might be able to offer an automated fix. Take Java as an example, error_prone, which is already integrated into Bazel, can automatically create patches to fix code (see example here). If we break an API in a way that we can statically analyse, we might be able to offer a fix, and then "allow ourselves" to expect faster fixes from Bazel users.* If people don't notice our deprecation warnings until they actually break them, we could use this "trick": Make it an error, and describe in the error that it can be turned into a warning (until a later release when it'll turn back to error) by adding a flag to bazelrc.
On Tue, Sep 11, 2018 at 1:38 AM 'Philipp Wollermann' via bazel-discuss <bazel-...@googlegroups.com> wrote:
On Tue, Sep 11, 2018 at 12:13 AM 'Tony Aiuto' via bazel-discuss <bazel-...@googlegroups.com> wrote:
- all tests on buildkite are always run with --all_incompatible_changes. I hope this is true already.
--On our Buildkite CI we currently don't test with this flag at all, ever. I personally don't know anyone who has ever used that flag (but I guess it might be popular with rule authors, considering that Starlark is where most of the --incompatible flags came from until now?).Laurent recently filed a bug that we should start doing so for downstream projects, so we're about to fix the CI situation. :) However, it's not completely clear to me how it should look like:- Should we test Bazel itself also with --all_incompatible_flags? For the actual Java unit tests and integration tests it "shouldn't" matter, because we should just have tests for the behavior with and without the flag. However, for some changes, "Bazel building itself" or "Bazel running its test suite" is actually part of making sure that it works - think about a flag that affects Bazel's resource scheduling or a flag that affects our test strategy. So maybe yes?- If yes: On presubmit, too? This would mean we have to provision twice the hardware resources as we currently do. Expensive (omg, more iMac Pros), but OTOH people *really* don't like it when their changes are rolled back even though the presubmit passed (even more so when the breakage comes from a downstream project that they don't even know how to build / test on their local machine, making it hard to debug the breakage).- Should we test all downstream projects with --all_incompatible_flags? I guess so and the linked issue says so, too. However note that this will double the number of results on this already overloaded UI: https://buildkite.com/bazel/bazel-with-downstream-projects-bazel/builds/433 - one could argue that before we add even more breakages on top of that pile, we should - at least once, for the love of Bazel - try to get the current downstream projects pipeline green. AFAIK since inception of our Buildkite CI, this pipeline has never been green.Cheers,Philipp
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BAhZojfMg7D5D7GzaD_a%3DLcpAg0aSC4kPOCn_EZ_xDFTeYBrg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BndrjrJ_mKyugnPKSew36SctzFWQvCoaBiWh2oB7O%2BuhoioKQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--Laurent--
You received this message because you are subscribed to a topic in the Google Groups "bazel-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bazel-discuss/wYocSoGTJOg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BnZOTq0kygGPK8vXaG%2BuZoA37LJZ5tqy8-j37zb%3DYH6Jg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOfK4wWLChzyM627QnYgH3RbQatVfdoc_TP%3DTAvi6xgVZkX-PA%40mail.gmail.com.
--Lukács T. Berki | Software Engineer | lbe...@google.com |Google Germany GmbH | Erika-Mann-Str. 33 | 80636 München | Germany | Geschäftsführer: Paul Manicle, Halimah DeLaine Prado | Registergericht und -nummer: Hamburg, HRB 86891
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOu%2B0LW1B6r%2BWLdf--eM6V%2BmOUNKQsV4KnxUrLgbchRZABTCwg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
I like the sound of a lot of that, but which steps of the flag dance require waiting for the end of a migration window? If we consider that someone's workflow can be broken by 1) adding a new incompatible change with default false (for users of --all_incompatible_changes), 2) flipping the default to true (for all other users), and 3) removing the flag (hard breakage), and if we use N = 3 as the stable release window, then for a well-timed feature/cleanup that's (3 steps) * (N-1) + 1 = 7 releases = 7 months before you can delete code.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/122eccd9-36a1-4d94-bf39-de36b216a7fd%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Folks, this is a great discussion - I am back from my vacation and I have just had time to digest this thread.To provide some background, I have shared a "Radical Stability for Bazel" document proposing some of the measures discussed here internally. I now think that sharing this internally was a mistake, or at least I should have sharied it with the larger community earlier - apologies for that. Kudos to Lukacs for starting the public discussion on this, and many thanks for thoughtful contributions from everyone.To respond to some concerns raised in this thread:1. Beyond Bazel itself, the rules should be stable too: that is very true, but I think we need to start with Bazel itself. I think that it is very difficult to require any stability from rulesets before Bazel itself is stable. Clarifying stability and breaking change assumptions for rulesets would be the next step (for example, that can be a part of Bazel Rules Curation). It is good to think about that next step already though! - so it is very valuable.2. No matter what we do, people will not update their projects: I believe this is not a permanent state of the world, but rather a consequence of our own behavior - we have not been upfront and methodical about communicating breaking changes, so our users could not follow up in any kind of methodical way.Summarizing and expanding on various proposals here, to get to a more stable place for Bazel, we need four things:* Policy. We are all converging on
- everything not under experimental flag is "stable"
- changes to stable functionality require incompatible_change flag
- for every incompatible_change flag there is a migration window release:
- If possible, a release when both deprecated and new functionality is available without any flags (respective --experimental flag is on by default, respective --incompatible_change flag is off by default and both are available)
- Failing that, an incompatible_change flag that is off by default and a migration receipt to update code in such a way that it works with that flag both on and off.
- Cases where 2) is unfeasible should be exceptional - this will be communicated specially with a lot of warning.
- we want to eventually introduce a stability window - a number of releases during which no incompatible changes are allowed. We can start with a size of that window being 1 (i.e. every release can have incompatible changes) and increase that size later.
All of the above rhymes with Lukacs' "covenant between the users and the developers of Bazel that says "We give you a flag and a transition period and in exchange we get to remove functionality at a given speed", with "given speed" erring on the "fast" side first, then it being gradually ratcheted down."* Implementation. Bazel contributors need to follow this policy! Instrumental to that, we need an implementation of flags framework in Bazel such that it is easy to add a new flag and access a new flag from any part of the code, and there is a centralized list of such flags.Going forward, where it feasible we can provide people with migration tools, based on https://github.com/bazelbuild/buildtools.* Communication. The policy should be published to the website, and more importantly, we need to have a public, easy-to-access list of incompatible changes, their migration plans, and time frames for the change. For that, I suggest that every incompatible_change flag that we add is associated with GitHub issue (with appropriate label) that tracks it progress. That issue can contain the migration plan and can also be used to communicate time frames. On top of that, incompatible changes should be part of release notes and communicated more broadly when appropriate, but having a systematic canonical list, up-to-date and accessible at any time, is critical.
* Verification. We need to setup testing for incompatible changes on ci.bazel.build. The purpose of that testing is two-fold:
- to catch accidental incompatible changes. For that we need to have a set of projects (both rules and end-user projects), fixed in time for a stability window period, that we will test with every release for compatibility. We will update for the next "stable" release.
- to ensure that downstream projects are migrated withing the migration window. Roughly that means "test downstream project at HEAD with latest release --incompatible_change_x=true for all incompatible changes x that we want to turn on in the next release"
Scenario 1 means: Bazel@HEAD, donwstream@fixed version; scenario 2 means Bazel@release + incompatible changes, downstream@HEAD.Our current downstream testing is Bazel@HEAD, downstream@HEAD and this is frankly very noisy.
Does this sound about right? Anything on high level that I am missing?The next step I think is to go ahead and address all four of these areas - there is a fair amount of detail to figure out here.Cheers,Dmitry
On Tue, Sep 11, 2018 at 9:36 AM 'Lukács T. Berki' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
The incompatible flag that removed PACKAGE_NAME has been there since ages, and there was *still* breakage on ci.bazel.build which is an indication that people either don't update their code or they don't update their dependencies, even when given a lot of time. In other words, time does not help. Then what is the utility of being generous with it? In this case what would have helped is a version of ci.bazel.build that runs with a set of incompatible changes and the understanding that projects there are expected to fix themselves and bug their dependencies to do so. As long as we get that from any policy, we are at a good place.Of course, it would be the best if we had breaking changes less frequently, but realistically, we cannot do that now. What we *can* do now is to instigate a policy that doesn't constrain the speed at which we can remove bad functionality much, and then once we see the number of backward-incompatible changes decreasing, we can make that policy stricter and stricter, eventually culminating in "no backward incompatible changes, ever".In other words, I'm proposing a covenant between the users and the developers of Bazel that says "We give you a flag and a transition period and in exchange we get to remove functionality at a given speed", with "given speed" erring on the "fast" side first, then it being gradually ratcheted down.How does that sound?
On Tue, Sep 11, 2018 at 5:23 AM, ittai zeidman <itt...@gmail.com> wrote:
+1 re PACKAGE_NAME example- I was the one who submitted the fix to protobuf on master since, at the time, rules_scala ran with this flag on.
It wasn’t a good experience to try and understand who’s broken and then checkout protobuf, understand how to fix them and wait for someone on their side to take notice (which took a bit of time).
On Tue, 11 Sep 2018 at 2:18 'Laurent Le Brun' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
> For a change like load() positioning, N,N+1,N+2 is fine.Actually, no. For an example of a trivial change, see https://github.com/bazelbuild/bazel/issues/5827I tried to give a lot of notice, but that didn't even worked. Maybe advertising --all_incompatible_changes would help. Maybe testing it on the CI, and filing bugs against downstream projects will be enough.But still: once proto rules are updated, everything that depends on them needs to update their version of the proto rules (and so on, recursively). To make things more bearable, we could synchronize the breaking changes. Some Bazel releases have to be backward-compatible, so that we don't require the recursive updates every month.And yes, we have to improve tooling. Tooling to automatically detect and fix the syntactic issues (we're working on it), and tooling to help update the WORKSPACE files.
On Tue, 11 Sep 2018 at 00:45, 'Ofer Bartal' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
Here are some ideas which may help with parts of this:* We can't see or change our clients code, but for some breaking changes, we might be able to offer an automated fix. Take Java as an example, error_prone, which is already integrated into Bazel, can automatically create patches to fix code (see example here). If we break an API in a way that we can statically analyse, we might be able to offer a fix, and then "allow ourselves" to expect faster fixes from Bazel users.* If people don't notice our deprecation warnings until they actually break them, we could use this "trick": Make it an error, and describe in the error that it can be turned into a warning (until a later release when it'll turn back to error) by adding a flag to bazelrc.
On Tue, Sep 11, 2018 at 1:38 AM 'Philipp Wollermann' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
On Tue, Sep 11, 2018 at 12:13 AM 'Tony Aiuto' via bazel-discuss <bazel-discuss@googlegroups.com> wrote:
- all tests on buildkite are always run with --all_incompatible_changes. I hope this is true already.
--On our Buildkite CI we currently don't test with this flag at all, ever. I personally don't know anyone who has ever used that flag (but I guess it might be popular with rule authors, considering that Starlark is where most of the --incompatible flags came from until now?).Laurent recently filed a bug that we should start doing so for downstream projects, so we're about to fix the CI situation. :) However, it's not completely clear to me how it should look like:- Should we test Bazel itself also with --all_incompatible_flags? For the actual Java unit tests and integration tests it "shouldn't" matter, because we should just have tests for the behavior with and without the flag. However, for some changes, "Bazel building itself" or "Bazel running its test suite" is actually part of making sure that it works - think about a flag that affects Bazel's resource scheduling or a flag that affects our test strategy. So maybe yes?- If yes: On presubmit, too? This would mean we have to provision twice the hardware resources as we currently do. Expensive (omg, more iMac Pros), but OTOH people *really* don't like it when their changes are rolled back even though the presubmit passed (even more so when the breakage comes from a downstream project that they don't even know how to build / test on their local machine, making it hard to debug the breakage).- Should we test all downstream projects with --all_incompatible_flags? I guess so and the linked issue says so, too. However note that this will double the number of results on this already overloaded UI: https://buildkite.com/bazel/bazel-with-downstream-projects-bazel/builds/433 - one could argue that before we add even more breakages on top of that pile, we should - at least once, for the love of Bazel - try to get the current downstream projects pipeline green. AFAIK since inception of our Buildkite CI, this pipeline has never been green.Cheers,Philipp
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BAhZojfMg7D5D7GzaD_a%3DLcpAg0aSC4kPOCn_EZ_xDFTeYBrg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BndrjrJ_mKyugnPKSew36SctzFWQvCoaBiWh2oB7O%2BuhoioKQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--Laurent--
You received this message because you are subscribed to a topic in the Google Groups "bazel-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bazel-discuss/wYocSoGTJOg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BnZOTq0kygGPK8vXaG%2BuZoA37LJZ5tqy8-j37zb%3DYH6Jg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOfK4wWLChzyM627QnYgH3RbQatVfdoc_TP%3DTAvi6xgVZkX-PA%40mail.gmail.com.
--Lukács T. Berki | Software Engineer | lbe...@google.com |Google Germany GmbH | Erika-Mann-Str. 33 | 80636 München | Germany | Geschäftsführer: Paul Manicle, Halimah DeLaine Prado | Registergericht und -nummer: Hamburg, HRB 86891
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOu%2B0LW1B6r%2BWLdf--eM6V%2BmOUNKQsV4KnxUrLgbchRZABTCwg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
On Tue, Sep 11, 2018 at 9:36 AM 'Lukács T. Berki' via bazel-discuss <bazel-...@googlegroups.com> wrote:
The incompatible flag that removed PACKAGE_NAME has been there since ages, and there was *still* breakage on ci.bazel.build which is an indication that people either don't update their code or they don't update their dependencies, even when given a lot of time. In other words, time does not help. Then what is the utility of being generous with it? In this case what would have helped is a version of ci.bazel.build that runs with a set of incompatible changes and the understanding that projects there are expected to fix themselves and bug their dependencies to do so. As long as we get that from any policy, we are at a good place.Of course, it would be the best if we had breaking changes less frequently, but realistically, we cannot do that now. What we *can* do now is to instigate a policy that doesn't constrain the speed at which we can remove bad functionality much, and then once we see the number of backward-incompatible changes decreasing, we can make that policy stricter and stricter, eventually culminating in "no backward incompatible changes, ever".In other words, I'm proposing a covenant between the users and the developers of Bazel that says "We give you a flag and a transition period and in exchange we get to remove functionality at a given speed", with "given speed" erring on the "fast" side first, then it being gradually ratcheted down.How does that sound?
On Tue, Sep 11, 2018 at 5:23 AM, ittai zeidman <itt...@gmail.com> wrote:
+1 re PACKAGE_NAME example- I was the one who submitted the fix to protobuf on master since, at the time, rules_scala ran with this flag on.
It wasn’t a good experience to try and understand who’s broken and then checkout protobuf, understand how to fix them and wait for someone on their side to take notice (which took a bit of time).
On Tue, 11 Sep 2018 at 2:18 'Laurent Le Brun' via bazel-discuss <bazel-...@googlegroups.com> wrote:
> For a change like load() positioning, N,N+1,N+2 is fine.Actually, no. For an example of a trivial change, see https://github.com/bazelbuild/bazel/issues/5827I tried to give a lot of notice, but that didn't even worked. Maybe advertising --all_incompatible_changes would help. Maybe testing it on the CI, and filing bugs against downstream projects will be enough.But still: once proto rules are updated, everything that depends on them needs to update their version of the proto rules (and so on, recursively). To make things more bearable, we could synchronize the breaking changes. Some Bazel releases have to be backward-compatible, so that we don't require the recursive updates every month.And yes, we have to improve tooling. Tooling to automatically detect and fix the syntactic issues (we're working on it), and tooling to help update the WORKSPACE files.
On Tue, 11 Sep 2018 at 00:45, 'Ofer Bartal' via bazel-discuss <bazel-...@googlegroups.com> wrote:
Here are some ideas which may help with parts of this:* We can't see or change our clients code, but for some breaking changes, we might be able to offer an automated fix. Take Java as an example, error_prone, which is already integrated into Bazel, can automatically create patches to fix code (see example here). If we break an API in a way that we can statically analyse, we might be able to offer a fix, and then "allow ourselves" to expect faster fixes from Bazel users.* If people don't notice our deprecation warnings until they actually break them, we could use this "trick": Make it an error, and describe in the error that it can be turned into a warning (until a later release when it'll turn back to error) by adding a flag to bazelrc.
On Tue, Sep 11, 2018 at 1:38 AM 'Philipp Wollermann' via bazel-discuss <bazel-...@googlegroups.com> wrote:
On Tue, Sep 11, 2018 at 12:13 AM 'Tony Aiuto' via bazel-discuss <bazel-...@googlegroups.com> wrote:
- all tests on buildkite are always run with --all_incompatible_changes. I hope this is true already.
--On our Buildkite CI we currently don't test with this flag at all, ever. I personally don't know anyone who has ever used that flag (but I guess it might be popular with rule authors, considering that Starlark is where most of the --incompatible flags came from until now?).Laurent recently filed a bug that we should start doing so for downstream projects, so we're about to fix the CI situation. :) However, it's not completely clear to me how it should look like:- Should we test Bazel itself also with --all_incompatible_flags? For the actual Java unit tests and integration tests it "shouldn't" matter, because we should just have tests for the behavior with and without the flag. However, for some changes, "Bazel building itself" or "Bazel running its test suite" is actually part of making sure that it works - think about a flag that affects Bazel's resource scheduling or a flag that affects our test strategy. So maybe yes?- If yes: On presubmit, too? This would mean we have to provision twice the hardware resources as we currently do. Expensive (omg, more iMac Pros), but OTOH people *really* don't like it when their changes are rolled back even though the presubmit passed (even more so when the breakage comes from a downstream project that they don't even know how to build / test on their local machine, making it hard to debug the breakage).- Should we test all downstream projects with --all_incompatible_flags? I guess so and the linked issue says so, too. However note that this will double the number of results on this already overloaded UI: https://buildkite.com/bazel/bazel-with-downstream-projects-bazel/builds/433 - one could argue that before we add even more breakages on top of that pile, we should - at least once, for the love of Bazel - try to get the current downstream projects pipeline green. AFAIK since inception of our Buildkite CI, this pipeline has never been green.Cheers,Philipp
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BAhZojfMg7D5D7GzaD_a%3DLcpAg0aSC4kPOCn_EZ_xDFTeYBrg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CA%2BndrjrJ_mKyugnPKSew36SctzFWQvCoaBiWh2oB7O%2BuhoioKQ%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--Laurent--
You received this message because you are subscribed to a topic in the Google Groups "bazel-discuss" group.
To unsubscribe from this topic, visit https://groups.google.com/d/topic/bazel-discuss/wYocSoGTJOg/unsubscribe.
To unsubscribe from this group and all its topics, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAFtxR%2BnZOTq0kygGPK8vXaG%2BuZoA37LJZ5tqy8-j37zb%3DYH6Jg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOfK4wWLChzyM627QnYgH3RbQatVfdoc_TP%3DTAvi6xgVZkX-PA%40mail.gmail.com.
--Lukács T. Berki | Software Engineer | lbe...@google.com |Google Germany GmbH | Erika-Mann-Str. 33 | 80636 München | Germany | Geschäftsführer: Paul Manicle, Halimah DeLaine Prado | Registergericht und -nummer: Hamburg, HRB 86891
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAOu%2B0LW1B6r%2BWLdf--eM6V%2BmOUNKQsV4KnxUrLgbchRZABTCwg%40mail.gmail.com.
For more options, visit https://groups.google.com/d/optout.
--
This raises the question whether trying hard to preserve backwards
Java compatibility would be jeopardized by other incompatible changes.
So the probably the only answer would be to build older stable branches
with older versions of Bazel.
This raises the question what is the right way to achieve
similar functionality for developers and CIs environments
with Bazel?
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/c5e82e78-b410-4a10-94ad-8cf96f024c7a%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Am Dienstag, 18. September 2018 10:49:53 UTC+2 schrieb Philipp Wollermann:
> Hi David,
>
>
> would you like it if Bazel had a similar mechanism to Buck's .buckversion file?
> What were your good and bad experiences with that approach?
It worked for gerrit project. I have impression that Buck is
smaller project as Bazel with compilation time 10-15 seconds.
So that it was acceptable.
> I think it wouldn't be hard to add support for this and I personally think it's a good approach. It would give users:
> - Easy versioning of the used Bazel version with their code base (so you wouldn't run into issues like "my users upgraded Bazel and now they can no longer build the latest stable Gerrit release").
> - Easy and testable upgrades for Bazel - just bump the version in your .bazelversion in a PR, run a presubmit check on CI, if necessary, apply any necessary migrations and rules upgrades in the same CL to make the upgrade atomic and then submit with confidence. Your repo would never be in a state where it doesn't build / test due to an incompatible Bazel or rules version.
>
>
> What do you think?
It depends on compilation time. Bazel build from source is much
longer, including building external dependencies from source as well:
Protobuff, gRPC. Waiting many minutes until Bazel was built from
scratch is less attractive during bisect session.
IIRC in recent Buck versions, they removed that
self-update feature. So that may be someone from
Buck project could comment why that feature was removed?
Another option we have is to be able to install multiple
Bazel versions simultaneously and find a way to switch
between them. On linux update-alternatives could be an option.
Straight forward Bazel multiple version management would be
just download 10 different versions and install the right one.
The problem I ran into yesterday, during bisecing one Gerrit problem,
was just that: I forgot what version of Bazel we used one year ago,
I started from installing 0.10 und went until 0.6.1 and it worked.
In recent gerrit versions we are tracking the minimum required version
that was used in WORKSPACE file:
versions.check(minimum_bazel_version = "0.14.0")
In older gerrit versions that information is lost ;-(
> would you like it if Bazel had a similar mechanism to Buck's .buckversion
> file?
I think, the whole complexity comes in with external dependencies---and
the fact that bazel wants to build them from source. So what do we do
with an external repository then? Do we switch to that bazel version
when entering there? What about rules from external repositories---which
version of bazel is to be used there? What about providers passed through
repository boundaries?
Note that this is not a theoretical question; a major point in the
discussion about the migration window was the question about what to
do, if one of my dependencies needs a very new version of bazel and
another dependency hasn't updated yet.
It depends on compilation time. Bazel build from source is much
longer, including building external dependencies from source as well:
Protobuff, gRPC. Waiting many minutes until Bazel was built from
scratch is less attractive during bisect session.
IIRC in recent Buck versions, they removed that
self-update feature. So that may be someone from
Buck project could comment why that feature was removed?
Another option we have is to be able to install multiple
Bazel versions simultaneously and find a way to switch
between them. On linux update-alternatives could be an option.
Straight forward Bazel multiple version management would be
just download 10 different versions and install the right one.
Notably, in Google the "blaze" command that you run to build stuff is actually a wrapper script that exec's a checked-in "blaze" binary. Which is hard to do in Git (without LFS at least) due to repository bloat over time, but using a ".bazelversion" file would achieve the same thing.
I was about to post that here. Be aware about 'bazel' just a being a script calling a 'bazel-real' binary, though.
> If this is a popular thing to do, we could make it easier to install multiple versions via our apt-get repository or by letting the official installer install it via a versioned filename (and maybe installing "bazel" as a symlink to it).
If you go for that approach (I'd say yey!), please also consider any of the two following approaches:
A:
Rename the packages to include the Bazel version (e.g. bazel-0.17, bazel-0.16), each providing the latest point release. Change the 'bazel' package to simply become an empty metapackage with the dependency on the latest 'bazel-X.Y' package. This will allow multiple bazel versions to be installed. Then add support for 'update-alternatives' on Debian/Ubuntu to select the right/default version for the default 'bazel' command. This allows users to change the bazel version without reinstalling and actually keep multiple versions installed.
B:
Change the current hosted APT repository to retain older versions of the 'bazel' package - I believe only the latest version is available currently ('apt policy bazel'). Then users can manually reinstall the version they want, and use APT pinning configurations or something to blacklist breakages (e.g. consider anything 0.16.x broken, but upgrade to 0.17.x+ when available.).
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/f257e30a-dba0-4cf2-b816-1cc11776b571%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/f257e30a-dba0-4cf2-b816-1cc11776b571%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
Fixing bazel at specific versions is a solution to a different problem than what Radical Stability and this thread trying to address.As several replies here pointed out, there are plenty of already existing mechanisms to pin bazel to specific versions, and of course the projects using Bazel need to do so if they want to achieve full reproducibility.However, the problem that we do face is that we do not make breaking changes in Bazel just for the sake of breaking changes. We do them because Bazel does not yet do all the things it needs to do, and does not do the things it does well enough. So we need to change, adapt, and evolve Bazel. And so the ecosystem around Bazel needs to change, adapt, and evolve. This includes rulesets for different languages/ecosystems, popular libraries that use Bazel (such as Tensorflow), and services and external software that rely of Bazel APIs (Buildfarm, IntelliJ plugins and so on).So all the proposals for a migration window, stability window, accounting for incompatible changes and so on are on the table to facilitate the evolution, facilitate the change. We must make life easier and give structure to those in the community who are willing to follow the Bazel evolution, to actually do so. We absolutely should not require upgrading Bazel all the time for people who do not need that, but we should encourage and support people who want to and need to do that.This is especially true for maintainers of "well-connected nodes" in the ecosystem - those that many other users of Bazel rely on. Bazel is nothing without its ecosystem of rulesets, libraries that support building themselves with Bazel, and other tooling, and without a clear incompatible change policy, and means to stay informed and follow those changes, we are selling these people short.Pinning to specific version of Bazel is easy (and useful in some cases - I think people should absolutely do so for full reproduciblity), but if that is our only recommendation, we will not be able to evolve the ecosystem, the Bazel landscape will be fragmented beyond recognition, and Bazel ecosystem will wither and die.
Dmitry
On Wed, Sep 19, 2018 at 12:36 AM <gert...@gmail.com> wrote:
On Tuesday, 18 September 2018 13:45:29 UTC+2, Philipp Wollermann wrote:
> As Bazel is just a self-contained binary, people can already install multiple versions of it by renaming the downloaded binary to e.g. "bazel-0.16.1".
I was about to post that here. Be aware about 'bazel' just a being a script calling a 'bazel-real' binary, though.
> If this is a popular thing to do, we could make it easier to install multiple versions via our apt-get repository or by letting the official installer install it via a versioned filename (and maybe installing "bazel" as a symlink to it).
If you go for that approach (I'd say yey!), please also consider any of the two following approaches:
A:
Rename the packages to include the Bazel version (e.g. bazel-0.17, bazel-0.16), each providing the latest point release. Change the 'bazel' package to simply become an empty metapackage with the dependency on the latest 'bazel-X.Y' package. This will allow multiple bazel versions to be installed. Then add support for 'update-alternatives' on Debian/Ubuntu to select the right/default version for the default 'bazel' command. This allows users to change the bazel version without reinstalling and actually keep multiple versions installed.
B:
Change the current hosted APT repository to retain older versions of the 'bazel' package - I believe only the latest version is available currently ('apt policy bazel'). Then users can manually reinstall the version they want, and use APT pinning configurations or something to blacklist breakages (e.g. consider anything 0.16.x broken, but upgrade to 0.17.x+ when available.).
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/f257e30a-dba0-4cf2-b816-1cc11776b571%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discuss+unsubscribe@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAObu7DEpOdu7-sWuCdjmEpi2Q-p44rsbWC1SJ9Zs5r7%3DGLd11w%40mail.gmail.com.
On Wed, Sep 19, 2018 at 12:10 PM, 'Dmitry Lomov' via bazel-discuss <bazel-...@googlegroups.com> wrote:Fixing bazel at specific versions is a solution to a different problem than what Radical Stability and this thread trying to address.As several replies here pointed out, there are plenty of already existing mechanisms to pin bazel to specific versions, and of course the projects using Bazel need to do so if they want to achieve full reproducibility.However, the problem that we do face is that we do not make breaking changes in Bazel just for the sake of breaking changes. We do them because Bazel does not yet do all the things it needs to do, and does not do the things it does well enough. So we need to change, adapt, and evolve Bazel. And so the ecosystem around Bazel needs to change, adapt, and evolve. This includes rulesets for different languages/ecosystems, popular libraries that use Bazel (such as Tensorflow), and services and external software that rely of Bazel APIs (Buildfarm, IntelliJ plugins and so on).So all the proposals for a migration window, stability window, accounting for incompatible changes and so on are on the table to facilitate the evolution, facilitate the change. We must make life easier and give structure to those in the community who are willing to follow the Bazel evolution, to actually do so. We absolutely should not require upgrading Bazel all the time for people who do not need that, but we should encourage and support people who want to and need to do that.This is especially true for maintainers of "well-connected nodes" in the ecosystem - those that many other users of Bazel rely on. Bazel is nothing without its ecosystem of rulesets, libraries that support building themselves with Bazel, and other tooling, and without a clear incompatible change policy, and means to stay informed and follow those changes, we are selling these people short.Pinning to specific version of Bazel is easy (and useful in some cases - I think people should absolutely do so for full reproduciblity), but if that is our only recommendation, we will not be able to evolve the ecosystem, the Bazel landscape will be fragmented beyond recognition, and Bazel ecosystem will wither and die.This is an important point -- are you envisioning the Bazel ecosystem as one that works like continuous integration, i.e. people are expected to stick to the very close to the latest version of whatever library they depend on, or do they expect to use old-ish versions? If the latter, incompatible changes are much harder to make.
Dmitry
On Wed, Sep 19, 2018 at 12:36 AM <gert...@gmail.com> wrote:
On Tuesday, 18 September 2018 13:45:29 UTC+2, Philipp Wollermann wrote:
> As Bazel is just a self-contained binary, people can already install multiple versions of it by renaming the downloaded binary to e.g. "bazel-0.16.1".
I was about to post that here. Be aware about 'bazel' just a being a script calling a 'bazel-real' binary, though.
> If this is a popular thing to do, we could make it easier to install multiple versions via our apt-get repository or by letting the official installer install it via a versioned filename (and maybe installing "bazel" as a symlink to it).
If you go for that approach (I'd say yey!), please also consider any of the two following approaches:
A:
Rename the packages to include the Bazel version (e.g. bazel-0.17, bazel-0.16), each providing the latest point release. Change the 'bazel' package to simply become an empty metapackage with the dependency on the latest 'bazel-X.Y' package. This will allow multiple bazel versions to be installed. Then add support for 'update-alternatives' on Debian/Ubuntu to select the right/default version for the default 'bazel' command. This allows users to change the bazel version without reinstalling and actually keep multiple versions installed.
B:
Change the current hosted APT repository to retain older versions of the 'bazel' package - I believe only the latest version is available currently ('apt policy bazel'). Then users can manually reinstall the version they want, and use APT pinning configurations or something to blacklist breakages (e.g. consider anything 0.16.x broken, but upgrade to 0.17.x+ when available.).
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/f257e30a-dba0-4cf2-b816-1cc11776b571%40googlegroups.com.
For more options, visit https://groups.google.com/d/optout.
--
--
You received this message because you are subscribed to the Google Groups "bazel-discuss" group.
To unsubscribe from this group and stop receiving emails from it, send an email to bazel-discus...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/bazel-discuss/CAObu7DEpOdu7-sWuCdjmEpi2Q-p44rsbWC1SJ9Zs5r7%3DGLd11w%40mail.gmail.com.
--Lukács T. Berki | Software Engineer | lbe...@google.com |Google Germany GmbH | Erika-Mann-Str. 33 | 80636 München | Germany | Geschäftsführer: Paul Manicle, Halimah DeLaine Prado | Registergericht und -nummer: Hamburg, HRB 86891