Fair points Alex, you are absolutely right.

Although, I still think that forcing to have `bundle:` now in a bom is a
better way: It will be annoying for users but easy to fix, whereas the
alternative means that it Brooklyn **will be broken on restart/rebind**
which is a clear no-go from my point of view.

Best

On Fri, 27 Oct 2017 at 09:12 Alex Heneveld <alex.henev...@cloudsoftcorp.com>
wrote:

>
> Thinking about it I'm not convinced that breaking users blueprints is the
> best way to update their mental model.  With a shift to use the CLI with
> catalog.bom in root and updating exemplar projects, and updating UI to
> reflect bundles, I expect we'll achieve this in a less disruptive way.
>
> At minimum I don't think we should make it a breaking change to try to
> force a mental model switch until _we_ have:
>
> * made catalog UI be bundle-centric (currently bundle name is shown but
> you can't navigate by bundles)
> * made composer be bundle-centric - at minimum including a bundle name in
> the template Brooklyn shows, but ideally more, allowing people to edit
> multiple resources in a bundle via the UI (else we aren't really operating
> on the new mental model)
>
> We will also need a non-trivial amount of work to update tests probably
> the majority of which use anonymous bundles and many of which test aspects
> of anonymous bundles (and we'd have to be careful in updating/fixing tests
> to identify the latter ones).
>
>
> Some halfway house measures would be to provide more obvious feedback to
> users when they install or use anonymous bundles:
>
> * CLI and UI show the name of the bundle added, with a warning if it's an
> anonymous one (user can then easily delete and release with better name)
> * UI show warnings on items from anonymous bundles
>
>
> Also maybe it's worth adding a "strict" mode to Brooklyn, where in strict
> mode this is disabled (and other things, like persisting/rebinding
> anonymous types or other deprecated features).  We could even persist this
> setting so new users work in strict mode but if you're rebinding you get
> non-strict mode.
>
> Best
>
> Alex
>
>
>
> On 27/10/2017 08:16, Thomas Bouron wrote:
>
> +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
>
>
> --

Thomas Bouron • Senior Software Engineer @ Cloudsoft Corporation •
https://cloudsoft.io/
Github: https://github.com/tbouron
Twitter: https://twitter.com/eltibouron

Reply via email to