Zan Baldwin
Friday, 28th September, 2018

The Symfony Open-source Community

Introduction

Community noun, kəˈmjuːnɪti

  1. A group of people living in the same place or having a particular characteristic in common.
  2. The condition of sharing or having certain attitudes and interests in common.

Each and every person belongs to a community in the town or city that they live, with neighbours, shops, schools, pubs/bars. You might belong to social clubs, get involved with your local scuba-diving or other recreational sports team, and I'm going to make the assumption that a large majority of people reading this article will go to meetups. Even if you're just meeting up with friends, all of these give a sense of community. Unfortunately, even in its more generic form, the dictionary definition fails to fully describe the full meaning of community - especially since the internet revolution. There are communities all around the world that can't be simply explained by either a shared interest or geographical proximity.

Every great community has, at its core, consists of three things - three pillars - upholding it's existence:

Bread stapled to a tree
Bread Stapled to Trees

For example, if I communicated this photo to you, it probably wouldn't mean much to you nor anyone else. Human connection is what takes something of little value, such as the photograph, and enables an entire community of 124,000 people to revolve around a subreddit dedicated to bread stapled to trees. Human connection is what causes the weird and the wonderful to happen.

“Symfony is not really a framework anymore. Symfony is a community, Symfony is an ecosystem. We are Symfony!”Tobias Nyholm · Symfony without the framework bundle · SymfonyLive London 2018.

Every community is nothing without the communication and connection of its members, and Symfony got this right. It's one that provides knowledge and resources to anyone that's interested. It's one full of members that are willing to give inspiration, advice and support to anyone that listens. This is what makes Symfony as a whole infinitely greater than just its codebase.

Symfony

So, as we explore this community, the best place to start would be the official Symfony website:

"[The] Symfony Community is a passionate group of over 600,000 developers from more than 120 countries, all committed to helping PHP surpass the impossible." — from https://symfony.com/community

This is reflected in some statistics taken from around the internet:

Symfony is obviously a successful community, but it doesn't necessarily have to be perfect. If you want a better example of this, I'm sure many of you will know the stark contrast between the amazing things coming out of the YouTube and some of the comments left underneath videos. Luckily, I'm happy to report that the Symfony community leans towards the better end of that scale.

“It's really nice here. A lot of people are trying to keep it a positive and professional place where we don't take a Friday afternoon to go framework bashing." — by Anonymous Slack User

“The Symfony community is a bunch of people passionate about programming. We’re not a very diverse group but we all care about it which is great." — by Michelle Sanver · CARE team member

The Symony community is a positive and professional community full of passionate people who actually care.

“Primarily a very helpful community where improper behavior is actually told off. When people are being rude or insulting, people will let them know." — by Anonymous Slack User

“We have had to handle some [code of conduct] cases, I can happily report that they were all considered relatively minor in our eyes." — by Michelle Sanver · CARE team member

The Symfony community is a healthy community that is lead by example and appropriately moderated. Nothing demonstrates that more than the recent efforts with the Code of Conduct and CARE Team - it shows that the Symfony project leaders are putting community members first ahead of code; they're putting human beings first.

Contributing

I would like you to quickly think about whether or nor you contribute to Symfony or get involved in the community.

“Embracing and promoting professionalism, best practices, standardization and interoperability of applications." — by The Symfony Philosophy

Contributing to Symfony means contributing to the success of the framework and following the Symfony philosophy. If you try to improve the experiences of other PHP developers you are promoting the Symfony philosophy, whether you use the components or not. If you are spending the time to read this article, you are contributing to this amazing community, even if you don't believe you are a part of it.

“Contributing is not some binary identity where you begin as a non-contributor and then something happens, you do something, you pass this point in life and then thereafter you are a contributor and you’ll never go back. Contributing is a behaviour, it’s a process.” — by Aditya Mukerjee · You Might Be A Go Contributor Already and Not Know It · GopherCon 2018

Contributing is not some label that gets assigned and unassigned, or thrown about like a badge of honour. Like Aditya said, contributing is a behaviour, it's a process, it's a mindset.

Obviously when mention contributing to Symfony, submitting pull requests first thing majority think of: they’re an easy place to start and, providing you stick to the code of conduct, all are welcome. Nothing is too small and there’s no need to feel like you’re not good enough - in fact, my first ever pull request to Symfony was deleting someone else's code and my latest one was fixing someone else's typo. A quick search shows that 4 people have made pull requests building upon the foundation I made for the Argon2i password encoder - Michael Babker, Christian Flothmann, David Prevot and, most notably, Ashura who made their first pull request to Symfony vastly improving the password encoder's configurability.

As this article stems from the talk I gave at SymfonyLive London 2018, the next obvious thing to talk about is talking. Whether it's at a conference like I did, at a PHP User Group - my local being PHPSW - or just leading an informal discussion with your teammates, presenting and communicating ideas benefits the Symfony community in one way or another. Passing on and furthering knowledge about Symfony is contributing to the success of Symfony and that is without a doubt a contribution to the wider community whether deliberate in intention or not.

16 weeks ago, at Dutch PHP Conference 2018, I saw the closing keynote by Thijs Feryn about opportunity. 4 months later I was up on stage in front of SymfonyLive London 2018. They were the most terrifying 4 months of my life, and I had no experience with public speaking whatsoever, but I had an idea I wanted to share. The Symfony conference organisers made the conscious effort to promote first-time speakers like myself and introduce a speaker-mentorship program as part of its wider Diversity Initiative.

The Diversity Initiative is a way of giving access and representation to those who would otherwise be overlooked, it also brings new ideas and fresh perspectives from all walks of life - which is key is we want to see healthy, organic growth of the framework and its ecosystem.

I would like to give some examples of amazing members of this community that have made a difference doing something other than speaking or making pull requests:

There are hundreds of others that deserve a mention, but I wanted to make a point that there are various ways you can contribute without ever touching a line of code or speaking in front of other people if that's not your thing.

Let's move onto a way of contributing completely out-of-the-box: PHP unit tests. Symfony is built and relies upon the solid foundation that is the PHP language, but it still has its own bugs- lots of people think the core of PHP, the internals, are complicated or full of dragons so it really doesn't get the love it deserves. Creating unit tests for PHP is as easy as writing unit tests for the applications we create, plus it's a great way of learning a new way of thinking without much effort!

  1. Decide what to test under the --TEST-- heading.
  2. Write some PHP code under the --FILE-- heading.
  3. Specify what you expect to happen under the --EXPECT-- heading.
  4. Make a pull request!
--TEST--
Testing multiplication
--FILE--
<?php
var_dump(4 * 5);
?>
--EXPECT--
int(20)

Some people only focus on improving code which is not inherently a bad thing if you enjoy that, but if you want improve the community and ecosystem surrounding that code, focus on people. Thinking about people and nurturing the right relationships is how we steer the future of this community in the right direction. Some of you won't have the time or energy to contribute directly for a variety of reasons - in which case, just do something for yourself even if that's just learning something that interests you; that knowledge will eventually come back to the community even if it's through casual conversation.

Communication

Going back to the three pillars of community, then the best way to contribute to a community is to work on communication. More specifically, in a community like Symfony's that spans international borders, I'm talking about translations. Even if you only speak English you can still be a translator. Some of the best contributors to the Symfony community are those that promote good communication and inclusive language; members thrive when they feel they are being involved, being included and positively noticed.

The community mainly speaks in English and a few years ago it was found that the official translations of the documentation was unfeasible to maintain, but this hasn't stopped the diversity of language amongst community members (the native language of SensioLabs is French after all!). You don't need to know a second language to help with translations - if you see someone struggling because they aren't fluent then help them a little to articulate their point or idea across. Here are some examples:

Instead of… Try…
You're not making any sense. I don't quite understand. I think you mean ACL, if so try voters. Let me know if I've misunderstood what you meant.
You're using this component wrong. I think what you're looking for is in the security bundle rather than the component - here's a link for more information.

It's little changes in speech that take the tone of the conversation away from accusational to constructive. I don't believe anyone would do this on purpose, or that they don't have basic manners, but it makes a difference to people who are still learning PHP or getting to grips with Symfony. It makes a difference to people who don't know the terminology from a formal computer science education. It makes a difference to people who can't afford to go to conferences, or whose employers can't afford to send them on formal training. It especially makes a difference to people who are learning an entirely new spoken language just to get to a point where they can simply interact with this community.

So far in 2018, there have been over 2500 pull requests and 1500 issues created across the symfony/symfony and symfony/symony-docs repositories. Yet when you take into account that there are only 19 people on the core team, it makes you wonder how on Earth they cope! You can make the reviewers job a little easier by getting involved in the review process; there's an entire article in the Symfony documentation called Community Reviews with all the information you need to get involved - just one level up is an entire section about getting involved in the community.

There will always be people to contribute code, but that code is useless if no one uses it - by improving the community you keep Symfony going and that makes more of a lasting impact.

Benefits

“Giving means to give without expectation - to give based on someone else’s needs without assuming something will come back to you in return. At the end of the day the absolute worse case scenario is that you had a positive impact on somebody through your actions, and as a human, that should just make you feel good. If you can give without expectation, you’ve got everything to gain.” — by Gary Vaynerchuk · Giving Without Expectation (2016)

This is a brilliant mindset to have, especially for the open-source community, but it only applies to your expectations - it doesn't mean you shouldn't get anything else in return at all. I wouldn't expect anyone to remain in a community that wasn't beneficial or advantageous in some form or another.

“Connecting with people, provide something they're interested in and give them a reason to show it to others. Human connection, the desire to see and be seen, that's what powers involvement in communities.” — by Tom Scott · The Quiz That Was Shared A Million Times (2018)

It's completely okay to want recognition for your achievements. It's completely okay to be selfish once in a while. Asking for help on Stack Overflow could be classified as a selfish action, but that action will benefit any developer in the future that has the same question and searches for it. Contributing - whether to Symfony, PHP, or some other project - is an investment in your own personal development; you are open-sourcing your learning process be leveraging the power of the entire community for feedback.

Your involvement in the community should have long-term benefits. My involvement got me a slot to give the contents of this article as the closing keynote for SymfonyLive London 2018, it allowed me to practice that keynote at my local PHP user group for free, and it allowed me to ask other members of the community for quotes, their input, feedback, reviews and support that shaped the talk. Giving that talk, and writing this article, will most likely benefit me for a long time to come in the form of improved job prospects, confidence, public speaking skills, and recognition in the community. The open-source community is a global one; getting involved in one place means you could find opportunities arising in places you never expected. So contribute as much as is healthy, but remember that community is a two-way street and you deserve just as much back as you put in.

Getting Help

As a minor, but important, note I personally recommend everyone check out Open Sourcing Mental Illness and that you pass that recommendation to as many people that will listen. It could be one of the most important things you say to someone without you even realising it.

Talking about contributing to open-source software, I have to briefly bring up imposter syndrome. It's possibly too common and widespread to even call it a syndrome; anyone and everyone can have it. I have imposter syndrome; the founder of GopherCon EU has spoken about having imposter syndrome; Steven Fry spent several pages in his autobiography talking about it. As an example closer to our industry, I want to share a piece of conversation I had with someone while preparing to give my keynote:

“I can guarantee that not everyone in the room will have contributed to OSS. I know this. I haven't and I'll be there”

That conversation was with Dave Liddament, co-organiser of PHPSW and organiser of Bristol PHP Training. Dave has arguable contributed more to the open-source community through volunteer work and the passing on of knowledge than someone who makes a few pull requests here and there - and that's on top of the code he writes as a developer! Many people, even prominent figures, dismiss indirect contributions they make to the wider community because they don't directly contribute lines of code to open-source software. Most developers are aware that hard-to-measure metrics are just as important as the easily-identifiable ones, so why do we think differently when it comes to ourselves?

It's okay to get things wrong, it's okay to ask for help, and most importantly it's okay to say I can't do this.

It's okay to leave the community at any time for any reason. Despite our best efforts not to spread ourselves too thing, burnout is a thing that can happen multiple times during our career. Circumstances and situations beyond our control can happen, especially as human beings enter different stages in life. Even if you're lucky enough to avoid all of that, interests can change; you can simply just get bored.

Saying “this isn't for me any more so I'm out” does not negate you as a person, it does not negate your past involvement or contributions, and it does not mean you can't come back at a later date.

Your health as an individual is more important than the community, other people's expectations, or open-source software.” — by Me (Zan Baldwin) · This Article (2018)

Exploring

Most communities you are involved with will interlink to some degree, whether that's by reusing learnt skills, leaning on past experiences or your constantly evolving people skills and network connections. Once you've found a community or space you feel comfortable with use it as a platform to branch out and expand your horizons. As a regular visitor to Vancouver I've tried many times to coincide trips with Vancouver PHP - providing I don't mess anything up, I should hopefully be attending my first inter-continental PHP user group this November!

My local PHP user group, PHPSW, regularly put on non-PHP talks (bad web designs from the 90's, introduction to Golang, recruitment horror stories, to name a few - I think there was also one on poetry at one point): just as you grow and evolve as a person, the communities you are a part of should to. Don't be afraid to find new ones, or lose touch with old ones if that's the right path for you to take.

Each and every person reading this is already a participating community member. If you click away from this remembering just one thing, I want it to be this:

“If you show genuine interest, the capacity to learn and the willingness to contribute constructively then the Symfony community will be there for you and, with this community at your back, you can make a difference. You are what makes Symfony a community greater than the sum of its codebase." — by Me, again (Zan Baldwin) · This Article (2018)