On Sun, 20 Nov 2011 21:03:00 -0200 Gustavo Sverzut Barbieri <barbi...@profusion.mobi> wrote:
> On Sun, Nov 20, 2011 at 4:48 PM, Lucas De Marchi > <lucas.demar...@profusion.mobi> wrote: > > On Sun, Nov 20, 2011 at 2:18 AM, Carsten Haitzler <ras...@rasterman.com> > > wrote: > >> On Sat, 19 Nov 2011 14:24:46 -0200 Lucas De Marchi > >> <lucas.demar...@profusion.mobi> said: > >> > >>> On Sat, Nov 19, 2011 at 7:25 AM, Carsten Haitzler <ras...@rasterman.com> > >>> wrote: > >>> > while making connman work and improve is good... the edbus connman api > >>> > has been quite heavily broken now. > >>> > > >>> > this is now a blocker for efl 1.1 and we can't release until resolved. > >>> > here is what has happened: > >>> > > >>> > e_connman_service_apn_get() removed > >>> > e_connman_service_apn_set() removed > >>> > e_connman_service_ethernet_netmask_get() removed > >>> > e_connman_service_mnc_get() removed > >>> > e_connman_service_mode_get() removed > >>> > e_connman_service_security_get() api/abi break in parameters passed > >>> > e_connman_service_setup_required_get() removed > >>> > > >>> > we can't release with all these breaks. we are the ones providing an > >>> > advertised stable api to talk to connman. if connman itself breaks api, > >>> > it is our job to do either: > >>> > >>> I think there's not point in saying we implement a stable connman API. > >>> There's no way to check at runtime what is the version of ConnMan and > >>> doing all the work to be compatible with previous api is totally > >>> insane. > >> > >> then bump the major .so version and bump up the pc to be econnman-2.pc and > >> move the headers to e_dbus-2/ instead of e_dbus-1/, make sure all the > >> autofoo does the right thing there in the build tree and make sure > >> everyone knows it. the problem is they kind of don't because its hidden > >> inside a debus-1.x tarball bundle. > >> > >> it's a pretty simple rule. you DON'T BREAK API OR ABI of a library within > >> the same major version. > > > > My argument is that there's no reason to do this in a library. It's > > just there because there's currently no better way of doing it. The > > application using edbus won't know which version of the library it has > > to link to > > > > > >> > >>> E.g. the case a property changed from plain string to an array of > >>> strings. The natural name of the method for *future* versions cannot > >>> be used. > >> > >> after all the "we must release! release!" now this is not wanting to > >> accept the responsibility of a release, and that is to keep compatibility. > >> it is the > > > > That is the reason there's a flag saying what is and what isn't stable. > > > >> responsibility of the library writers to keep that compatibility - > >> regardless what the connman dbus protocol does. the protocol provided a > >> single string before, and now its an array - well my bet is in that array > >> somewhere IS that original string - so for compatibility you make the old > >> api provide the "first string in the array" for example. yes - it's a > >> pain. yes. it's work. yes > > > > It doesn't work. It compiles, but it doesn't work. Unless you send a > > dbus message with one type of parameters, and on error you send > > another. Ugly! > > > > > >> connman dbus protocol changed - but that's not a pain you pass on to your > >> api users WITHOUT a big red blinking sign saying "look - it broke! don't > >> upgrade to this unless you are prepared to do some porting work on your > >> code". if e_dbus > > > > There is a blinking sign saying: this is unstable, don't upgrade > > unless you agree that this interface can change. > > > >> was 0.x.x - we could pass it off as "hell it's still getting its act > >> together so it has no clue what api to use". > >> > >>> As such the plan is to support the most recent versions packaged by > >>> distros, at least until the ConnMan API becomes more stable. This is > >>> why we added this in E_Connman.h: > >> > >> added... but it wasn't there on 1.0. 1.0 set up the playfield with an > >> advertisement of stability as long as its 1.x - every time api breaks you > >> also > > > > My argument is: e_dbus is stable after 1.0 and there's no point in > > claiming e_dbus/*/ are stable. > > > > > >> drive people away - ESPECIALLY when the api breaks after a 1.x AND even > >> more when you break it withotut changing major version. > >> > >> i'm just saying - that by writing a library with a public and stable api > >> it is the responsibility of that author to not break api or abi during the > >> lifetime of that major version. doing so simple breaks the rules and > >> conventions laid down in unix and linux over decades that let people know > >> that there was a break. :) > >> > >>> #ifndef E_CONNMAN_I_KNOW_THIS_API_IS_SUBJECT_TO_CHANGE > >>> #error "E_Connman.h is an unstable API linked to upstream connman project" > >>> #endif > >>> > >>> > >>> However I really hope that at the time this happens we don't need this > >>> submodule anymore. Gustavo began to work on a tool to generate the C > >>> bindings (just like there's in, for example, qt and glib) to ease the > >>> use of dbus. Therefore we would not need this part of the lib and the > >>> application could directly use dbus. > >> > >> then maybe copy the existing connman code into e17's connman module and > >> replace that code when codegen works. we can keep shipping the e_dbus > >> connman forever and not change its api or abi. :) > > > > This is the most sane thing I heard and I think it's the only way to > > improve connman module in E. > > > > Then I would really like to mark all the connman calls in e_dbus as > > deprecated. > > > > > >> > >>> For *this* release, it's sufficient to say we don't provide an stable API. > >> > >> unfortunately.. it's too late for that. it's a stable api because it was in > >> january when released as 1.0. this is the price u pay for making a stable > >> release that every distro and packager and user is demanding of us. > > > > In January we already know the connman API wasn't stable and we agreed > > the it could change. It was just not written nowhere. Now it is (well, > > it was before you reverted the patch). > > What I tried to mean as well in README is that while libedbus.so is > stable and there is an API for it, everything else in e_dbus/src/lib/ > is convenience that is linked to the target service. As it should be. > We just need these things due lack of code generator. > > None of e_dbus/src/lib/* are abstraction layers in the sense of Ecore > et al. They are direct 1:1 mapping to the service. They always should > be. > > If one wants to create some enetwork that may talk to connman or > networkmanager, then that's fine. Similar to ediskmanager to talk to > hal or udisks. But that's not the case now. We will never need ediskmanager. HAL is dead and not being updated, and the udisks people at least have a clue on how to write stable apis. > > ASAP I'll remove libeconnman.so it will cease to exist. A new library > will be in, then it's not causing problems. > > So this "it's a release, you ask for it then you complain" is just > *FUD*. Please stop. Don't flip things upside down. > -- Mike Blumenkrantz Zentific: Doctor recommended, mother approved. ------------------------------------------------------------------------------ All the data continuously generated in your IT infrastructure contains a definitive record of customers, application performance, security threats, fraudulent activity, and more. Splunk takes this data and makes sense of it. IT sense. And common sense. http://p.sf.net/sfu/splunk-novd2d _______________________________________________ enlightenment-devel mailing list enlightenment-devel@lists.sourceforge.net https://lists.sourceforge.net/lists/listinfo/enlightenment-devel