If you’ve read my blog before you know about a project I worked on called SprayFire. It was my homebrewed framework. It taught me a lot about design patterns, the need for modular libraries, and helped get me a job. Some time ago I deleted the project. This post talks about why I deleted the project and what I’ve been working on instead.
why it had to go
I started to use SprayFire and realized it had a critical flaw for how I like to structure and build applications. I’ve come to believe that small, hyper-specific libraries wired together is a better solution than a single, monolithic architecture. There’s a lot of really great libraries already out there that do what individual SprayFire components did, only better. It only makes sense to use them.
The project, while useful, simply wasn’t how I believe applications should be built after lessons learned from experience. Instead of restructuring the framework for what would be a 4th time I decided to start completely fresh. Instead of building a framework I started writing specific libraries instead.
While SprayFire was an educational experience I also want other people to build stuff with my work. Knowing that the project wasn’t something I believed in or supported I removed it from GitHub instead of allowing it to exist. Sometimes programmers can develop an emotional attachment with their code; no such attachment existed here. The code didn’t serve its purpose and was removed.
I’ve went back through all my old posts that reference SprayFire and have removed links along with putting up a disclaimer pointing out that the project doesn’t exist.
what I’ve been up to
Besides work-related coding, which has taken over more of the time I spend developing software, I still contribute to other open source projects and write my own libraries. Some of the cooler things include:
A library for PHP7 that ties together a DI Container, an event emitter, and a plugin system to facilitate building small-to-medium sized PHP applications.https://github.com/cspray/labrador
A microframework using Labrador, a highly-performant routing system, and a well-known HTTP abstracto to help create web-based PHP applications.https://github.com/cspray/labrador-http
A library that allows you to manage your application's environment. Includes the ability to have environment specific configurations and initializers. Also includes the ability to keep your production configurations secret.https://github.com/cspray/telluris
A library that allows you to delegate method calls on an object to dependencies or anonymous functions.https://github.com/cspray/delegatus
An object-oriented API to generate PHP7 code. Includes support for scalar type hints, return types and several other PHP7 features.https://github.com/cspray/code-anvil
A native templating library that encourages the use of composition to build `Renderers` as simple or as powerful as you need.https://github.com/cspray/platelets