CHAPTER 2 Writing Maintainable, Future-Friendly Code
If a component is updated by a single person and that person is backed
by a company or organization (that is, this developer is paid to maintain
the component), then it’s also probably safe to use. Any component that
looks like it’s somebody’s hobby should be avoided, even if it appears to do
everything you want. Unless you are willing to nurture that project in the
future, it’s a good idea to steer clear.
How responsive is the developer? At some point, you will find an error in
the component that you’re using. That error might be causing a functional-
ity issue in your Web application and so you want to get it fixed as quickly
as possible. The speed with which the developer can address your concern
is important. You can get a good sense of this by browsing public issue
trackers to see how long certain issues were open before being resolved.
Keep in mind that being resolved doesn’t necessarily mean there has to be
an official release, it could mean that the maintainer checked in a fix so
that the reporter can patch their own copy while waiting for the release.
A good turnaround time for a significant issue is measured in days rather
than weeks. If you can’t rely on fast turnaround from a third-party compo-
nent developer then the component probably shouldn’t be used.
How stable is the API? You might be tempted to use a third-party com-
ponent that is considered to be up-and-coming. Be wary of relying on
anything that hasn’t yet reached version 1.0. Prior to a 1.0 release, compo-
nents have a tendency to change quite dramatically. APIs are typically not
locked down until version 1.0 and that creates a challenge when you try to
upgrade the component. Relying on an ever-changing API footprint means
you will constantly be changing your code so that it will work with the
component. Do yourself a favor and wait until the component has reached
maturity before relying on it.
Who else is using it? Do your research to figure out who else is using this
component. Ideally you want something that is being used by two or more
large Web applications.