5 Steps for Evaluating a Library

Have a short deadline? Boss breathing down your neck?

Don’t start prowling github just yet! Work through the following steps first.

1. Determine what you need.

Sounds simple, but so often we skip this basic step.

Write it down. Diagram it out.

Don’t move on to later questions until you have a clear picture of the gap you’re trying to fill.

2. Research existing options.

Once you know what you want to do, start researching!

What is the community using? Google+ and IRC are great ways to interact with your Android peers. Use Github and Google to search for libraries.

Once you’ve identified potential matches, make a list.

3. Identify technical risk(s).

Code is a liability and adds to the maintenance burden. Even a good lib can bring code bloat, APK file size increases, and higher dex counts.

Note any risks, pros, and cons you find for when considering these questions:

  • How big is the library?
  • What dependencies does it bring?
  • Are there security concerns?
  • Is it open source?
  • Does it do too much? Too little?
  • What formats are available (e.g. jar, aar, apklib)?
  • Does it have documentation?
  • Are there examples?
  • How active is the community?

4. Read the license.

Make sure you fully understand the software license. Consult with counsel (if you have it) and check out these two resources to understand the differences.

5. Should I write it myself?

There’s plenty of factors that go into this decision. Once you have answered the questions above for each library, you’ll know if something meets your needs. You may find only a partial solution or decide that the risks of existing libraries are too great.

Pro Tip: Now that you’ve conducted thorough research, share the knowledge! Write a blog about your comparison process and share with the world.

What do you consider before adapting integrating new libraries? Share your experience in the comments and/or join my mailing list.

Related Posts

Leave a Reply

Your email address will not be published. Required fields are marked *