  During the development of a software project, developers often need to
upgrade third-party libraries (TPLs), aiming to keep their code up-to-date with
the newest functionalities offered by the used libraries. In most cases,
upgrading used TPLs is a complex and error-prone activity that must be
carefully carried out to limit the ripple effects on the software project that
depends on the libraries being upgraded. In this paper, we propose EvoPlan as a
novel approach to the recommendation of different upgrade plans given a pair of
library-version as input. In particular, among the different paths that can be
possibly followed to upgrade the current library version to the desired updated
one, EvoPlan is able to suggest the plan that can potentially minimize the
efforts being needed to migrate the code of the clients from the library's
current release to the target one. The approach has been evaluated on a curated
dataset using conventional metrics used in Information Retrieval, i.e.,
precision, recall, and F-measure. The experimental results show that EvoPlan
obtains an encouraging prediction performance considering two different
criteria in the plan specification, i.e., the popularity of migration paths and
the number of open and closed issues in GitHub for those projects that have
already followed the recommended migration paths.
