Sci-Fi to Software: James Shields' Evolution with Drupal
In a revealing email conversation with Elma John, a sub-editor at The DropTimes, James Shields delves into his extensive 15-year journey within the Drupal community, through a unique blend of personal interests and professional advancements. Starting from his involvement in science fiction conventions, Shields ventured into the web development sphere, eventually leading him into the intricacies of Drupal and the world of open-source development.
His narrative goes beyond mere web creation, spotlighting the crucial role of community building and collaborative engagement. By sharing his transition from a hobbyist to a key figure and significant contributor in the Drupal community, Shields sheds light on the evolutionary paths within the ecosystem and underlines the collective drive and individual commitment pivotal to the growth and innovation of open-source platforms.
This interview offers not just a peek into his professional journey and the ethos of open-source culture, embodied by continuous learning, sharing, and community support. Beyond offering a testament to the power of open-source communities, his narrative inspires newcomers and veterans in the field. Read on:
TDT[1]: You've been deeply involved in the Drupal ecosystem for over 15 years. How did your journey into Drupal and open-source software development begin? What inspired you to contribute actively to Drupal projects?
One of my hobbies is running science fiction conventions, and much of my path in web design and development has been led by that hobby. I had been doing a lot of design for paper with DTP, so the web and HTML were pretty natural extensions, which led me to Perl and then PHP. I gradually built up my own CMS, which worked pretty well on small sites but was hard to maintain, and every new feature required me to code it.
Then, someone recommended Drupal to me, and I gave it a try and loved it. I initially used it for a couple of sci-fi conventions. Then, my sister was setting up her own pet shop and asked me to help set up a web store. That would definitely have been a tall order to do on my custom CMS, but fortunately, Ubercart had just been released for Drupal 5, and we built a professional-looking store with that.
I wrote a couple of custom modules, including one for the Irish debit card system at the time. Unfortunately, I had no idea how to contribute at that time, so it didn't go any further. I did work on issues, but only to the extent of suggesting solutions in comments.
For many years, I saw Drupal as a hobby project. Only when I started listening to the Talking Drupal podcast did I start to see the larger world of Drupal.
During the COVID lockdown, I attended virtual DrupalCon, and I was inspired by it. The contribution workshops were what really kicked me off to start actively contributing.
TDT [2]: You've contributed significantly to various Drupal projects, from core fixes to maintaining modules like Project Browser and Comment Mover. Could you share an experience or project that was particularly challenging or rewarding during your contributions?
In my early contribution days, I think I took on a couple of issues that were a bit too big and struggled to progress with them (one of those is still ongoing).
It was at DrupalCon Prague that I went to a workshop on Project Browser and spoke with Leslie Glynn. I like to dabble a little in art and design, and part of the Project Browser initiative was adding logos and short descriptions for the most popular modules. I drafted logos for several modules during DrupalCon, and Damien McKenna engaged in the Metatag logo. After a few iterations, he got it to a point where he was happy and applied it to the project. It was great to see an issue closed and receive contribution credit over the course of the week. I think the best thing we can do for new contributors is to help them close their first issue quickly so they can make a successful contribution.
Another project I have made several contributions to is the Smart Trim module. One contribution I was particularly pleased with involved a feature request. The issue was requesting a configuration setting to allow the calls of wrapper <div> to be customised. The issue pointed out that, in Drupal 7, this could be customised with a hook function, but in Drupal 8+, this was no longer available. I thought there was no longer a hook because we have Twig templates, so why not add a Twig template to Smart Trim? Using the template allows full control of the Smart Trim output without additional configuration settings. I submitted the change, and the project maintainers accepted it. Since then, we've resolved several other Smart Trim issues using Twig.
TDT [3]: You've been part of several DrupalCons and other Drupal-related events. How has participating in these events influenced your work and contributions to the Drupal community?
I enjoyed the virtual DrupalCon experience, and it inspired me to want to go to in-person events. My first was DrupalCon Prague in 2022. A friend in Prague put me up to keep the trip affordable. I joined the volunteer team, met fantastic people and had an amazing time. My one regret was missing the contrib day, which came down to a lack of reasonably priced flights home.
Last year, I met some great people at Drupal Dev Days in Vienna, spending much time in the contrib area and working with others to move projects forward.
For DrupalCon Lille, I managed to get accepted to the Mentor team. I got to participate in mentoring on the contribution day, which was a lot of fun and a great opportunity. I hope I helped others contribute; it was a great learning experience.
TDT [4]: Beyond Drupal, you've been involved in other open-source projects like ConClár, PlanZ, and ConReg, catering to convention management. How do these diverse projects align with your passion for software development?
What drives the projects I've contributed to is my interest in science fiction conventions, and all of the projects you've listed handle different aspects of convention running, from participant registration to program schedule planning to an interactive program guide.
I've always approached open source projects with an attitude of "this project interests me; what do I need to learn to contribute to it?" I see people wanting to contribute to open source because they believe it will advance their careers, and it can. But if your motivation is career progression, your focus may be on getting commits merged rather than truly advancing the project. I think you need to be passionate about making the project useful. If it's not useful to you, you may be just going through the motions, and your focus may be on the total contribution credits rather than improving the quality of the project.
TDT [5]: James, your recent blog post on future-proofing Drupal modules through GitLab CI was insightful. How do you envision the integration of CI/CD practices shaping the broader landscape of Drupal development, particularly ensuring smoother transitions between versions and mitigating compatibility challenges?
As a community, we have embraced basic CI principles with Drupal CI for some years, and I think GitLab CI will take that to the next level. We are still unlocking the potential of the GitLab platform, and I look forward to what new tools we have available over the next while. We've been quite slow getting releases out for many modules for Drupal 9 and 10, so hopefully, early testing against Drupal 11 will help get compatible versions out quicker.
TDT [6]: Your article underscores the advantages of GitLab CI in identifying deprecations or compatibility issues early in Drupal module development. Can you share any specific instances where leveraging GitLab CI led to notable improvements or efficiency gains, particularly in streamlining the readiness of modules for Drupal 11 or other upcoming versions?
This is quite a new capability. I've enabled it on several modules, and a couple of others have merge requests open. It seems to work well, but it's too early to point to specific places where deprecations have been identified.
TDT [7]: How did the development of your Advent Calendar module for Drupal 10 originate, and what inspired you to delve into creating tools specifically tailored for festive content integration within Drupal sites? Additionally, what impact do you foresee this module having on the Drupal community in terms of simplifying content creation and enhancing user experiences during seasonal engagements?
It started when I had a last-minute idea of creating a Drupal Advent Calendar in 2022. There wasn't time that year to do anything other than write blog posts for it, but I started developing the module for 2023 when I invited other people to help with the calendar entries. I did consider a more minimal approach of a custom module tied to my website, but it didn't take a lot of extra effort to make it available for anyone to use. I used the new Single Directory Components of Drupal, so incorporating those was a fun learning experience.
An Advent Calendar may be a niche feature, but it's a nice little module that sites can enable to roll out posts as an Advent calendar. I could even see the potential for it to be adapted for other marketing campaigns that involved releasing daily posts.
TDT [8]: It is seen that apart from software development, you have a passion for Legos. What is the source of this love for Legos, and can you tell us a bit about your active involvement with the Irish Lego association Brick.ie.
I've had a passion for LEGO since I was a kid, although I fell out of it for a while in my teens. I have been building big dioramas, including Star Wars scenes like the Battle of Hoth and the Battle of Endor. I'm also a big collector of space models, and I have a model of the International Space Station that I keep up to date with new modules and other changes to the real station.
I was one of three founding members of Brick.ie, the Irish adult LEGO association, which now has close to 600 members. I set up its website, which is, of course, a Drupal site. I'm aiming to migrate it to Drupal 10 in the next year. One of the features I developed for it is a text filter to let you insert LEGO parts and set images into forum posts. I didn't know how to release it as a contrib module then, but I'll aim to make the Drupal 10 version into one.
TDT [9]: Your personal blog, LostCarPark, has become a hub for the Drupal Advent Calendar series and insights into various aspects of Drupal. What drove you to establish LostCarPark as a platform for these discussions, and how do you perceive your blog's role in fostering engagement and knowledge-sharing within the Drupal community?
It's a domain I've used for my personal blog for many years. The name came from a novel by one of my favourite authors, Robert Rankin.
When I started the first Advent Calendar, I decided to create a new Drupal 10 site, so I still haven't finished migrating the old content to it, but I'll get there. I've posted some other Drupal content to the blog and aim to post one or two pieces per month going forward. I'll probably start adding some content about my other interests, so watch out for some LEGO articles. For the Advent Calendar, it's been fun having it on my personal blog, but in the long run, I think it would be nice to move it into the Drupal.org namespace to make it more of a community-owned project. I don't know if that will happen, but I'll be seeing if the Drupal Association would be open to it.
TDT [10]: Considering your multifaceted involvement in areas like open-source development, LEGO community engagement, and your profound contributions to Drupal, how do you perceive these diverse interests intersecting or influencing each other in your creative and professional endeavors?
The one thing I've found they all have in common is community. Science fiction fans, AFOLs (Adult fans of LEGO), and Drupal contributors all have strong communities. We may engage in slightly different ways and argue about different things, but it all boils down to a group of people coming together to share something they are passionate about.