Posts Tagged ‘library’
Is Creating a Compatibility Layer Worth the Time?
I’ve been asking myself this question since I officially became a part of the computer industry… is creating a compatibility layer worth the time?
Before that, perhaps I should explain what a “compatibility layer” is. It is a separate project that sits between a 3rd party library and the project(s) that are our actual client project. Its primary function is to provide stability for the client project, so whenever there is a new 3rd party library that we want to use, we will already have standardized API and can simply extend or replace existing classes in the compatibility layer.
Of course, it costs considerable manpower to create such a compatibility layer. It will take a lot more hours to create such a project than if it were implemented directly on a 3rd party library. Not to mention:
- If we model the compatibility layer according to one library (or even create our own class models), another library may not be using exactly the same paradigms and constructs, so whenever time comes to replace one particular library, it will also become a tough challenge.
- The software that we write will require more resources to run, because of this additional layer that doesn’t actually do any real work.
A couple of years back, the team chose not to create such a layer. We paid a hefty price; when there was a decision to “tone down” our application from 3-dimensional to 2-dimensional, our first reaction was … “WTF?!?!” because that would mean restarting nearly from scratch, with a new library.
So now I’m back with the question. I am currently struggling to juggle between the 3rd party modules for Google Web Toolkit (GWT):
- GXT (a.k.a. Ext-GWT, ExtJS’s own GWT add-on; our current standard, but we want to replace it because it recently adopted a viral license – not good for commercial projects)
- GWT-Ext (a free (LGPL) 3rd party to the Ext library – but itself controversially depends on the last version of Ext library that was still non-viral (and had ambiguous licensing terms), and is no longer maintained by its author)
- SmartGWT (an emerging next-generation library for GWT; better back-end structure (based on the more mature SmartClient, compared to the younger ExtJS), a more liberal license (LGPL), but unfortunately still in beta and its features are rather limited)
So is it worth the time to create such a layer? I’m still too much a newbie in the area of computer industry to answer this question unambiguously. What do you think?