What project or projects do you maintain and what was your motivation for creating those projects and releasing them as open source software?
I think that the most popular project that I maintain is Slim Framework which was created by Josh Lockhart. I didn’t create it, but it fitted my requirements for a couple of client projects and so I submitted improvements. Over time, I ended up as one of the project leads.
With PHP’s focus on components due to Composer and Packagist I also maintain a number of helper components such as rka-ip-address-middleware & rka-content-type-renderer. These are generally small projects that solve a specific problem I had. I release them as Open Source as I gain so much from other people releasing their components, that I like to pay it forward and my code might help others.
If you created any of those projects, were they meant to solve a specific problem you faced, or were they born out of a larger opportunity you saw?
I only create projects that I have (or had!) a use for. Maintaining an open source project requires commitment and, if you’re not paid to do it, then you tend to work on the things that interest you.
How has the project evolved since you first got involved or first released it?
I’m seeing Slim used in more places that I would ever have imagined which is really exciting. I think that there is a need for a micro PHP framework that is focussed on dispatching requests. Over time, the project has embraced the direction that the PHP world is moving, by including the PHP Framework Interoperability Group’s standards for Autoloading and HTTP Messages. We have also encouraged dependency injection best practices in Slim 3, without requiring its use if you don’t want to.
How do you spend your time on those projects? (i.e. Developing, managing the community, triaging issues, etc.)
With the push to release version 3, I concentrated a lot on writing code and merging PRs. As I’m self-employed, I have to balance work commitments with Open Source time. Recently, that swing has been too far towards work and I’m trying to rebalance this winter. In general, I concentrate mostly on guiding development ideas and writing code and documentation. Other members of the community are fantastic at looking after our support forum, Slack & IRC communities.
How would you describe the community around projects you participate in? What are your favorite and least favorite aspects?
Slim has a great community. My favourite part is how welcoming and respectful of other communities we are. Disrespect for other technologies or people is not tolerated in our community. One area that I would like to improve is the number of regular community members we have answering questions on the forums and triaging issues. I think that we can do more to help people realise that this project is open to everyone.
What keeps you involved in those projects? Do you have long term plans for maintaining your involvement?
I love helping others, and this is one way that I can, so I expect to be contributing to open source software for as long as I code. I think it’s important to work on projects that interest and excite you, so I don’t expect to stay with the same projects forever and that’s okay. If the project is important to the community, other people will step up and maintain it.
What is the most important thing someone submitting an issue or patch should know?
Clarity of expression is most important thing, I think. When reporting an issue, explain what the problem is and how to reproduce it. It’s much easier to deal with a clear, reproducable bug report.
When submitting a patch, a good explanation of why you’ve submitted it and what it does goes a long way to getting it accepted. I also like patches that change as few lines as possible to solve the problem well and expect unit tests to cover the change. There’s bonus points if you update the documentation too!
What’s your development environment right now?
I’m using a 2013 Macbook Pro with an external monitor. I struggle to use a mouse, so do a lot with the keyboard using ShortCat and a use a Wacom tablet for pointing.
My main editors are Sublime Text 3 and vim depending on my mood. I use Vagrant and Docker to host my development environments. I don’t use a lot of other tools other than a myriad of messenging clients as we seem to have gone back to silos and everyone’s in a different one.
What was your first development environment? Do you miss anything from it?
This question is going to date me! At my first development job, I used Borland C++ to develop applications for Windows 3.1. I don’t miss developing on Windows 3.1 at all… It was so easy to crash my app which would then bring down the entire operating system and so I would be forever rebooting.
Where do you see the open source software community headed?
I’d like to see more people believing that they can contribute to open source software. With so many companies, especially in the web development space, depending upon OSS, I’d like to see them encouraging their employees to contribute on company time. Many hands make light work as they say and it’s important that we don’t end up depending on unmaintained software.
I’m also happy to see initiatives like Open Sourcing Mental Illness spring up as the mental health of our people is important.