No subject

Tue Sep 21 04:50:38 BST 2010

it means that with every new Ubuntu release, you potentially have to
update your application to deal with changes in libraries. In addition,
you are under pressure to do that before the new Ubuntu release
otherwise your application may fail to work completely for a given
release. And to be honest, most developers would rather spend their time
adding new features rather than re-working existing ones for no obvious
improvement. This is even more pronounced with opportunistic developers
who may have a day job besides their Ubuntu apps and may not have the
time to spend on learning a new library and API every 6 months.

One of the primary reasons why Java has been a success in large
organisations, despite all its limitations, is the stability of the API
and libraries: if you write something for JSE 5.0, it will run with JSE
6.0 (well, 99% of the time, you may find the odd borderline case where
this is not true). That doesn't prevent the underlying implementation to
be improved or even totally swapped out for another one.

As an opportunistic application developer, one thing that would greatly
help me is if Ubuntu could provide high-level APIs that wrap the
underlying libraries and shield my applications from any change further
down. So, for example, if you had an image IO library that wraps the
underlying JPEG, GIF, PNG libs but had a stable API, I could code
against this so if the default JPEG library were to change between say
11.04 and 11.10, I wouldn't have to change my code. Or if someone added
support for XCF or WebP to that image IO library then I (and every other
developer that uses it) could benefit from the new support without
having to re-write anything. libpeas could provide a good framework for
that sort of things.

I know it's not easy to do (it's my day job to design stable and
re-usable APIs for large enterprise systems) but it's definitely worth
considering so that, when changes occur between releases of the OS, you
end up changing a small number of high-level libraries rather than a
large number of applications.



More information about the ubuntu-devel mailing list