Contributing to open source Java projects is something I’ve been interested in for the past couple of years. There are thousands of Java libraries, frameworks and applications that wouldn’t exist without the active contribution of the open source community. In this blog post I’ll walk you through how you can get involved too!
This guide examines contributing to an open source Java project, followed by several examples of contributions in action. Later, you’ll find a case study showing how Acceptance Testing can help improve your project and its user community. We’ll show you how to write tests that ensure your implementation satisfies the user stories and acceptance criteria within the Contribution-Acceptance Agreement (CAA).
Java Design Patterns
Design patterns are among the most useful practices for a programmer. They help you speed up the programming process by solving general problems much quicker. Design patterns provide you with tested development paradigms, so the development process becomes quick and straightforward.
You can reuse design patterns to avoid small errors and issues, leading to significant problems in your project. Another advantage of design patterns is they enhance your code’s readability for others.
As the name suggests, Java design patterns is a collection of design patterns for Java. A product of seasoned architects and programmers, the patterns help you simplify development with Java. The project requires you to be familiar with the numerous Software Design Principles.
All the patterns in this project have useful descriptions to understand where you should use a particular pattern and where you shouldn’t. We recommend learning more about this project as it’s a must-have for every Java programmer. It has over 62 thousand stars on GitHub, so you can understand how popular it is.
Fastjson is a Java library that can be used to convert Java Objects into their JSON representation. It is created Alibaba
If you’re interested in the Internet of Things (IoT), then you must get acquainted with Arduino. It is an open-source electronics platform based on simple software and hardware. An Arduino board can read various inputs such as a finger pressing a button, a tweet, or a light on a sensor and convert it into an output, such as turning on a torch, activating a system, or publishing something.
As a microcontroller platform, it’s very accessible and easy to use. It has cross-platform compatibility as it can run on Mac OSX, Windows, and Linux. Even though it is quite simple to use, its versatility and flexibility make it suitable for experienced programmers.
If you want to use Java in IoT, then learning about Arduino would surely be a significant step. Its GitHub repository has more than ten thousand stars, so you can understand how popular it is.
Learn the basics
When working with GitHub, you should know how to use Git – one of the most popular version control tools (also known as revision control tools). Because developers constantly make changes to their code, they need a system that can manage those changes in a central repository. In this way, everyone involved in the development process can download a given piece of software, make changes, and submit updates.
Jenkins is the leading open-source automation server. Built with Java, it provides over 1000 plugins to support automating virtually anything, so that humans can actually spend their time doing things machines cannot.
Sndcpy is a neat solution for android audio forwarding. You can say that it’s scrcpy but for Android. Scrcpy is an open-source application for screen mirroring that lets you control an Android device from a macOS, Windows, or Linux desktop computer. Sndcpy enables you to forward audio from an Android ten device to your computer without needing any root access.
It is compatible with Windows, macOS, and Linux operating systems. As it is written in Java, you can learn a lot about it through its source code. Sndcpy is one of the best Java open source project ideas as you can try to replicate this solution and learn a lot about Java mobile development.
All skills are welcomed
Even non-programmers can contribute to open source projects! Documentation is needed for all projects, and sometimes this is poorly written and maintained. Thus, you can help by writing, updating or even translating documentation. Also, your design skills might come in handy: every application needs an interface, after all. Finally, you can contribute by managing a community by replying to questions and guiding newcomers.
Termux is a terminal emulator for Android. A big reason behind its immense popularity is its extensive collection of Linux packages. It lets you edit files with vim and nano, connect to servers over ssh, use the Python console as a calculator, or use frotz to run text-based games.
Learning about this project can teach you a lot about terminal emulation and Java mobile development. You can understand how popular it is when you consider that it has more than 6.7 thousand stars on its GitHub page.
Tsunami Security Scanner
Tsunami is a network security scanner. Its primary advantage is its extensive plugin system that allows you to detect severe vulnerabilities easily. Tsunami’s plugins are its biggest strength, and it relies on them to perform all kinds of scanning tasks. Even though it is in pre-alpha release, it has garnered more than six thousand stars on its Github page. So you can understand how prominent this project is.
Guice (pronounced ‘juice’) is a lightweight dependency injection framework for Java 6 and above, brought to you by Google.
Signal is a privacy-focused messaging app for Android devices. It is among the most prominent Java projects on GitHub with more than 14 thousand stars. It uses a phone’s data connection to communicate. Moreover, Signal can encrypt the messages stored on the user’s phone too.
If you’re interested in gaming and video game development, then this project is perfect for you. Mindustry is a resource management strategy game written in Java. You can check its code and see how the game works. It has more than six thousand stars on Github, so you can understand how popular it has become. If you want to learn about video game programming, getting familiar with this project will surely help.
People often ask me how they can contribute to open source Java projects. I get these questions on Stack Overflow, Twitter, Google+, email and other channels. I wrote this article to make it easy for people to find clear answers to most of their questions.