Skip to main content

I have been contributing to open source software (OSS) projects in my life as a programmer and as a result I have gained a better understanding of APIs and frameworks. This practice has helped improve my skills for my developer tasks.

CREST is a project that I have contributed to and I would like to give an overview about and how to contribute to it. This project can be found at along with several other open source projects.


What is CLI?

First, you should understand what the CLI (Command Line Interface) is.

Applications that use the OS command line are commonly called CLI Applications or Command-Line Interface Applications. What does this mean? These applications only suffer some interaction through a shell (BASH, DOS, ZSH, among others), by text input.

This type of application is against the application’s GUI or Graphical User Interface Applications, that let the user interact with the application through icons. Layout the elements on the screen using the mouse for this.

Why create command-line tools?

One of the main reasons is the speed with which some tasks can be performed. By using text only, some trivial tasks are simpler to perform. For example, to copy all files *.txt from one directory to another:


  • Open the file manager
  • Browse directories to find the desired
  • Select all files that end with .txt
  • Copy the files
  • Change directory in the file manager
  • Paste the files


  • Open the terminal
  • Run the copy command: cp * .txt DESTINATION_FOLDER

How can CREST help me?

CREST is a framework that allows you to quickly write command line tools in Java. The API is super simple and 100% annotation based; it removes all complexities for you to develop command line tools.

To understand and use the CREST, I recommend reading the documentation.

A great example for it is Sheldon project that provides an interactive shell environment that can be accessed via SSH. The commands available in the shell are provided by implementing message driven beans (MDBs) using CREST.

What I did and how to contribute?

Contributing to the projects of has not been a difficult task, especially because of the fast feedback provided by the owners of the project, and the owners will always help you and show ways that can help in your contributions.

You can contribute to the project in various ways, I have contributed to CREST:

  • With validations translation;
  • With documentation update;
  • With addition of new features;
  • With bug fixes.

If you do not know where to start, just visit the issue tracker, select one issue and try to resolve it. You may have some doubt when trying to fix the issue; never hesitate to ask. It’s not uncommon to have some doubt when you aren’t accustomed with code yet.

Remember that creating an issue for bug, for a new feature or simply creating an issue for improvement can be your first step in the contribution of an open source project.

Hope to see you contributing to some open source project like I did with CREST on Developer collaboration on open source projects is one of many ways to keep the open source community strong, OSS projects innovative and developers recognized for their contribution to building better software. Select a project that you would like to contribute and go ahead!

Daniel Cunha

Daniel Cunha

Daniel is passionate about software development and a firm believer in Open Source community membership. His enthusiasm for Open Source and Java motivated him to become a committer to projects like DeltaSpike, Yougi, Lightweight EE, and JBoss Aesh. He contributes to Tomitribe, Apache Software Foundation (TomEE), JBoss, Spring, VRaptor, and Caelum Stella projects.

Leave a Reply