It’s Open Source Week at SitePoint! All week we’re publishing articles focused on everything Open Source, Free Software and Community, so keep checking the OSW tag for the latest updates.
This week is Open Source Week at SitePoint.com. While we do usually cover open source here, what with all the tutorials and introductions to amazing new libraries, packages, and frameworks, this week will be a little “theoretical” for a change.
We’ll discuss open source in general, think about how it’s affecting our programming language’s landscape, what we can do to help it spread, cover some interesting open source projects, and more. Be sure to check out other channels – we’re spreading Open Source Week across the entire site with this tag, and across Twitter with the #OpenSourceWeek hashtag.
For now, let’s look at some open source projects in dire need of contributors and Github stars.
paragonie/gpgmailer [33 ★]
GPGMailer is a package that lets you send GPG-encrypted emails (using zend-mail and Crypt_GPG).
Email security is often an afterthought or, well, not a thought at all – so seeing a package that focuses on making sending secure emails a priority is a breath of fresh air. GPGMailer can come in handy if you’re building your own email client, or if you’re doing something hacky like filtering recruiter spam from your inboxes and auto-replying to them.
At 33 stars, the project could use some love – both in being tested, and in solving the one tricky issue of a freezing Travis pipeline. Check it out!
Ever tried to make a valid HTML document with PHP? It usually entails writing out the HTML as a string and echoing it which, while effective, isn’t very efficient – and it’s notoriously difficult to automate. Enter
html-documentis an object oriented tool for building HTML documents
It’s as simple as that – a fluid OO interface for building HTML documents. The project is super young, so please dive in and explore it – see what it can and can’t do, what it does right and what it does wrong. We’d also love to see a tutorial on the topic, so if you’re up for it, give us a shout!
algb12/GraphDS [5 ★]
In the author’s own words, GraphDS is “A fast implementation of the graph data-structure in PHP“.
The project is just starting out but it hit the ground running – the author first developed it for personal use, and after realizing it feels more intuitive than what PHP can offer in terms of graphing, decided to make it into an extensible open source package.
If you ever needed graphs in PHP, this is the lib to check out – and if you’ve got ideas on what to add into the feature mix, now’s your chance while the project is still in its infancy!
ScriptFUSION/Porter [145 ★]
Porter is a data importer abstraction library, in that it makes it easy to import any kind of data into any kind of system, as long as you tell Porter about the data. It’s a godsend for developing custom importers for the wide variety of CMSes out there, for example; ever thought about what’ll happen when some conglomerate buys Medium and everyone suddenly has to move data to self hosted methods?
The README is far more comprehensive than the intro I could give here in this short bit of text, so I encourage you to take a look.
Having gained a bit of traction already (145 stars at the time of writing), Porter needs more help solving the few issues it has than being tested, so dive in if you need to get your contribution karma up!
tomphp/php-context-logger [33 ★]
A newborn project which allows you to add context to your logging with middleware in PSR-7 apps. Concretely, this means you can “build up” the context of your logger. If you’re not familiar with context in logging, this issue explains it rather succinctly and also mentions the “best way” to use it.
In a nutshell, context is an array of data that’s related to the message you’re logging. So a logged message could be “User logged in” while its context could be
['user_id' => 123]. This package makes this adding of context “wrappable” – see the README for usage examples.
The package being very young, it could definitely use some help, not only in features and issues (not much to help with there), but documentation, usage examples, and applications of the package in real world scenarios. Are you up to the task?
sidkshatriya/dontbug [532 ★]
A Go+C powered debugger for PHP with a twist – aside from letting you debug execution of PHP scripts step by step as they’re processed, it also lets you debug into the past – going backwards along the execution chain. Think of it as setting breakpoints in the past, and being able to rewind and fast forward through a script’s state.
While it might a bit difficult for PHP-only devs to contribute to this, it being mostly Go with some C thrown in for good measure, it’s a fantastic tool to use while contributing to the rest of the projects on this list, or just to use as your new de-facto debugger.
There are some issues that might be solvable – dealing with docs and Docker – but in general, the code is quite mature already and the star-inertia is there.
ingowalther/image-minify-api [14 ★]
Image-minify-api is an API application which you can install on your own server and then use as an image minification service. In a way, it’s like parts of Glide but in self-sustained app mode.
As the project lacks popularity, it hasn’t exactly been thoroughly tested in real-life scenarios, so it could definitely use help on that front. Additionally, the one issue it has (the request to implement quotas) has been under development for a while, so they could probably use help there as well.
In addition to helping them out with a Github star or an issue comment or two, why not get some money on the side and write a tutorial about this app for us? This will have the added bonus of providing them with much needed exposure!
HawkBitPhp/hawkbit [37 ★]
Remember Proton? It’s the now seemingly abandoned framework project which uses League components, the unofficial “League framework”. Hawkbit – previously known as Turbine – is an extension of Proton in that it’s actively maintained and adds a component or two into the mix to make the framework a bit more “full stack”, e.g. zend-config for configuration and Whoops for error handling, while still staying “micro”.
In a seemingly never-ending flood of PHP frameworks, it’s hard to say why one would go with Hawkbit, but it’s also hard to argue against it – not only is it using some of the most battle tested and expertly developed components out there, but its components are also endorsed by some of the biggest names in the PHP world, past or present. With zero issues and zero PRs, it’s not obvious what one could contribute, but we at SitePoint’s PHP Channel are always open to new tutorials. Interested?
That’s all the projects we had to share with you this month – did any of them grab your attention? Got anything to share? Please throw your links at us with the #sourcehunt hashtag!
Open source is here to stay. It changes our lives every day without most people realizing it, and it’s up to us to help it grow further, bigger, stronger. When software is open, it’s our responsibility to make it better, more secure, and more battle tested – not the author’s. We’re all benefitting from it, and we’re all building our careers and lives on it. Please be sure to check out the rest of Open Source Week across the entire site with this tag, and on Twitter with the #OpenSourceWeek hashtag.
Bruno is a blockchain developer and technical educator at the Web3 Foundation, the foundation that's building the next generation of the free people's internet. He's also a DX person at Diffbot. He runs two newsletters you should subscribe to if you're interested in Web3.0: Dot Leap covers ecosystem and tech development of Web3, and NFT Review covers the evolution of the non-fungible token (digital collectibles) ecosystem inside this emerging new web. His current passion project is RMRK.app.