Sourcehunt August 2016

Canvas is a new mini-CMS aimed at developers who need personal blogs. It aims to be both pretty, and pretty usable. I’ve tried it out in my hunt for a personal blogging engine, and while it fell a bit short at the time, the owner is very responsive to pull requests and ideas, and the tool as it is today is very different to the one I tried out a mere month ago.

If you’re looking for an easy-to-use, easy-to-set-up, and easy-to-deploy CMS, I encourage you to give Canvas a go and submit extensions and pull requests to expand its already very vibrant community.

Blast ORM is “yet another ORM”. If people’s gripes about it on Reddit are to be taken seriously, it has a ways to go before it looks and feels professional.

However, like Todd from Canvas, the author of Blast is also very receptive to feedback and is actively (and publicly) learning, improving the package along the way. Whether or not this ORM is something that’s bound to stick around for some time to come isn’t obvious, but it’s a young and ambitious project which could use (and deserves) the help. In an ecosystem where almost every ORM is either framework specific or Doctrine, introducing some new players is definitely refreshing.

Jade is a “dialect” of HTML, like what CoffeeScript is to JavaScript. Tale-jade is a “complete and fully-functional implementation of the Jade template language for PHP”.

“But aren’t there already Jade ports for PHP?” you may be wondering. Yes and no. As the author explains in the introductory reddit post, the PHP Jade packages currently out in the wild are incomplete and buggy – missing features from the JS version because a direct port was attempted. This one is a complete rewrite, with some syntax sugar for loops added in – something the default Jade is missing. This does break away from the spec a bit, yes, but the author also states that his goal was to create a “Jade-like templating engine”, not a full port in itself like the previous attempts. Whether that’s a good or bad idea remains to be seen.

Jade’s popularity is picking up, but there’s much more to be done. Why not jump in and help out?

Short and sweet: “A component to access Pocket’s API through PHP and Guzzle”. How does this differ from something like this? First, comphpartment is alpha and very, very incomplete. So if you want stability, the other package is the way to go. Second, it uses Guzzle – something the other package does not (it uses Curl exclusively).

Some people prefer to use Guzzle to get some abstraction, others prefer a direct, speedy Curl access. Others fetch their API calls with file_get_contents (I know… ¯\_(ツ)_/¯) and others still abstract even Guzzle out of a package. It’s a matter of personal preference, and right now, comphpartment doesn’t offer (or seem to plan to offer) anything of any extraordinary value. However, it’s a young package utilizing modern API communication practices and a robust package, missing some simple but critical features. As such, it’s the perfect candidate for people to wet their open source contribution whistle!

token-bucket is “a threadsafe implementation of the Token Bucket algorithm in PHP. You can use a token bucket to limit an usage rate for a resource (e.g. a stream bandwidth or an API usage).”

It being threadsafe means multiple threads can execute the same thing at the same time without there being any negative consequences. It should be noted that the thread safety applies only to the package itself, not the the code it’s bucketing.

The package can be used to limit access to APIs or certain parts of a site (slowing down downloads, for example) without having to tweak anything internally or deal with queues, databases, logging, or anything else complicated beyond the point of installing and configuring this package.

Activity on the package’s source code has picked up again lately, so now is a perfect chance to get a PR or two in there, or maybe write a tutorial about this package for us!

Math and statistics are less the domain of PHP and more the domain of something like R, but that doesn’t mean common data analysis algorithms can’t be reproduced in our favorite language as well.

In a nutshell, “…it attempts to find the line of best fit to describe a relationship within the data. It takes in a series of training observations, each consisting of features and an outcome, and finds how much each feature contributes to the outcome.”

As the docs say, regression is computationally expensive, which makes me think it might be the perfect candidate for being rewritten in Zephir. If you’re not into contributing to this package, why not attempt that rewrite? Loads of knowledge to be gained, and we’ll pay you handsomely for it!

Last but not least, we have a package aiming to make writing regular expressions a non-threatening experience. While being little more than object oriented wrappers for PHP’s preg_ functions, it offers a verbose, usable, and readable public API for userland consumption. Note that this doesn’t offer any new functionality per se – it only makes the preg functions more accessible due to turning their API inside out.

One possible downside with this library is its license. Whereas it may have started as a joke, Github takes licenses in its repos seriously and, theoretically, this could make trouble for someone. While there aren’t many people who actually abide by licenses or even read them, I can definitely see this scaring off a company or another formal / legal entity. Maybe the first PR to this package should be an update to their license? :)

That’s it for August – as always, please throw your links at us with the #sourcehunt hashtag!

Bruno is a coder from Croatia with Master’s Degrees in Computer Science and English Language and Literature. He’s the editor of SitePoint’s PHP channel and a developer evangelist for Diffbot.com. He avoids legacy code like the plague and when picking projects makes sure they’re as cutting edge as possible. He’s a treadmill desk enthusiast and active (board)gamer who sometimes blogs.