Sourcehunt PHP Xmas 2015: Give the Gift of Pull Requests!

Share this article

Before we round the year up, there’s one more issue of Sourcehunt to publish, as a small Xmas gift to all the underrepresented open source projects out there. Let’s get everyone some more contributors, shall we?

Sourcehunt logo

mindplay-dk/unbox [8 ★]

There’s no shortage of container-interop compatible container implementations. Unbox stands out in the way it’s documented – the Github repo features an impressively comprehensive list of methods and their explanations, wrapping it all up nicely in a set of demos.

If the included performance benchmarks are anything to go by, Unbox sits comfortably between Pimple and PHP-DI, nearer to Pimple (on the light-weight side). We’re planning a comprehensive comparison of container-interop implementations early next year but in the meanwhile, if you’re looking for a well tested and extremely well documented container to get familiar with, why not this one?

anobii/sainsburys-http-service [4 ★]

This is a rather peculiar gem – it advertises itself as a micro framework for REST or HTTP RPC services but is in fact a wrapper around an existing framework – Slim 3.

By depending on Slim 3, it automatically inherits container-interop for its dependency injections, PSR-3 for logging, and PSR-7 for request and response handling, but has some additional restrictions. For example, a controller mustn’t be a closure, but a standalone no-inheritance class.

The example application included in the repo is quite straightforward and interesting, but I’m personally failing to see the advantage of this package over assembling something micro on your own with Composer.

Would you like to take it for a spin for us and tell us about everything it brings to the table? We’ll pay!

makasim/yadm [3 ★]

Yadm is an ODM for MongoDB. It makes reading from and writing to Mongo databases significantly simpler. It’s super simple to use with a learning curve as shallow as Medoo’s, so you’ll be up and running in no time.

The docs could use help with examples and some language fixes, so if not code-wise, why not contribute that way?

xparse/ElementFinder [0 ★]

The description says it all:

Extract data from html with elegant xpath/css expressions and prepare data with regexp in single line.

How does this differ from the built-in xpath methods? For one, it offers a fluent preg_match / split / replace interface, which lets you replace characters on the spot. Additionally, it can leverage Symfony’s CSSselector component to use CSS selectors for traversing HTML as well. It’s little mote than a wrapper with bells and whistles, but those bells and whistles sure do come in handy.

The docs could use more examples and the author has opened some other issues deserving attention, so why not chime in with feedback or even a PR or two?

api-platform/api-platform [493 ★]

API platform is a rather popular project by now, but still deserves a mention purely because we haven’t had time to cover it in depth on the channel (yet!). It’s a framework for building API-first applications built on top of Symfony and JSON-LD.

With the release of Symfony 3 and some of its helper components, it might seem to be a bit out of date and too complex to use at first, given that Symfony now has Guard for easier authentication and a microkernel that effectively makes setting it up almost as simple as Silex, but I still encourage you to check the beast out and form your own opinion. If you have an application you’d like to demonstrate and write about your experiences with the platform, please let us know, we’d love to publish your findings!

Contributions-wise, the project is quite mature and as such doesn’t have a lot of issues, but the few that are there could use your help!

flint/Lurker [115 ★]

A package with the singular purpose of watching files for changes. Extremely useful in projects like Robo when you’re trying to remove the curse of NodeJS from your workflow.

FriendsOfPHP/pickle [671 ★]

Pickle is a promising alternative to manual compilation of PHP extensions. In fact, it also looks like a viable replacement for the archaic PEAR.

The project maintainers are currently working on implementing Pickle with Composer so that we can require PHP extensions and have them installed alongside packages, but in the meanwhile, there’s dozens of issues that need solving, some of them bugs. If you’d like to contribute to the next guaranteed-high-profile PHP package, now’s your chance!

php-school/cli-menu [389 ★]

CLI-menu is, rather obviously, a package for building beautiful CLI menus. Rather than build on top of some of the popular consoles, these guys went at it from scratch and did a hell of a job.

Their menus are simple to build, turn out very pretty, and the entire project is extremely well documented. Sadly, no Windows support for now (Windows is a little special as far as command lines are concerned, which is why we recommend Git Bash in our popular Homestead Improved quick tip) but it’s being worked on, at least in some form.

The package was originally built as a driver for the http://www.phpschool.io/ website which seems like a great place to keep an eye on for quality tutorials in the future!

humhub/humhub [2991 ★]

Last but not least, based on the relatively recent Yii2 framework, there’s Humhub – a toolkit for building social network applications. Personally, I find the idea very interesting, but the code confuses me – the approaches used are far from best practices.

For example, everything is in the same folder as the front controller, so it remains publicly accessible unless one is using Apache (notice the inclusion of the htaccess file, which will have no effect on many modern servers which use Nginx). Indeed, the project seems to require Apache.

The composer.json file also has some unstable version constraints – many packages require * (i.e. “any version”). This makes it susceptible to breakage, as packages get major version upgrades with breaking changes.

Likewise, there are no instructions for running the toolkit in a VM-friendly way and no Vagrant configuration for easy local development has been provided, something most modern devs will be interested in, while the docs are packed with typos and slip-ups.

The project, thus, while interesting and extremely feature rich (as evident by the demo runnable from the home page) could use some help with both code and docs. There are hundreds of open issues, and the project is quite popular, so if you’re looking to make a mark on an already strong repo, this is a perfect opportunity.

A more in-depth look at Humhub will come early next year!


That’s it for this month’s Sourcehunt – the last one in 2015! If you’re struggling with finding projects to contribute to, please re-read the list above and see if anything strikes your fancy. Let us know if you do send a PR or two, and we’ll feature them in the next Sourcehunt when we report on the activity!

To suggest projects you’d like to see on this list next month, just shout out tweets with hashtags #sourcehunt and #php – here’s the link to the combination. Naturally, if you’d like to sourcehunt a project written in another language, alter accordingly.

Merry Xmas, and happy contributing!

Bruno SkvorcBruno Skvorc
View Author

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 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, the most advanced NFT system in the world, which allows NFTs to own other NFTs, NFTs to react to emotion, NFTs to be governed democratically, and NFTs to be multiple things at once.

BrunoScliCommand lineCommand Line InterfaceCommand line PHPCommand line toolsOOPHPPHPsourcehuntyii2
Share this article
Read Next
Get the freshest news and resources for developers, designers and digital creators in your inbox each week