Five Ultimate Criteria for Libraries Adoption

Tips about what every Software Engineer should evaluate

Victor Oliveira
Level Up Coding

--

Life is made of choices. Cass Sunstein & Richard Thaler can easily confirm this cliche in their best-seller: Nudge. Briefly resuming, Nudge describes how individuals’ likelihood of taking decisions can be influenced by the choice of architecture, or in other words, how the environment is shaped. Even though it’s pretty common to make choices unconsciously, the goal of this article is to provide five criteria in order to help deliberately evaluate and select libraries that could speed up software development.

A library, from a computing perspective, could be considered the implementation of behaviors with a well-defined interface through which they could be invoked.

For instance, people who want to write a higher-level program can use a library to make system calls instead of implementing them over and over again.

Sorted by importance, the following criteria could be considered to assess any library:

5 — Licensing

There are many different types of licenses for software distribution. The most common kind to run into — when looking for libraries widely distributed — has permissive authorizations. They tend to be open source, accept community contributions, and do not restrict commercial use.

On a large code base, proprietary licenses may apply since some companies don’t want to focus on more complex development scenarios that are not core to their business. Apart from support and features, an important item to be evaluated is pricing since the project budget might block its adoption.

MIT License example with explicit permissions and limitations

4 — Maintainability

A reliable library does not mean a library that is up-to-date. That matters because obsolete versions required by this ready-made piece of code that should speed development up could actually slow down or even block it.

One way to measure this is by observing the number of pull requests being recently merged. Also, the latest version of the library should have been published not long ago.

3 — Reliability

Open source is always better. Not just for security reasons, but also for clarification. When documentation punctually fails to be well-written or up-to-date, the need for reading what is being implemented by the library rises.

A reliable library also tends to have many contributors on its repository, which could be legitimated by Forks and Open Issues or Pull Requests without stale discussions. Stars — the act of being marked as a favorite — could be another metric, but with less significance since it’s less likely to guarantee an adoption.

2 — Documentation

Every Software Engineer likes to find well-written documentation to solve an issue. Well, the thing is, most of them do not like to write one. A library can be considered a tool, its documentation is the instruction manual. How can someone expect to master the usage of a tool without having guidance? An absence of references hardens the mastering of anything. It's unlikely to happen.

Documentation is crucial for libraries' adoption because it affects the learning curve about how to implement it. The easier it's to learn about a library, the faster will be the development of a product with it.

1 — Performance

Software that frequently crashes serves no purpose. For example, on mobile applications performance issues are the main reason for uninstalling. Performance gets to be the most important assertion since it can lead the product to a loss of market share.

Libraries should have reliable performance. Apart from being effective, they also should have an efficient algorithm. Being efficient here means doing more in less time.

In some contexts, also such as mobile applications, size matters a lot. It’s not odd to find implementations invoking a single method of an entire library. By coming across such context, a better solution could be — respecting licensing constraints — to copy this algorithm stretch or develop a self-made one.

Whenever a library does not fulfill the entire need of the application, think about promoting welfare by contributing to its development. Always prefer not to reinvent the wheel. Libraries are a very powerful tool to speed up software development, so make sure to take advantage of others' implementation to deliver a fast, but still accurate solution.

Now, tell me, do you think there are other criteria that could come in handy to speed up software development? Tell me more about your perspectives in the comments. Thank you for clapping & sharing if you enjoyed it, and don’t forget to follow me to stay tuned for upcoming articles! =}

References

--

--