Originally published at: https://pi-hole.net/2018/01/11/pi-hole-is-open-source-consume-contribute-or-both/
Pi-hole is a great project for all experience levels–both as a piece of software to consume and as an open source project you can contribute to. Whether you just started getting interested in software and want to learn how to program or contribute to an open source project; or you have been a life-long tinkerer and love to get your hands dirty with technical goodness, Pi-hole has something to offer.
For The Technological NoviceWant to block ads for your entire network without the need to install something on each of your computers?
You can install and configuring Pi-hole in about ten minutes to achieve network-wide ad blocking (if you don’t believe us, ask our users). The process is completely automated after you answer a few questions about your network. Then, just make one change on your router, and you’re all set.
We specifically designed Pi-hole to be easy to install. It does require a Linux system, but don’t let that intimidate you. If you can type text into the computer and press Enter several times in a row, you can get Pi-hole installed.
There are two stumbling blocks for the novice that come to mind:have a computer with Linux on it; most non-technical people will not be using it on their daily computer.
The latter may also be a challenge, but for most installs, this step is completely independent from the Pi-hole software itself. If you have ever setup a Wi-Fi password on a router, you can probably figure this step out.
For The Raspberry Pi-lover (and other SBCs)Pi-hole's roots began with the Raspberry Pi. but our software has grown beyond the lovable Single Board Computer and it still runs great on any model of the Raspberry Pi.
It’s a great starter project for the Raspberry Pi because all you need to do is:
- Install Raspbian onto an SD card
- Install Pi-hole via our one-command installer
- Change your DNS server
- Block ads everywhere in a matter of minutes
For The Command-line JunkiesIf you have a love for the command line and could spend your day in a shell, our core pi-hole repo may make you giddy with delight or scare you straight.
For The Casual Techie That Enjoys Innovative SoftwareIf you're good with computers but don't care for software that requires a lot of attention, Pi-hole can suit your needs. It functions great as a set-it-and-forget it application. Once installed, it will just function as your DNS server and block ads.
Note, that you can set Pi-hole to auto-update (by putting
pihole -up in a
cron job) so you’re always on the latest version.
For The Family IT Support PersonIf you're the go to person in your family for technical support, Pi-hole can help prevent ads, malware, and phishing sites from infecting your family's networks--saving you time and effort on support.
For Anyone Who Wants To Contribute To Open Source SoftwareFirst off, any contributions to our project are welcome. We're advocates of open source and Pi-hole wouldn't exist without it. You don't need to feel you have to be lifelong programmer to contribute.
So maybe you have some technical know-how and are interested in programming but you don’t know where to start. First, you’ll probably need a bit of “general” knowledge of programming logic and syntax. Once you know how one language works, you can usually figure out or at least read and understand what is happening in the code.
Pi-hole has several common languages in use: shell, Python, C, PHP, and HTML. So whether you want to focus on front-end development (the Web interface) or backend stuff (the code and programs that actually let Pi-hole work), we want you to feel comfortable contributing to our project.
Our CodebaseHere is a quick overview of what our repositories are and what languages you'll find in them:
pi-hole (the "Core" code)
AdminLTE (the Web interface front end)
FTL (the API)
How To Contribute To Pi-holeTo re-iterate: don't feel intimidated at the size of Pi-hole or feel like it's something you can't contribute to. We want your support.
These examples below will not fit every person out there; they are just written to give you some advice on getting your code merged in. We do have several checks and balances in place to ensure we send working code into production. It doesn’t always happen, but we’ve learned that the hard way, which is why you’ll see there are some proverbial hoops to jump through. In the long run, we don’t want them to deter you from contributing to the project.
Contributing With A Novice Skill LevelYou may want to start looking through the code for small things to fix such as typos, formatting, line-endings, or minor code adjustments. The examples linked to are real but meant to be illustrative to show you that you could make a pull request for something as simple as changing the case of a letter.
Doing it this way, you can walk through all the steps we ask you to (these steps help us keep the codebase maintained a lot easier). When it comes time to make a larger pull request, you may have already read through a bunch of the code, making you more familiar with it, and therefore making your pull request that much more likely to get merged.
And from our end, these types of pull requests are easy to review and can quickly be merged it. In addition, if you decide to contribute more later, we will have an existing relationship.
Contributing With An Intermediate Skill LevelIf you have some programming experience, you may be able to spot a bug that is easy to fix, or a syntax error we overlooked (sorry Dan!)
Of course, if you have enough knowledge, you can submit a pull for larger changes to the codebase. Try focusing on a single script if you’re good with shell scripting.
If none of that suits your taste, take a look at FTL as we have been investing heavily in it, which is written in C.
Finally, we have a few other repos that are mostly used internally, but maybe you’ve had experience with one of them before (most of them are forks) and know how to implement something cool or useful.
Contributing With An Advanced Skill LevelYou probably have a lot of programming experience and can understand our codebase in detail. Perhaps you have followed the project for a long time, or maybe you just became interested in it. Whatever you come up with, we'll try our best to work with you. Bring your technical discussions to GitHub and anything else over to our forums.
Final Words About ContributingWe have several feature requests, which is where the community votes on things. This will probably be one of the biggest helps to the project as we can't always immediately implement the request even if it's very popular.