You will receive access to a new repository with the library implementation from another team. Your task is to perform the final code and design review and develop a small extension. This task is done individually, which means that you should receive two reviews for your code.

Review

Familiarize yourself with the code assigned to you (documentation should help you with initial orientation in the project). When writing the review, start with the initial impression and the documentation, mentioning whether it was/was not helpful and how. The 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 review as a single markdown text file placed in the root directory of your repository and name it FINAL_REVIEW.md.

Extension

The other part of this task is to extend the library to allow parsing dates/times in some reasonable format. Then use this extension to create a simple time-format convertor program that can be used in the following manner:

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

Note that we intentionally do not formally over-specify the details to allow solution that nicely fits with the design of the library.

Setup CI so it runs this example program as part of the build.

Do not forget to include comments on how easy/difficult it was to extend the library in your review.