[no subject]
> Let me quickly outline the policy:
>
> "If you want to include compat code, you need to add the string
> 'libgnome1-compat' to your pkg-config dependency list"
>
> Fairly easy to explain, lucid and simple, IMHO.
I fail to see how two policies can be easier to understand than
one policy. And your policy simply does not work for GTK+...
[....]
> > - Using #defines allows integration of the docs for the deprecated
> > functions with the main docs using gtk-doc. gtk-doc will catch the
> > #ifdef when parsing the headers and put a warning by deprecated
> > functions.
>
> Problem with documentation is that if a method is documented,
> people tend to use it - the converse being true too. The compat code is
> simply to make porting easy; we have no desire for people to be easily
> finding out about and using these old and nasty APIs. If they need to,
> there are always the old API docs to refer to.
What is someone more likely to use accidentally:
- A function they cut-and-pasted some from some code from
somewhere and couldn't find any docs on.
- A function documented with a big Warning next to it:
http://developer.gnome.org/doc/API/2.0/gtk/gtklabel.html#GTK-LABEL-GET
> > - And least importantly, but not irrelevant - adding extra functions
> > to a library has very little overhead - adding extra libraries
> > has a big overhead. This is a consequence of the way ELF works -
> > basically you need to do a hash table lookup for each loaded
> > library.
>
> Well - lets say that this was the determining factor in startup
> speed, and that it was a totaly unneccessary addition, and that the
> library sat on top of plain gtk+. On my system an ldd on gtk-demo has 19
> shared libraries linked in - with more at runtime no doubt; so we'd add a
> 5% performance penalty. Not significant in terms of some of the builtin
> algorithmic inefficiencies around the place.
Well, you are assuming the ability to put all the compat stuff
in one library.
-lgtk12-compat -glib12-compat -lgnome-compat
Is already three. Then imagine the next release:
-lglib12-compat -lgtk20-compat -lpango10-compat -latk10-compat -lgtk20compat
-lgdkpixbuf20-compat ... -lgnomeui1-compat -lbonobo-compat .....
This is not a scaleable way of going about things. And how
are you going to about deprecating things without breaking
binary compat ... this isn't even possible with your scheme.
> > This is one of the points of having consistent FOO_DISABLE_DEPRECATED
> > macros ... it's very easy for automated tools to track what what entry
> > points are deprecated and check if a library is using them.
>
> It's extremely easy with a separate library - you just do:
>
> ldd my-broken-app | grep 1-compat
>
> > And since -DFOO_DISABLE_COMPAT allows deprecation on the individual
> > function level, we can make sure that all functions that need to be
> > deprecated are deprecated.
>
> This is nice indeed, but not a big issue for Gnome 2.0 I think.
I don't see why we should be using a deprecation methology for
gnome-libs:
- That doesn't work for most of our libraries
- That doesn't allow method level deprecation
- That doesn't work with our doc tools
- That won't work for future versions of GNOME
When we have a better one available.
Regards,
Owen
[
Date Prev][Date Next] [
Thread Prev][Thread Next]
[
Thread Index]
[
Date Index]
[
Author Index]