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

It sounds good. 
+1

Best Regards
Karthees




>-----Original Message-----
>From: hono-dev-bounces@xxxxxxxxxxx <hono-dev-bounces@xxxxxxxxxxx> On
>Behalf Of Hudalla Kai (IOC/PAP-HU)
>Sent: Dienstag, 28. Januar 2020 15:22
>To: hono-dev@xxxxxxxxxxx
>Subject: Re: [hono-dev] Definition of Hono's public API
>
>On 28.01.20 10:44, Jens Reimann wrote:
>> Yes, I agree that the service-base mobile is a rather large chunk of code.
>>
>> Personally I think it would make sense breaking it up into smaller
>> pieces. Which would also make it easier to declare what is public, and
>> what not.
>>
>
>Placing all the public classes into a separate module/jar certainly makes sense.
>However, IMHO in order to do that we first need to identify the classes that we
>consider public API.
>
>My understanding so far is that we agree that the core and client modules are public
>API. In addition, all remote API definitions and the protocol adapters' device-side
>interfaces are public API as well.
>However, the protocol adapter implementions are *not* public API.
>
>Based on the further assumption that we also want to provide the device registry
>base classes as public API, we could take the following approach:
>Start from those base classes and determine all classes/interfaces that they depend
>on either directly or transitively within the service-base module. All these
>classes/interfaces are then part of the public API while all the remaining
>classes/interfaces of service-base are private API.
>
>Based on this partitioning we can then see if we are able to create a separate
>module for just the public API without creating split packages or if we also need to
>move some classes to other packages before doing so.
>
>Would that work for everybody?
>
>
>> Maybe a quick solution to that is to not declare the service-base
>> module public. And split the module into smaller chunks for 1.2.x. We
>> could still provide a "fat jar", composed of the other JARs for 1.2,
>> to make it easier to migrate.
>
>> On Mon, Jan 27, 2020 at 5:15 PM Dejan Bosanac <dejanb@xxxxxxxxxxxx
>> <mailto:dejanb@xxxxxxxxxxxx>> wrote:
>>
>>     Hi Kai,
>>
>>     I still think there are a lot of interfaces/classes in service-base
>>     module that we should consider the public API. All device registry
>>     and device connection services definitions live there.
>>
>>     On Wed, Jan 22, 2020 at 9:41 AM Hudalla Kai (IOC/PAP-HU)
>>     <Kai.Hudalla@xxxxxxxx <mailto:Kai.Hudalla@xxxxxxxx>> 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>
>>         <mailto: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> <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>
>>         <mailto: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 <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
>>         >>
>>         >
>>
>>         --
>>         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
>>         _______________________________________________
>>         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 <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
>>
>>
>>
>> --
>> Jens Reimann
>> Principal Software Engineer / EMEA ENG Middleware
>> Werner-von-Siemens-Ring 14
>> 85630 Grasbrunn
>> Germany
>> phone: +49 89 2050 71286
>>
>______________________________________________________________________
>> _______
>>
>> Red Hat GmbH, www.de.redhat.com <http://www.de.redhat.com>, Registered
>> seat: Grasbrunn, Commercial register: Amtsgericht Muenchen, HRB
>> 153243, Managing Directors: Charles Cachera, Laurie Krebs, Michael
>> O'Neill, Thomas Savage
>>
>> _______________________________________________
>> 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

Back to the top