Skip to main content

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index] [List Home]
Re: [hono-dev] Definition of Hono's public API

+ 1

> 
> Hi Committers,
> 
> in our Hono community call today we discussed this topic as well.
> Carsten and I argued that we do not (yet) have broad adoption of any of
> the Java artifacts that we publish. In particular, there is only the Red
> Hat folks working on a device registry utilizing the base classes that
> are contained in the service-base module and they seem to be happy to
> adapt their implementation to (modest) breaking changes that we might
> introduce in new minor releases.
> 
> In addition to that we quickly agreed that the client module currently
> contains classes relevant for the implementation of protocol adapters as
> well as for applications that want to interact with Hono's north bound
> API. This is less than ideal because it creates strong coupling between
> mostly unrelated classes. We agreed that we should split up the client
> module into modules that each target a more specific type of client.
> 
> All this leads me to think that declaring any of these classes to be
> stable, public API and subjecting them to semantic versioning would not
> be very helpful to anybody in our community (yet) but would make it
> considerably harder for us to quickly evolve and improve Hono.
> 
> I therefore propose to only declare Hono's remote APIs defined under [1]
> and the standard protocol adapters' device-facing resources/behavior [2]
> as public API and thus subject to semantic versioning.
> 
> Committers, in order to come to a conclusion on this topic, I kindly ask
> you to cast your vote.
> 
> [1] https://www.eclipse.org/hono/docs/api/
> [2] https://www.eclipse.org/hono/docs/user-guide/
> 
> Kai
> 
> On 22.01.20 09:40, Hudalla Kai (IOC/PAP-HU) wrote:
> > Sorry, forgot to add the links ...
> >
> > Based on the discussions I had with Carsten regarding the changes
> > necessary for [1] I can now also imagine to only define the classes of
> > the core and client modules as part of Hono's Public API.
> >
> > Dejan had already raised some concerns regarding the impact it would
> > have on our ability to quickly evolve, if we declared too much of our
> > code as part of the public API. I now see his point more clearly as it
> > would basically prevent us from making any reasonably complex changes to
> > any of our adapters without creating a new major release, which is
> > probably not what we want. Most of our adapters heavily depend on
> > classes in the service-base module so in order to make any substantial
> > progress we will need to change many of the classes in there.
> >
> > In the past we had encouraged people to create custom protocol adapters
> > by means of extending some of the base classes in service-base. However,
> > in reality it seems more practical to use the approach outlined in [2]
> > in order to connect devices using a proprietary protocol to a Hono
> > system. Note that this approach does not require implementing a full
> > fledged custom protocol adapter.
> >
> > I would therefore propose to also exclude the service-base module from
> > Hono's public API. People can still use it if they want to implement a
> > custom adapter but they should be aware that we might change the code at
> > any time.
> >
> > WDYT?
> >
> > [1] https://github.com/eclipse/hono/issues/1328
> > [2] https://github.com/eclipse/hono/issues/1478
> >
> > Kai
> >
> > On 15.01.20 14:22, Hudalla Kai (INST/ECS4) wrote:
> >> On 15.01.20 12:56, Dejan Bosanac wrote:
> >>> Hi Kai,
> >>>
> >>> this seems reasonable to me. Just one thing, when you say "all classes",
> >>> do you mean public methods signatures by that or something else?
> >>>
> >>
> >> Good point. I would say that this affects all public classes in the
> >> "public" packages which are currently
> >>
> >> core: all packages
> >>
> >> client: all packages
> >>
> >> service-base: all packages
> >>
> >> Does that make sense?
> >>
> >>> On Tue, Jan 14, 2020 at 8:52 AM Hudalla Kai (INST/ECS4)
> >>> <Kai.Hudalla@xxxxxxxx <mailto:Kai.Hudalla@xxxxxxxx>> wrote:
> >>>
> >>>     Hi list,
> >>>
> >>>     with Hono 1.0.0 having been released last year, we now need to follow
> >>>     semantic versioning for its public API. So far so good. During the past
> >>>     weeks while implementing new features, we already ran in to situations
> >>>     where some refactoring would have been beneficial but where we had to
> >>>     think twice about whether we can simply change a method's signature or
> >>>     remove some obsolete class(es). I think we can all agree that this
> >>>     depends on whether the affected artifacts are to be considered part of
> >>>     Hono's public API or not.
> >>>
> >>>     However, we haven't yet defined which parts of Hono actually constitute
> >>>     its public API. Thus, I would like to propose a draft of what I would
> >>>     consider (or like to see as) part of Hono's public API:
> >>>
> >>>     1) All remote APIs documented under [1]
> >>>     2) All classes in the core module
> >>>     3) All classes in the client module
> >>>     4) All classes in the service-base module
> >>>
> >>>     IMHO the rest would then automatically not be public API and would thus
> >>>     not be subject to semantic versioning.
> >>>
> >>>     WDYT?
> >>>
> >>>     [1] https://www.eclipse.org/hono/docs/api/
> >>>
> >>>     --
> >>>     Mit freundlichen Grüßen / Best regards
> >>>
> >>>     Kai Hudalla
> >>>
> >>>     Software Developer - Bosch IoT Hub
> >>>
> >>>     Bosch.IO GmbH
> >>>     Ullsteinstr. 128
> >>>     12109 Berlin
> >>>     GERMANY
> >>>     www.bosch.io <http://www.bosch.io>
> >>>
> >>>     Registered Office: Berlin, Registration Court: Amtsgericht
> >>>     Charlottenburg; HRB 148411 B
> >>>     Chairman of the Supervisory Board: Dr.-Ing. Thorsten Lücke;
> >>>     Managing Directors: Dr. Stefan Ferber, Dr. Aleksandar Mitrovic, Yvonne
> >>>     Reckling
> >>>     _______________________________________________
> >>>     hono-dev mailing list
> >>>     hono-dev@xxxxxxxxxxx <mailto:hono-dev@xxxxxxxxxxx>
> >>>     To change your delivery options, retrieve your password, or
> >>>     unsubscribe from this list, visit
> >>>     https://www.eclipse.org/mailman/listinfo/hono-dev
> >>>
> >>>
> >>>
> >>> --
> >>> Regards
> >>> --
> >>> Dejan Bosanac
> >>> http://sensatic.net/about
> >>>
> >>> _______________________________________________
> >>> hono-dev mailing list
> >>> hono-dev@xxxxxxxxxxx
> >>> To change your delivery options, retrieve your password, or unsubscribe from
> this list, visit
> >>> https://www.eclipse.org/mailman/listinfo/hono-dev
> >>>
> >>
> >
> 
> --
> Mit freundlichen Grüßen / Best regards
> 
> Kai Hudalla
> 
> Software Developer - Bosch IoT Hub
> 
> Bosch.IO GmbH
> Ullsteinstr. 128
> 12109 Berlin
> GERMANY
> www.bosch.io
> 
> Registered Office: Berlin, Registration Court: Amtsgericht
> Charlottenburg; HRB 148411 B
> Chairman of the Supervisory Board: Dr.-Ing. Thorsten Lücke;
> Managing Directors: Dr. Stefan Ferber, Dr. Aleksandar Mitrovic, Yvonne
> Reckling
> _______________________________________________
> hono-dev mailing list
> hono-dev@xxxxxxxxxxx
> To change your delivery options, retrieve your password, or unsubscribe from this
> list, visit
> https://www.eclipse.org/mailman/listinfo/hono-dev

Best regards

Carsten Lohmann

Bosch IoT Hub - Product Area IoT Platform (IOC/PAP-HU) 
Bosch.IO GmbH | Ullsteinstr. 128 | 12109 Berlin | GERMANY | www.bosch.io

Sitz: Berlin, Registergericht: Amtsgericht Charlottenburg; HRB 148411 B 
Aufsichtsratsvorsitzender: Dr.-Ing. Thorsten Lücke; Geschäftsführung: Dr. Stefan Ferber, Dr. Aleksandar Mitrovic, Yvonne Reckling

Back to the top