Hi David,

On Wed, Jun 15, 2016 at 9:45 AM, David Siang Fong Oh <d...@thoughtworks.com>
wrote:

> Just my two cents on API versioning:
>
>    - I agree that it's good practice to retire API versions. Maintaining
>    too many older versions is costly. The question is how many old versions to
>    support.
>    - API versioning should allow application developers to upgrade their
>    DHIS2 server without requiring changes to their application, however the
>    eventual goal should still be to migrate their application to use the newer
>    API. The API versioning simply buys them time to do the migration.
>    - Can we introduce deprecation warnings for previous API versions?
>    i.e. If we plan to remove API *xyz* in v2.27, then in v2.25 and v2.26
>    we print deprecation warnings in the DHIS2 server log stating that API
>    *xyz* will be removed in v2.27.
>
>

Yes agreed. Sounds like a good idea to me.

regards,

Lars


> Thoughts?
>
> Cheers,
>
> -doh
>
> On Wed, Jun 15, 2016 at 12:48 PM, Lars Helge Øverland <l...@dhis2.org>
> wrote:
>
>> Hi Vanya,
>>
>> retiring API versions is what most vendors do. There is a balance between
>> the cost of maintaining old versions vs producing new features and
>> providing a modern application. We know that things inevitably change over
>> time due to needs from users.
>>
>> The API versioning is meant to provide a comfortable upgrade path for app
>> developers. We are trying to not break things, so ideally rolling over to a
>> new version should introduce little changes on the client side.
>>
>> You can e.g. see how google does it here:
>>
>>
>> https://developers.google.com/maps/documentation/javascript/versions#for-cutting-edge-applications
>>
>>
>> regards,
>>
>> Lars
>>
>>
>>
>> On Wed, Jun 15, 2016 at 7:23 AM, Morten Olav Hansen <mor...@dhis2.org>
>> wrote:
>>
>>> Well, there is already the case of metadata, where /api/metadata returns
>>> a different import report than /api/{23,24}/metadata, it will make those
>>> kind of changes easier (we have a few places where we wanted to clean up
>>> status codes etc, which we could not do as it would break apps)
>>>
>>> To have true versioning we definitely need to introduce the DTO
>>> abstraction, but let's see.. not for 2.24 at least
>>>
>>> --
>>> Morten Olav Hansen
>>> Senior Engineer, DHIS 2
>>> University of Oslo
>>> http://www.dhis2.org
>>>
>>> On Wed, Jun 15, 2016 at 11:53 AM, Vanya Seth <van...@thoughtworks.com>
>>> wrote:
>>>
>>>> Adding DTO layer makes sense :). It will simplify stuff.
>>>>
>>>> But unless you are looking at versioned DTO's itself, I am not sure how
>>>> long a way this might help you with versioning support.
>>>>
>>>> Regards
>>>> Vanya
>>>>
>>>> On Wed, Jun 15, 2016 at 9:04 AM, Morten Olav Hansen <mor...@dhis2.org>
>>>> wrote:
>>>>
>>>>> Hi Vanya
>>>>>
>>>>> It's not so much that we have to / want to remove older versions, it
>>>>> just that we can't guarantee more than a few APi versions. Remember that 
>>>>> we
>>>>> also are not using DTOs yet, so within a few versions, there are bound to
>>>>> be incompatibilities in the payloads. Discussions about DTOs are still
>>>>> going on.
>>>>>
>>>>> --
>>>>> Morten Olav Hansen
>>>>> Senior Engineer, DHIS 2
>>>>> University of Oslo
>>>>> http://www.dhis2.org
>>>>>
>>>>> On Tue, Jun 14, 2016 at 7:48 PM, Vanya Seth <van...@thoughtworks.com>
>>>>> wrote:
>>>>>
>>>>>> Hi Morten
>>>>>>
>>>>>> Supporting API versioning is great but why do we want to get rid of
>>>>>> the previous versions as you explained in your email.
>>>>>> Well the whole point of supporting versioning is to let people
>>>>>> continue to use the older versions without the fear of breaking anything.
>>>>>> I can understand that we might not support it  (like bug fixing etc).
>>>>>> But completely getting rid of it ??
>>>>>>
>>>>>> Regards
>>>>>> Vanya
>>>>>>
>>>>>> On Tue, Jun 14, 2016 at 2:58 PM, Paulo Grácio <paulogra...@gmail.com>
>>>>>> wrote:
>>>>>>
>>>>>>> Ok, works fine with that version. Not sure if you guys are using
>>>>>>> Docker but if you are some images can be found here
>>>>>>> https://hub.docker.com/r/pgracio/dhis2-web/tags/
>>>>>>>
>>>>>>> Thanks,
>>>>>>> Paulo
>>>>>>>
>>>>>>> On Tue, Jun 14, 2016 at 10:55 AM Morten Olav Hansen <
>>>>>>> mor...@dhis2.org> wrote:
>>>>>>>
>>>>>>>> Yes, that should be fine
>>>>>>>>
>>>>>>>> --
>>>>>>>> Morten Olav Hansen
>>>>>>>> Senior Engineer, DHIS 2
>>>>>>>> University of Oslo
>>>>>>>> http://www.dhis2.org
>>>>>>>>
>>>>>>>> On Tue, Jun 14, 2016 at 3:36 PM, Paulo Grácio <
>>>>>>>> paulogra...@gmail.com> wrote:
>>>>>>>>
>>>>>>>>> Ok, thanks for the clarification.
>>>>>>>>>
>>>>>>>>> Can I use this war to build a docker image to run system tests?
>>>>>>>>> https://www.dhis2.org/download/releases/trunk/dhis.war
>>>>>>>>>
>>>>>>>>> BR,
>>>>>>>>> Paulo
>>>>>>>>>
>>>>>>>>>
>>>>>>>>> On Tue, Jun 14, 2016 at 10:33 AM Morten Olav Hansen <
>>>>>>>>> mor...@dhis2.org> wrote:
>>>>>>>>>
>>>>>>>>>> Ah, ok.. so in 2.23, only /api/23/metadata endpoint is
>>>>>>>>>> versioned.. nothing else, everything will be part of 2.24
>>>>>>>>>>
>>>>>>>>>> --
>>>>>>>>>> Morten Olav Hansen
>>>>>>>>>> Senior Engineer, DHIS 2
>>>>>>>>>> University of Oslo
>>>>>>>>>> http://www.dhis2.org
>>>>>>>>>>
>>>>>>>>>> On Tue, Jun 14, 2016 at 3:29 PM, Paulo Grácio <
>>>>>>>>>> paulogra...@gmail.com> wrote:
>>>>>>>>>>
>>>>>>>>>>> Version:
>>>>>>>>>>> 2.23
>>>>>>>>>>> Build revision:
>>>>>>>>>>> 22991
>>>>>>>>>>> Build date:
>>>>>>>>>>> 2016-06-10 17:48
>>>>>>>>>>>
>>>>>>>>>>> On Tue, Jun 14, 2016 at 10:20 AM Morten Olav Hansen <
>>>>>>>>>>> mor...@dhis2.org> wrote:
>>>>>>>>>>>
>>>>>>>>>>>> - In DHIS 2.24 will you keep the API version 23?
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Yes, the plan is to keep 3 versions available, for 2.24 /api/23
>>>>>>>>>>>> and /api/24 is available, for 2.25 we will add /api/25, and for 
>>>>>>>>>>>> 2.26 we
>>>>>>>>>>>> will add /api/26 and remove /api/23
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> - Are all endpoints versioned? I'm trying to use
>>>>>>>>>>>>> http://localhost:8085/api/23/dataElements and it returns 404.
>>>>>>>>>>>>> http://localhost:8085/api/dataElements works fine.
>>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>> Yes, what version are you on?
>>>>>>>>>>>>
>>>>>>>>>>>> https://play.dhis2.org/dev/api/dataElements.json
>>>>>>>>>>>> https://play.dhis2.org/dev/api/23/dataElements.json
>>>>>>>>>>>> https://play.dhis2.org/dev/api/24/dataElements.json
>>>>>>>>>>>>
>>>>>>>>>>>> All works on latest trunk
>>>>>>>>>>>>
>>>>>>>>>>>> --
>>>>>>>>>>>> Morten
>>>>>>>>>>>>
>>>>>>>>>>>>
>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>> Paulo
>>>>>>>>>>>>>
>>>>>>>>>>>>> On Tue, Jun 14, 2016 at 4:35 AM Morten Olav Hansen <
>>>>>>>>>>>>> mor...@dhis2.org> wrote:
>>>>>>>>>>>>>
>>>>>>>>>>>>>> Hi Jason
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> Yes, the idea is that your app should target a specific API
>>>>>>>>>>>>>> version. We are discussing letting /api/ always be the latest, 
>>>>>>>>>>>>>> -but- one of
>>>>>>>>>>>>>> the reasons for adding versioning at all, was that we wanted to 
>>>>>>>>>>>>>> make more
>>>>>>>>>>>>>> breaking changes... so if you app only targets /api/ and not 
>>>>>>>>>>>>>> /api/{version}
>>>>>>>>>>>>>> there is a bigger risk that your app will break going forward.
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> --
>>>>>>>>>>>>>> Morten Olav Hansen
>>>>>>>>>>>>>> Senior Engineer, DHIS 2
>>>>>>>>>>>>>> University of Oslo
>>>>>>>>>>>>>> http://www.dhis2.org
>>>>>>>>>>>>>>
>>>>>>>>>>>>>> On Tue, Jun 14, 2016 at 12:18 AM, Jason Pickering <
>>>>>>>>>>>>>> jason.p.picker...@gmail.com> wrote:
>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Hi Morten,
>>>>>>>>>>>>>>> I am a bit confused by this. Will we have to provide the
>>>>>>>>>>>>>>> explicit api version of the current version? So if we are on 
>>>>>>>>>>>>>>> 2.24,will all
>>>>>>>>>>>>>>> API calls to the default API require the current version of the 
>>>>>>>>>>>>>>> server?
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> Regards,
>>>>>>>>>>>>>>> Jason
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>> On Mon, Jun 13, 2016, 18:58 Paulo Grácio <
>>>>>>>>>>>>>>> paulogra...@gmail.com> wrote:
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Ok, will create the tests based on /api/23/metadata.
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> Thanks,
>>>>>>>>>>>>>>>> Paulo
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>> On Mon, Jun 13, 2016 at 11:17 AM Morten Olav Hansen <
>>>>>>>>>>>>>>>> mor...@dhis2.org> wrote:
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> No, that won't work right now, that endpoint is anyways
>>>>>>>>>>>>>>>>> getting deprecated (replaced by /api/23/metadata and 
>>>>>>>>>>>>>>>>> /api/24/metadata)
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>> Morten Olav Hansen
>>>>>>>>>>>>>>>>> Senior Engineer, DHIS 2
>>>>>>>>>>>>>>>>> University of Oslo
>>>>>>>>>>>>>>>>> http://www.dhis2.org
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> On Mon, Jun 13, 2016 at 4:11 PM, Paulo Grácio <
>>>>>>>>>>>>>>>>> paulogra...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> Hi Morten,
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> yes removing Content type header makes it work but
>>>>>>>>>>>>>>>>>> shouldn't it work with that header also? It works fine for 
>>>>>>>>>>>>>>>>>> other GET API
>>>>>>>>>>>>>>>>>> calls.
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> /Paulo
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>> On Mon, Jun 13, 2016 at 10:11 AM Morten Olav Hansen <
>>>>>>>>>>>>>>>>>> mor...@dhis2.org> wrote:
>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Hi Paulo
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> Is there any reason you are doing this request? I assume
>>>>>>>>>>>>>>>>>>> you want XML back? you dont need to set input content-type 
>>>>>>>>>>>>>>>>>>> as you are not
>>>>>>>>>>>>>>>>>>> sending anything, and some of our internal gets a bit 
>>>>>>>>>>>>>>>>>>> confused because of
>>>>>>>>>>>>>>>>>>> this... removing content-type makes it work
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> --
>>>>>>>>>>>>>>>>>>> Morten Olav Hansen
>>>>>>>>>>>>>>>>>>> Senior Engineer, DHIS 2
>>>>>>>>>>>>>>>>>>> University of Oslo
>>>>>>>>>>>>>>>>>>> http://www.dhis2.org
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>> On Sun, Jun 12, 2016 at 10:47 PM, Paulo Grácio <
>>>>>>>>>>>>>>>>>>> paulogra...@gmail.com> wrote:
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Hi all,
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> when calling the metadata API with Content-Type header
>>>>>>>>>>>>>>>>>>>> it returns a 500.
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> curl -H "Accept: application/xml" -H "Content-Type:
>>>>>>>>>>>>>>>>>>>> application/xml" -u admin:district "
>>>>>>>>>>>>>>>>>>>> https://play.dhis2.org/demo/api/metadata?lastUpdated=2014-02
>>>>>>>>>>>>>>>>>>>> "
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> Best regards,
>>>>>>>>>>>>>>>>>>>> Paulo
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>>>>>>>>>>>>>>>> Post to     : dhis2-devs@lists.launchpad.net
>>>>>>>>>>>>>>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>>>>>>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>>> _______________________________________________
>>>>>>>>>>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>>>>>>>>>>>> Post to     : dhis2-devs@lists.launchpad.net
>>>>>>>>>>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>>>>>>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>>
>>>>>>>>>>>>>>
>>>>>>>>>>
>>>>>>>>
>>>>>>> _______________________________________________
>>>>>>> Mailing list: https://launchpad.net/~dhis2-devs
>>>>>>> Post to     : dhis2-devs@lists.launchpad.net
>>>>>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>>>>>> More help   : https://help.launchpad.net/ListHelp
>>>>>>>
>>>>>>>
>>>>>>
>>>>>>
>>>>>> --
>>>>>> With Regards
>>>>>> ThoughtWorks Technologies
>>>>>> Hyderabad
>>>>>>
>>>>>> --Stay Hungry Stay Foolish!!
>>>>>>
>>>>>
>>>>>
>>>>
>>>>
>>>> --
>>>> With Regards
>>>> ThoughtWorks Technologies
>>>> Hyderabad
>>>>
>>>> --Stay Hungry Stay Foolish!!
>>>>
>>>
>>>
>>> _______________________________________________
>>> Mailing list: https://launchpad.net/~dhis2-devs
>>> Post to     : dhis2-devs@lists.launchpad.net
>>> Unsubscribe : https://launchpad.net/~dhis2-devs
>>> More help   : https://help.launchpad.net/ListHelp
>>>
>>>
>>
>>
>> --
>> Lars Helge Øverland
>> Lead developer, DHIS 2
>> University of Oslo
>> Skype: larshelgeoverland
>> l...@dhis2.org
>> http://www.dhis2.org <https://www.dhis2.org/>
>>
>>
>> _______________________________________________
>> Mailing list: https://launchpad.net/~dhis2-devs
>> Post to     : dhis2-devs@lists.launchpad.net
>> Unsubscribe : https://launchpad.net/~dhis2-devs
>> More help   : https://help.launchpad.net/ListHelp
>>
>>
>


-- 
Lars Helge Øverland
Lead developer, DHIS 2
University of Oslo
Skype: larshelgeoverland
l...@dhis2.org
http://www.dhis2.org <https://www.dhis2.org/>
_______________________________________________
Mailing list: https://launchpad.net/~dhis2-devs
Post to     : dhis2-devs@lists.launchpad.net
Unsubscribe : https://launchpad.net/~dhis2-devs
More help   : https://help.launchpad.net/ListHelp

Reply via email to