You have been provided with a new repository containing the final library implementation from another team for final code and design review. The actual task is (again) split into two parts.

In the first part, you are expected to familiarize yourself with the library (documentation should help with the initial orientation) and develop a small extension. In the second part, you are expected to review the library as if it was a software project that you consider depending on and summarize your review in several paragraphs of text (not a bullet list).


You are expected to extend the library so that it supports parsing dates/times in some reasonable format and the use this extension to create a simple time-format convertor program that can be used as follows:

> ./extension-program --date=2018-12-31T14:45 --format=%d.%m.

Note that we intentionally do not over-specify the details to allow solutions to nicely fit the design of the library. Check how example applications are integrated in the project and follow suit. Try to extend the library in the spirit of the open-closed principle, i.e., without modifying it. In the best case, you will be able to keep the extension local to the sample application.

Finally modify the CI setup so that it runs this example program as part of the build.


You should write the final review as if you were considering including the library as a long-term dependency into your project and had to justify your decision to collaborators.

When writing the review, start with the initial impression and the documentation, mentioning whether it was/was not helpful and how. Then review the API and check if the library satisfies the functional requirements.

Evaluate the quality of the implementation, readability, and coding style — this concerns, e.g., class responsibilities (including internal classes), use of methods for structuring code, use of variables and constants, layout of code in methods, or comments.

Evaluate test coverage (informally) and ease/difficulty of using the library. Evaluate also how easy/difficult it was to extend the library.


Submit your work in the master branch the repository. Put the review into a single markdown text file in the root directory of the repository and name it Tag the final commit using the task-7-submission tag.