<div dir="ltr"><br><div class="gmail_extra"><br><br><div class="gmail_quote">On Thu, Aug 28, 2014 at 4:26 PM, Bruno Oliveira <span dir="ltr">&lt;<a href="mailto:bruno@abstractj.org" target="_blank">bruno@abstractj.org</a>&gt;</span> wrote:<br>
<blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">Answers inline (this is just my personal opinion)<br>
<div class=""><br>
On 2014-08-28, Matthias Wessendorf wrote:<br>
</div><div class="">&gt; On Thu, Aug 28, 2014 at 4:03 PM, Bruno Oliveira &lt;<a href="mailto:bruno@abstractj.org">bruno@abstractj.org</a>&gt; wrote:<br>
&gt;<br>
&gt; &gt; I think this is something to fix at our SDKs,<br>
&gt;<br>
&gt;<br>
&gt; like releasing 1.0.x (Server and SDKs), where the versioning is in?<br>
<br>
</div>For our releases tagged as 1.0.0, make it clear that UPS 1.0.0 IS<br>
required, also make it clear at our docs the reasons behind it.<br>
<div class=""><br>
&gt;<br>
&gt; That&#39;s possible. And that way, we can say, why are you using 1.0.0, we<br>
&gt; released 1.0.1 with (some sort of) fixes<br>
<br>
</div>For further releases of UPS server like 1.0.x, make it clear at our<br>
documentation with something like &quot;This release requires the SDKs 1.0.x<br>
or superior&quot; and make it clear the reasons behind it.<br>
<br>
Is not a perfect solution but....trade-offs.<br></blockquote><div>I would also prefer this approach </div><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">
<div class="HOEnZb"><div class="h5">&gt;<br>
&gt; -M<br>
&gt;<br>
&gt;<br>
&gt; &gt; and think about the legacy, that&#39;s the price to pay.<br>
&gt; &gt;<br>
&gt; &gt; The easy solution is to defaults to 1.0.0, but it doesn&#39;t seem correct.<br>
&gt; &gt; â€”<br>
&gt; &gt; abstractj<br>
&gt; &gt; PGP: 0x84DC9914<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; On Thu, Aug 28, 2014 at 10:18 AM, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt;<br>
&gt; &gt; wrote:<br>
&gt; &gt;<br>
&gt; &gt;&gt; the problem is... our 1.0.0 SDKs do not specify a version :-)<br>
&gt; &gt;&gt; so, they would than talk to the latest greatest, that does not work.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; We need to have that in mind, when planing this.<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; On Thu, Aug 28, 2014 at 2:39 PM, Lucas Holmquist &lt;<a href="mailto:lholmqui@redhat.com">lholmqui@redhat.com</a>&gt;<br>
&gt; &gt;&gt; wrote:<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;&gt; +1 on Accept headers and also using the latest and greatest if no<br>
&gt; &gt;&gt;&gt; version is specified/<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; i believe this is what github also does<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On Aug 28, 2014, at 4:36 AM, Bruno Oliveira &lt;<a href="mailto:bruno@abstractj.org">bruno@abstractj.org</a>&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On 2014-08-28, Matthias Wessendorf wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On Thu, Aug 28, 2014 at 10:14 AM, Sebastien Blanc &lt;<a href="mailto:scm.blanc@gmail.com">scm.blanc@gmail.com</a>&gt;<br>
&gt; &gt;&gt;&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On Thu, Aug 28, 2014 at 9:29 AM, Daniel Bevenius &lt;<br>
&gt; &gt;&gt;&gt; <a href="mailto:daniel.bevenius@gmail.com">daniel.bevenius@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; If we go for the accept header and the consumer don&#39;t provide it, what<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; do we do ? Return an error or use implicitly the latest version ?<br>
&gt; &gt;&gt;&gt; Perhaps we can return the current version to not break any existing<br>
&gt; &gt;&gt;&gt; clients. New clients will need to provide an explicit version.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Why not but for how long do we return the &quot;old&quot; version by default ? (cf<br>
&gt; &gt;&gt;&gt; my questions around deprecation)<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; yep - I am for that: looks like I forgot, and I think we had that on our<br>
&gt; &gt;&gt;&gt; face2face: no version == 1.0.0 (old)<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; I vote for return the latest, instead of something old. And specify old<br>
&gt; &gt;&gt;&gt; versions if you want to.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; -M<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On 28 August 2014 09:25, Sebastien Blanc &lt;<a href="mailto:scm.blanc@gmail.com">scm.blanc@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Some questions :<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; * If we go for the accept header and the consumer don&#39;t provide it, what<br>
&gt; &gt;&gt;&gt; do we do ? Return an error or use implicitly the latest version ?<br>
&gt; &gt;&gt;&gt; * What will be our deprecation policy ? Do we want keep maintaining all<br>
&gt; &gt;&gt;&gt; the versions forever or let&#39;s say for 1.1 we still provide 1.0 and for<br>
&gt; &gt;&gt;&gt; 2.0<br>
&gt; &gt;&gt;&gt; we drop 1.0 ?<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; About the implementation :<br>
&gt; &gt;&gt;&gt; * I like the suggested CDI solution, if possible.<br>
&gt; &gt;&gt;&gt; * Erik also mentionned OSGI and I&#39;m -9999^99 to introduce that techno<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Sebi<br>
&gt; &gt;&gt;&gt; ps : I just read this blog post and it&#39;s really interesting :<br>
&gt; &gt;&gt;&gt; <a href="http://apiux.com/2013/05/14/api-versioning/" target="_blank">http://apiux.com/2013/05/14/api-versioning/</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On Thu, Aug 28, 2014 at 8:07 AM, Daniel Bevenius &lt;<br>
&gt; &gt;&gt;&gt; <a href="mailto:daniel.bevenius@gmail.com">daniel.bevenius@gmail.com</a>&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; +1 For using the Accept header to specify the version in the media type.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On 28 August 2014 07:50, Matthias Wessendorf &lt;<a href="mailto:matzew@apache.org">matzew@apache.org</a>&gt; wrote:<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Hello,<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; for the 1.1.x (master) we are potentially doing some changes on the<br>
&gt; &gt;&gt;&gt; Sender-API (see [1]).<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; However, for backwards compatibility we need to think about API<br>
&gt; &gt;&gt;&gt; versioning.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; For REST APIs there are (IMO) two options:<br>
&gt; &gt;&gt;&gt; * accept header<br>
&gt; &gt;&gt;&gt; * URIs<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; On our Face2Face meeting we briefly talked about this and I think the<br>
&gt; &gt;&gt;&gt; &quot;accept header&quot; solution was the one that had most fans. I think QMX<br>
&gt; &gt;&gt;&gt; added<br>
&gt; &gt;&gt;&gt; that it is better for migration. One thing we were not clear on (I<br>
&gt; &gt;&gt;&gt; think):<br>
&gt; &gt;&gt;&gt; What are HATEOS defined semantics?<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Besides the what (headers vs. URI), I think we should think about<br>
&gt; &gt;&gt;&gt; possible implementations, to switch different versions.<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Not sure, but wouldn&#39;t it be possible to inject an annotated<br>
&gt; &gt;&gt;&gt; SenderService into the RESTful endpoint, based on header values ?<br>
&gt; &gt;&gt;&gt; We could have a default impl (version 1.0.0) and an alternate one,<br>
&gt; &gt;&gt;&gt; that is injected if the accept header indicate API version 1.1<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; Any thoughts ?<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; -Matthias<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; [1]<br>
&gt; &gt;&gt;&gt; <a href="http://lists.jboss.org/pipermail/aerogear-dev/2014-August/008881.html" target="_blank">http://lists.jboss.org/pipermail/aerogear-dev/2014-August/008881.html</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; --<br>
&gt; &gt;&gt;&gt; Matthias Wessendorf<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; &gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; &gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; --<br>
&gt; &gt;&gt;&gt; Matthias Wessendorf<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; &gt;&gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; &gt;&gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; --<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; abstractj<br>
&gt; &gt;&gt;&gt; PGP: 0x84DC9914<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;&gt; _______________________________________________<br>
&gt; &gt;&gt;&gt; aerogear-dev mailing list<br>
&gt; &gt;&gt;&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt;&gt;&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;&gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; --<br>
&gt; &gt;&gt; Matthias Wessendorf<br>
&gt; &gt;&gt;<br>
&gt; &gt;&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; &gt;&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; &gt;&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
&gt; &gt;&gt;<br>
&gt; &gt;<br>
&gt; &gt;<br>
&gt; &gt; _______________________________________________<br>
&gt; &gt; aerogear-dev mailing list<br>
&gt; &gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; &gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
&gt; &gt;<br>
&gt;<br>
&gt;<br>
&gt;<br>
&gt; --<br>
&gt; Matthias Wessendorf<br>
&gt;<br>
&gt; blog: <a href="http://matthiaswessendorf.wordpress.com/" target="_blank">http://matthiaswessendorf.wordpress.com/</a><br>
&gt; sessions: <a href="http://www.slideshare.net/mwessendorf" target="_blank">http://www.slideshare.net/mwessendorf</a><br>
&gt; twitter: <a href="http://twitter.com/mwessendorf" target="_blank">http://twitter.com/mwessendorf</a><br>
<br>
&gt; _______________________________________________<br>
&gt; aerogear-dev mailing list<br>
&gt; <a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
&gt; <a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a><br>
<br>
<br>
--<br>
<br>
abstractj<br>
PGP: 0x84DC9914<br>
_______________________________________________<br>
aerogear-dev mailing list<br>
<a href="mailto:aerogear-dev@lists.jboss.org">aerogear-dev@lists.jboss.org</a><br>
<a href="https://lists.jboss.org/mailman/listinfo/aerogear-dev" target="_blank">https://lists.jboss.org/mailman/listinfo/aerogear-dev</a></div></div></blockquote></div><br></div></div>