All the way from the United Kingdom, Graham Campbell is the founder of StyleCI, Graham is a Laravel Core Team member and also provides software consulting/engineering services to many clients based in the UK & US. Graham is also famous for his open-source work in the Laravel community.
Shahzeb: Hello, Graham. Thank you for taking the time out for this interview. Before we start, could you tell us a little about yourself so our readers can get to know you better?
Graham: Thanks for inviting me to this interview. I am a software architect & engineer based in the UK. People may know me from my open source work in the PHP community. I work full-time for my own company, working on the SaaS product StyleCI, and also providing software consulting/engineering services to clients mostly based in the UK & US. I, of course, spend a lot of time working on open source, too. Though things can be a tricky balancing act!
Shahzeb: Kindly share your journey with Laravel so far? Any relatable experience from your career that you find interesting and would like to share with our audience? Would you like to tell our readers about some of the best Laravel projects you’ve worked on?
Graham: I first discovered Laravel when Googling a PHP framework in early 2013. Laravel 4 was just about to be released, laying the foundations of the Laravel we all know and love today.
One of the first things I did was to try and build a basic CMS using Laravel, which became quite popular (relatively speaking!). I licensed this under an AGPL license so that the codebase could primarily be used as a learning resource. It is while doing this that I began to spin off various Laravel packages and got involved in contributing to the framework core. It’s always nice to have a specific use case in mind to drive the development of packages and the framework, rather than the abstract imaginary project.
I now maintain or co-maintain many OSS projects, across more than 20 organizations.A few years ago, I took over sole maintenance of the phpdotenv project, the .env file parser used by Laravel. Tobias Nyholm and I are now co-maintainers of the very popular Guzzle HTTP client, and recently rescued the abandoned but popular PHP Faker library, recruiting a new core team comprising a mixture of long-standing OSS maintainers and talented engineers, newer to open source. It’s pretty cool to see guzzlehttp exceed 1 billion downloads across the organization, and phpdotenv is pushing past 200 million downloads.
Shahzeb: Being specific to Laravel, what were the major challenges you faced in the beginning of your career, and how did you tackle those?
Graham: As is often the case with open source, the time of a maintainer becomes more and more allocated towards maintenance, PR review, and management of the issue tracker. This is something I got involved with a lot in the early days of Laravel. Management of an issue tracker is really no joke and was a sharp learning curve for me. Due to Taylor’s business acumen and development of Forge as a paid SaaS, it was not long until Laravel was able to hire Dries Vints full-time, who was able to do a much better job than me of managing the issue tracker. Since then Taylor and the Laravel employees have launched more paid products and grown the business so that Laravel has a bright future ahead of it, with both a strong core team and an arguably even stronger community.
Shahzeb: You are the founder of StyleCI. What services do you provide at StyleCI, and what motivated you to the creation of StyleCI? You also work as a Software Consultant. Can you tell us more about that as well?
Graham: StyleCI was created out of a necessity to automatically apply consistent code style formatting across many open source projects including Laravel packages namespaced under my personal GitHub account and the Laravel/framework repo. Removing the need to install and keep up-to-date tooling, and document how to use it, removed a massive contributing barrier, allowing us to automate the application of corrections to code style upon PR merge. StyleCI automatically commits its fixes as the PR is merged!
Although the CI landscape has changed a lot over the last 7 years, most notably with GitHub
Actions coming to the table, StyleCI is still as relevant today as it always was. GitHub
Actions still cannot come close to the ease of setup and maintenance that StyleCI provides,
nor the speed at which analyses are completed. StyleCI is often complete before GitHub
Actions jobs are even dequeued and doesn’t need to re-download all the code style fixing
libraries and caches on every run, which has the additional side effect of lowering the CO2
emissions of the analysis – something that is important to me. We try to operate StyleCI in a
carbon-negative fashion, so even with much reduced computing times, we offset this and
more, and I take this opportunity to shamelessly plug a charity supported by StyleCI, ProtectEarth, a UK-based charity focused on re-foresting, doing
really great work. I was able to attend a tree maintenance effort at their Howard Court site
earlier this year. I see you actually interviewed Phill Sturgeon on December 13, who’s a co-
founder of the charity.
For those interested, behind the scenes, StyleCI is mostly comprised of a few Laravel apps
(no surprises there!), and runs on a combination of DigitalOcean and AWS, with Cloudflare
providing the DNS hosting along with their CDN and security services. Selling globally is
made possible with a partnership with Paddle, who act as a reseller, taking on sales tax and
VAT liability, which is a huge deal. Keeping up with the constant changes to local tax laws is
not how I want to spend my days. There are so many regions with zero registration
threshold, it would be an absolute nightmare. I cannot recommend them enough for other
small SaaS companies out there!
Shahzeb: You are an integral part of the Laravel core team. Can you tell us a bit more about
the role you have to play in the team, and your job description?
Graham: First, to clarify, I’m not a Laravel employee and don’t work on Laravel full time. I am pretty happy with where the framework is, and haven’t felt the need to contribute any major refactor or feature that would belong in the framework core, recently. That’s not to say that others haven’t – the majority of my time is now spent working on code review or working on third party PHP/Laravel packages. I am extremely grateful to my GitHub sponsors for enabling me to dedicate time every week to open source:
Shahzeb: You have extensive Laravel development knowledge. What was your reaction when you were invited to join the Laravel core team? What motivated you to become a Laravel web developer?
Graham: It was an honour, and was also helpful from a practical standpoint, enabling me to help with issue management and branch merges. My discovery of Laravel was purely coincidental, arriving there via Google search in 2013 after playing around with PHP for a few months, writing really terrible code. Looking back, I wouldn’t change a thing – learning the hard way is one of the best ways to learn, realizing which code should be written from scratch, and which should not, and discovering best practices and design patterns on your own, later to look them up and see they are really a thing, or to see them in other code and recognise the patterns!
Shahzeb: What tools do you use during Laravel development? What is your workflow?
Graham: I wouldn’t describe myself as a Laravel developer, necessarily – I use the right tool for the job. The first-party Laravel ecosystem is one of the best, if not the best, that I have seen for rapid prototyping of webapps, and Composer makes PHP a very robust choice for systems and applications of all sizes. I daily drive a MacBook Pro with Sublime Text as my go-to editor.
Shahzeb: Which type of web hosting would you prefer? In your opinion, what are the benefits of hosting a site on a managed solution provider rather than conventional shared hosting? What do you think about managed hosting solutions like Cloudways that provide an optimized PHP stack with features to deploy their web apps?
Graham: We’re in 2022 (yes, I double-checked!). Any myth that it is cost-effective or that you can do a better job doing everything in-house is usually a load of rubbish (depending on your industry!). The cloud has changed everything, not just with IaaS, but with PaaS and SaaS. By an accident of history, PHP is highly suited to the serverless design paradigms, and we have really great options out there to choose from – Bref on AWS Lambda is a really great option for those that need a lot of flexibility and control of their deployment. Services like Cloudways provide a less flexible, but more managed approach, a great choice for running conventional and many off-the-shelf PHP applications, especially given the cost and availability of good Dev Ops engineers in today’s market.
Shahzeb: Can you please tell us about Laravel 9’s significant improvement over the previous versions? The community is buzzing with the potential of features that will be introduced in the latest version. What are your expectations of Laravel 9?
Graham: Laravel 9 is mostly a release to enable us to make some breaking changes and upgrade to Symfony 6 components, move from Swift Mailer to Symfony Mailer, and upgrade to Flysystem 2. Almost every new feature has been landing in Laravel 8, with new features landing almost every week for the last year. Dries and I and many others worked hard to ensure Laravel 8 and its supporting packages worked on PHP 8.1, so there’s no need to wait until Laravel 9 to upgrade to PHP 8.1, which is super cool.
Shahzeb: Who should we interview next and why?
Graham: I think having a chat with Nuno Maduro would be a great idea. He works full-time on Laravel, but has some really interesting side projects, including Pest, which has taken off like a rocket this last year!
Shahzeb: Graham, I’m sure many people have taken notes. I’m also sure they’d love to see a picture of your workstation if you’d like to share one!
Shahzeb: Thank you once again, Graham!
Start Creating Web Apps on Managed Cloud Servers NowEasy Web App Deployment for Agencies, Developers and E-Commerce Industry.
Shahzeb is a Digital Marketer with a Software Engineering background, works as a Community Manager — PHP Community at Cloudways. He is growth ambitious and aims to learn & share information about PHP & Laravel Development through practice and experimentation. He loves to travel and explore new ideas whenever he finds time. Get in touch with him at [email protected]