Umbraco is all about community
Maintaining an active and dynamic community is part of any open-source project's DNA, and Umbraco is doing a great job at it. For more than 12 years that I now have been following them, I have had the opportunity to witness how The Community has always played an important role in Umbraco's journey and preoccupations, but also how its implication and contributions to the open-source project have evolved tremendously throughout the years.
When I discovered Umbraco, contributions happened mainly through the forum Our, or via publishing packages or sending pull-requests to the code. Since then, I have had the chance to witness many other contribution initiatives and collaboration possibilities blossom and be put in place by Umbraco or by the Community itself. The Skrift magazine that you are currently reading, the discord channels to discuss all about Umbraco, the community teams, the weekly Umbracoffee show, participation to Hacktoberfest or the December 24days initiative to only name a few. Without forgetting all the community blogs, meetups and festivals, the weekly Umbracollab sessions, CodeCabin, Umbracalong and so, so many more!
The good news is that this is probably not going to slow down in the future. The picture above was taken during the Umbraco NYC meetup last month. And, last June, during the opening keynote at Codegarden, the official yearly Umbraco conference, the CTO himself, Filip Bech-Larsen, was mentioning the importance of the symbiosis between Umbraco HQ and the Community. Symbiosis. We are not talking about lightweight interaction here!
This was also illustrated by the fact that the third day of Codegarden was fully dedicated to the Community: a live UmbraCollab session on stage, followed by "The Umbraco PR show" highlighting code contributions from the Community, and closed by the Package Awards.
How much more Community focused can you get?
This is all great Mike, but where do I start contributing?
The profusion of initiatives and possibilities is great in my opinion, because it offers a huge variety of ways to contribute or get involved with Umbraco, to a wide diversity of backgrounds and experiences. But, at the same time, for people who are not yet used to contribute to an open-source project, this "buzziness" can come out as quite overwhelming or intimidating. And, even though Umbraco provides some detailed entry points and articles about how and where to start contributing, those persons might feel kind of lost and wondering how to actually start their journey as contributor.
This consideration was the main trigger to this article, when the idea came to me to describe my own journey through the Umbraco contributions paths. The goal being that, maybe, reading about how someone else got involved would give inspiration or somewhat help lessening the "fear to step in" for people who are currently hesitating or not knowing which first action to take.
So, without further ado, dear reader, let us dive into my 12 years journey amongst the Umbraco Community!
It all started at school
At my oldest son's end of schoolyear party back in 2009 to be more accurate. I was explaining my job to one of the parents who then told me that he wanted to build a new website for his association. He needed to manage content as well as a members area with registration and such.
The only out-of-the box CMS that I had been working with at the time was, well, lets us say way too expensive for them, so I started looking for an alternative. Long story short, Microsoft had recently launched their "Web Platform Installer" tool, integrated into IIS. Anybody remembers this? I know, we are *that* old … (sigh)
This was basically similar to the Umbraco Package Manager, but for installing full free open-source applications in IIS. The first CMS I tried did not convince me, the second one was Umbraco V4, and I was immediately appealed by its intuitive and easy to use interface. It also offered built-in users and members sections using the Microsoft Membership Provider, which I knew quite well, so there was no need for me to look further. I was about to join the Umbracians bunch :-)
I attended my first Codegarden the year after, and I immediately fell in love with the mindset that was put into and evolving around this product. Building a professional product while keeping some level of positive craziness is my kind of work ideal.
This is probably one of the main reasons why I tried to contribute and participate to that "professional craziness" as much as possible. Let us now discover how I achieved that.
Do you need Our help?
As I mentioned previously, one of the challenges in my first Umbraco project was the integration and customization of the membership part. I think it is fair to say that, at that time, the documentation and knowledge base were basically the forum on Our, so this is where I went to look for answers or ask questions. I was helped by the fact that my main project at work was also full of integration and customizations of the same Membership Provider, so there was quite some learning there as well.
Eventually, I started seeing questions posted on the forum to which I actually knew the answer, because I had been facing and solving the same situation not long before. I have to say that it was a great feeling to answer someone else's question and then get their feedback telling me that it had helped them solve their problem.
From that moment on, I started to check the forum regularly, to see the questions that arose and to help whenever I could. You would be surprised by how much I was able to help, even without having a deep knowledge of Umbraco, because there was a substantial amount of Umbraco beginners' questions or questions related to (web) development in general: Razor views (Umbraco was migrating from XSLT to Razor views for the front-end at the time), SQL issues, Http Request related question, performances, and so forth.
All subjects that I could help with, thanks to my experience.
Do you speak Français?
Another area which got my attention early on, was the multilingual aspect of the backoffice. I was born and I have lived most of my life in Brussels, the capital of Belgium, which has three official languages, Dutch, French and German, to which you can add English as international city. So, building a single-lingual website is not an option in our country :-)
This is why some of my first contributions to the Umbraco code base were about synchronizing the French language files in the backoffice. It was sometimes quite tedious to look for the missing labels, but it was rewarding to get them all back in at the end, and to know that it would make the backoffice more accessible to editors who were speaking only French.
I also discovered at the time of V4 that there was an Editors Manual maintained by Matt Brailsford, to which I decided to contribute by providing the French translations as well. It was about 20 pages long, and, although I got pretty far, I somehow never got to finish it before it became kind of obsolete with the release of V6.
But the good part for me is that I did learn quite some useful information about the backoffice along the way.
I find it always worthy to mention the translations activities because this is a way of contributing that is opened to many, as there is no need of technical knowledge to be able to help in that area. Just two weeks ago, I provided the French translations for Lee Kelleher's famous Contentment package, without needing to know anything technical about the package itself.
Contributing to the Core
Of course, being a web developer, it was quite natural that some of my contributions would be happening via pull requests to the code.
To be honest, for a long while, most of my pushes were about translations, and a few were linked to the Members or Users managers. But, more recently, as member of the Core Collaborators Team (more on that later), I have had more opportunities to spot small issues or glitches in a variety of areas and to provide a fix for them along the way.
I also had the opportunity to develop and push a new feature suggested on Twitter during Hacktoberferst last year: the contextual password helper. You know, the text that lets you know how many characters minimum are left when you are providing a new password? Yep, that's my code! Right there! Exciting, isn't it 😁?
I also pushed some smaller changes, and this is exactly what I like about code contributions: depending on the time and inspiration available to you, you can contribute with small enhancements, bugfixes, or fully new features.
Merging to the Core
I joined the Umbraco Core Collaborators Team in early 2020 and that activity has been filling most of my Umbraco contribution time since then. The team, like all Umbraco Community Teams, is composed of one HQ Steward (hello Sebastiaan Janssen!) and a few members of the community.
It was created during Codegarden 2018 and its main goal is to check and validate the Pull Requests sent by the community members to the Umbraco-CMS code, and then to merge them when all is OK. Until then, all those pull requests were handled by people from HQ (hello again Sebastiaan!), but the backlog had become so big that some action needed to be taken. Hence the creation of this community team, to help them get the backlog back to its senses.
To tell you the truth, I had already thought of joining the team back in 2018 when it was created, but I was not prompt enough to make up my mind and, by the end of Codegarden, they already announced the team members. So, when they opened for new members at the end of 2019, I did not hesitate anymore, I applied and eventually I got selected to join!
It has been about three years now, and I'm happy to say that I have been enjoying all bits of it!
Firstly, because of the exciting aspect that I can now contribute to Umbraco by having an eye and, to some extent, a say in what gets into the core from the community. Selecting a pull request, making sure nothing is broken, keeping an eye on quality, etc. while making sure that our feedback remains friendly, so that our contributors enjoy coming back, is a challenge I like!
Also, the variety of pull requests has given me the opportunity to learn quite a lot about Umbraco by having looks into many different parts of the code that I would otherwise probably never have touched.
As last point, I would like to emphasize the fact that being part of the core collaborators team was undoubtedly a natural accelerator for me to get more and more involved and contributing during the last few years.
For example, I had the opportunity to participate to the Community Teams Reunions (the last one in September was held in-person at HQ) and to several specific online meetings where we can interact and share ideas directly with HQ. Also, my activities within the team gave me ideas for two Codegarden talks and a two-parts Skrift article. And the cherry on the cake for me was to be awarded an Umbraco MVP award in 2021 and 2022!
The Most Valuable People award highlights the outstanding Umbraco contributors each year. My 2021 nomination came as a genuine surprise (I did not even know I was on the shortlist), and I received it as a real honor and with the joyful feeling of being among a group with so many great Community Members. Why am I telling you this? Because being part of the MVP program opened yet extra doors to some MVP specific opportunities of contributions and involvement. And I was glad those doors stayed open in 2022!
International conference speaker: check
This sounds a little presumptuous, but since it is true, why not say it, right ;-)?
As I mentioned just before, checking, commenting and merging all those pull requests gave me inspiration for talks at Codegarden 21 and 22. The Codegarden 21 talk was about tips and tricks on pull request checking and reviewing from a "theoretical" perspective, while the 22 talk was all about showing how those tips and tricks were applied to real pull requests from Umbraco contributors.
Those of you, dear readers, who know me will certainly agree that I am not the most extravert person they have ever met (at least I hope ;-)), so you will not be surprised if I tell you that public speaking is not in my comfort zone. But the Codegarden 21 edition was online and it gave me enough confidence to go for it. Since it went well, I took my chances as in-person speaker for the 22 edition. Just in time actually, but it's not too late until it's too late, isn't it?.
The in-person presentation went all fine as well, so these are certainly contributions that gave me the opportunity to improve some of my own skills along the way.
Let's meet (up)
Shortly after Codegarden 21, I was contacted by the members of the Belgian Umbraco User Group who asked me if I wanted to join their team. I knew all of them from previous meetups or Codegardens, and I was curious, so I did not hesitate long and joined Damiaan, Dave and Joke on the journey!
Since then, we organized several meetups, I presented my Codegarden 21 talk in September 2021 and, lastly, we held an "Ask Me Anything" session in May 2022 with Filip Bech-Larsen, which I mainly organized.
Published author: check
I kept it for the end to highlight this community project that I particularly like. My last contribution story to share with you is about being an author for the magazine that you are currently reading, Skrift. It was started more than seven years ago by three motivated community members: Erica, Janae and Kyle, and you can read all about it on the Skrift site.
I got into the authoring train after an open space session at Codegarden 2016, during which the three of them explained their philosophy with Skrift and where they told us that they were looking for new authors.
I had just seen two talks during that Codegarden that inspired me for a potential technical piece, so I started writing it (literally) in the train back from Codegarden, contacted the Skrift team and a few months later, there it was, my first published article!
Then, after Codegarden 21, I was in the mood of writing something again, but I did not really have any idea of what to write about. So, I contacted the Skrift team and Erica suggested to put my Codegarden talk in writing, which I thought was a great idea. This led to a two-parts article about tips and tricks on code reviewing.
And the idea of this article came to me last March. I contacted the team to tell them about the subject, which they liked, and to tell them that I would not have time before the end of the year, which was fine for them.
So here I am now, with 4 articles published in an international online magazine ;-)
That's all folks!
Well, there you have it! The full Umbraco contributor's side of me after 12 years! Around 500 posts on Our, some contributions to the core code, quite some more Umbraco-CMS PR reviews and merges, 4 articles on Skrift, speaker at two Codegardens, co-organizer of the Belgian meetups, two times Umbraco MVP, and probably a few other things I forgot to mention along the way.
Besides listing my different contributions activities, I hope that giving you some context about how I got there and also giving some insights on my personal evolution through them, will have convinced you of two things. One, if you are hesitating, do not, and go for it. And two, do not overthink too much about how to start.
To me, the only good way to contribute, is your way. Try to find an aspect or activity that you like (after all, you will probably do most of it in your free time), enter there and you might see it bring you to places you never thought it would.
Just recently, I merged a PR created by a first-time contributor who attended the CodeCabin week-end and made the code changes there. I am not sure that is what he was expecting to do when he applied to CodeCabin. And some HQ members started by contributing with a PR on language files, or created packages or pushed hundreds of PR's as contributor first.
Of course, the blogposts, articles or readme's about how to contribute will give you many sources of inspiration, but my advice is that you should not be shy to go for something else that comes to your mind. Some great ideas have emerged from community inspiration: Skrift, Umbracoffee, Codecabin, Umbracalong and, most recently, the Umbraco Community Quiz, just to name a few. And even with very limited time, the possibilities are various: launch a discussion or an idea about a new feature, offer financial support to some of the package maintainers, or Skrift, via Patreon and similar channels, for example.
This is what I truly find amazing with Umbraco: there is room for almost everyone to contribute, in all possible ways, and you do not have to be an Umbraco expert to be able to take part, as you could read from my own journey.
What also amazes and comforts me, is that Umbraco expresses and shows genuine appreciation for your time. Always. And they do not take it for granted, they do not expect you to be constantly busy. Up to three years ago, my contributions were quite irregular and sporadic, but whenever I did contribute, it was appreciated.
That said, for the people who do have or do take the extra time, the recognition shown through the MVP program is obviously quite rewarding and gives extra possibilities to contribute.
So I guess that, in the end, it's all about making that first contribution and see what happens next.
Personally, I would never have met some great people from all around the world and I would probably not have written articles or made public presentations if I had not gone for integrating Umbraco in that side project twelve years ago.
And as my friend Dave Woestenborghs said during last DUUG conference: if your contribution helps just one other person, it is already a win!
So I will now be looking forward to discover what you will be up to in the Umbraco world.
Make sure to let me know ;-)
References and links
- The Umbraco entry point to start contributing with a lot of info and links.
- More globally, the Umbraco community site where you get a view and links on all about the community.
- Filip's keynote part that I am referring to in the intro is around time 14:10
- My author's page on Skrift
- My Codegarden 21 and 22 talks.
- All the events or community initiatives that I refer to in the article can be easily found in your favorite search engine :-)