+1, this sounds sensible to me too. I also vote in favor of making this a breaking change. With 1.0.0 coming, this is the perfect time to do it.
Best. On Fri, 27 Oct 2017 at 08:06 Geoff Macartney <geoff.macart...@cloudsoft.io> wrote: > +1 to your suggestion Aled. Also I'd side with making it a breaking > change, I prefer forcing that mental model. > > On Thu, 26 Oct 2017 at 13:12 Aled Sage <aled.s...@gmail.com> wrote: > > > Alex, > > > > I say we break it - force the user to have the correct mental model for > > 1.0.0! > > > > It's a simple one-line addition to fix a given .bom file. We should > > obviously ensure that historic persisted state continues to work. > > > > --- > > > > Also note that our deprecation warnings are too hidden. For example, if > > you do `br catalog add ...` then deprecation warnings will only be > > visible via the Brooklyn log (rather than being returned to the user of > > `br` or via the REST api). > > > > But that's a separate topic! > > > > Aled > > > > > > On 26/10/2017 12:58, Alex Heneveld wrote: > > > > > > Absolutely. > > > > > > Question is whether we should deprecate or make it a breaking change. > > > > > > Deprecating feels right, though I think it would mean we can't > > > actually remove until 2.0 ? > > > > > > Best > > > Alex > > > > > > > > > On 26/10/2017 12:06, Aled Sage wrote: > > >> Hi all, > > >> > > >> I propose we make it mandatory to specify the bundle id and version > > >> (currently it is optional). > > >> > > >> I think we should do this asap, before 1.0.0 is released. > > >> > > >> This is a breaking change - it will require users to add a `bundle: > > >> ...` line to their .bom files (if they are not supplying the metadata > > >> another way, such as building their project as an OSGi bundle). > > >> > > >> TL;DR: for backwards compatibility, we let users have a different > > >> mental model from what Brooklyn now actually does, which can lead to > > >> confusing behaviour when upgrading or working with snapshots. > > >> > > >> *## Current Behaviour* > > >> > > >> Currently, we'll auto-wrap things as a bundle, generating a unique > > >> anonymous bundle name:version if one is not supplied. > > >> > > >> This is important for users doing `br catalog add myfile.bom` or `br > > >> catalog add mydir/`. In both cases we automatically create an OSGi > > >> bundle with those contents. For that bundle's name:version, one can > > >> explicitly supply it (e.g. via `bundle: ...` in the .bom file). But, > > >> for backwards compatibility, we support .bom files that have no such > > >> metadata. > > >> > > >> *## Old Behaviour (0.11.0 and Earlier)* > > >> > > >> Before we added full support and use of bundles in the catalog, the > > >> user's .bom file was parsed and its items added to the catalog. The > > >> raw .bom file was discarded. > > >> > > >> For upgrade/dependencies/versioning/usability reasons described in > > >> [1,2,3], this was a bad idea. > > >> > > >> > > >> *## Reason the Current Behaviour is Bad!* > > >> > > >> By auto-generating bundle names, we allow users to have a completely > > >> different mental model from what is actually happening in Brooklyn. > > >> > > >> For simple cases (e.g. their .bom file only ever contains one item), > > >> that's fine. > > >> > > >> However, it leads to surprising behaviour (and more complicated > > >> Brooklyn code), particularly when using snapshots or forced upgrade. > > >> > > >> Consider a (developer) user writing a .bom file, with version > > >> 1.0.0-SNAPSHOT containing entities A and B. If the user modifies it > > >> and runs `br catalog add myfile.bom` then we successfully replace the > > >> old auto-generated bundle with this new one. However, if the user > > >> then deletes B (so the .bom contains only A) and does `catalog add` > > >> again, it's unclear to Brooklyn whether this is meant to be the same > > >> .bom file. You could argue that it should be forbidden (because if we > > >> kept the old .bom we'd end up with two different versions of A, and > > >> deleting B would be wrong if it was a different .bom). > > >> > > >> The right thing in my opinion is to force the user to have the same > > >> mental model as Brooklyn does: they need to include a `bundle: ` line > > >> in their .bom file so they are explicit about what they are doing. > > >> > > >> Note this does not force the user to understand OSGi/java; it just > > >> requires them to think in terms of a "versioned bundle" of catalog > > >> items. > > >> > > >> Aled > > >> > > >> [1] "Uploading ZIPs for a better dev workflow" dev@brooklyn email > > thread > > >> [2] "Bundles in Brooklyn" dev@brooklyn email thread > > >> [3] "Bundles of fun" dev@brooklyn email thread > > >> > > >> > > > > > > > > -- Thomas Bouron • Senior Software Engineer @ Cloudsoft Corporation • https://cloudsoft.io/ Github: https://github.com/tbouron Twitter: https://twitter.com/eltibouron