I have been involved with the Ruby community in Chennai for almost four years. From being a sparingly active group earlier, it has grown to become an active and interesting place. I have been a part of most of the activities - sometimes as volunteer and sometimes as organiser. There are many things we tried, some worked and some didn’t, and we learned quite a bit about community building all along. I’ll try to summarize some of those that worked for us here.
People should meet
Having online presence is essential for any community - for convenience and for visibility. But being an online-only community is not good. With the enhanced convenience that online life has provides us, the value of interpersonal interaction has actually increased. It is so inexpensive to fire an email or to post a comment, that going to meet people in person is almost an act of generosity. And that is always very clearly visible in our meet-ups. People try to be civil and friendly, and there have never been any bitter arguements or flame-wars. Who would want to waste time argueing over petty stuff after having taken a two hour commute to attend the meetup?
When people meet in person, they become friends. Business relationships evolve. Hiring happens - a short conversation at a meet-up sometimes serves as the first round of interview. People evaluate, judge and eventually trust others based on small conversations. People share phone-numbers.
That’s an important benefit of being in a community. I know a whole lot of people I can call if I’m in need of job (or in my case, freelance work). Or if I need to hire. I have a gang of friends to hang out with. As an expat and beyond a certain age having a group of friends is almost a luxury. That alone trumps everything else.
I see a lot of tech groups on meetup.com and facebook that never meet. There is hardly any benefit of that. It’s not a community if people don’t meet.
Broadcast mode doesn’t work
We often try to solicit help by asking everyone on the mailing list. ‘Can anyone host the meetup this weekend ?’ And we zero responses most of the time. If we look at this from the other side, its almost obvious why.
Ok he’s is asking everyone for help.
Maybe someone else (more interested) will step up.
Is he asking for help, or is he reminding me of an obligation? Am I the *janta* he thinks he’s leading?
A simple broadcast does not invoke any interest. And if the language is not right, it can appear patronizing. When we are asking for help, it should look like a request. People in such communities are are motivated by the spirit of helping. It comes with some benefits too, but that’s not the main idea. If we think companies should sponsor and individuals should participate because they benefit from it, we got it all wrong.
Solicitation of support works best when asked personally, and when it looks like a request.
‘Hey $person, we are in need of space for the next meetup. Can you please let us host it at your office?’
People > Rules
There is a common advise about having a fixed schedule for the meetups. The group should decide on a recurring, fixed date for the meetups and stick to it. We have found the exact opposite work better. We schedule the meetpups based on members’ convinience. When there were just the five/six of us, I’d call them up and ask. Now there are more, we discuss on chat. And we have the margin for requests like I’m not be in town on the 22st, lets do it on the 15th.
This obviosly runs the risk of conflicts and disappointments. But conflicts happen when people step up for things they care about. Indifference is a much bigger risk. People generally sympathize with each others constraints. If we can make participation convinient for everyone just by giving up on some edicts, why not?
I’m not advocating ad-hocism here. Procedures and rules are important. But people come first.
People > Technology
When I started out, I wished the talks to be at an intermediate technical level for the least. That’s how I thought they could be of value to me. And it would encourage the more experienced people to participate.
That thinking has changed with time. Our meet-ups were largely attended by beginners and students, and there were several requests for ‘basics’ talks. So we started doing such talks, and eventually some workshops too.
Technology sets the common theme, the context for the activity. But the community is about what people want. Its activities and direction should match the expectations of its participants, while still trying to match with its original context.
Moderation should be invisible
The most annoying aspect of online social activity is moderation. The moment you post something, a moderator pops up from somewhere to remind you of posting rules. Or the syntax. Or about the correct ways to ask a question. Or whether you tried googling it? (I like to call them clippy moderators)
These things are so firmly engrained in tech culture that getting rid of all of them is hard. Hard without proactive counter-moderation. So I can’t say with confidence that such things never happen in our group. But they happen rarely. And we try and influence everyone against it.
Corporate patronage is good but optional
There are many big companies working with Ruby/Rails here in Chennai. Should we not approach more of them and ask them to get involved? Big companies are resourceful - they can offer bigger space, sponsor food/projector/swag for the events. Some people take events seriously only when there are big names involved. While all this is true big-co involvement is not compulsory. We have been helped many times by big companies, for which we are grateful. And there were times we were able to manage without them. The point being, it is possible to run such a group without too much dependence on big companies. And it is desirable too.
If we can operate without big-co help, we can operate with too. Besides, our kind of group stands to benefit individuals and smaller companies much more - that relationship iss more symbiotic. The bigger ones help out of community goodwill or for charity. So instead of getting chronically dependant on that charity, we should try being independant and somewhat self reliant.
Lecture based format works well.
Our meet-ups are based on the traditional lecture like format. Talks and speakers are pre-decided, and speakers prepare their content before talking. There are other ways of doing this too. One is the unconference where there is no pre-set agenda and everyone is encouraged to talk. In the hacking format there are no talks, people just gather and code.
We have never tried any of these, for the fear for becoming agenda-less. In a gathering where there are no well known conventions, having a clear agenda helps avoid confusion. Moreover the lecture based format forces us out of our comfort zones to prepare and deliver the talks. We spend time and energy to learn things the group is curious about, and find ourselves getting better at them.
A default speaker is needed
The lecture based format poses the speaker-challenge everytime. We have to encourage and convince someone to come and speak. We can’t announce a meet-up without any confirmed talks. That builds a lot of pressure on the regular enthusiasts. In the beginning I did not do any talks myself because I thought it was not appropriate as an organizer. I was wrong on that.
I later noticed how the Python group did it. At that point, the organizer Mr. Vijay used to give at least one talk per meetup. Perhaps because there were not enough volunteers to give talks. His talks were good, so no one complained. He was almost like a default speaker for the group. 
Organizers should talk when needed. And not only that, some of the organizers should take the role of a ‘default speaker’. This a person who is always ready with some talk, and doesn’t mind being dispensed in favour of others. I served as one for our group for sometime after realizing that.
Multi-tech group isn’t a great idea
I have seen efforts to organize cross-tech communities having a mix of technologies and programming languages. My impression so far is that it does not work. Technology landscape is fragmented along programming languages, and any attempts to ‘unite everyone’ does not work well. And I’m not talking about flame-wars and oneupmanship.
Any such multi-tech gathering leaves very little space for technical depth in discussions. To make content relevant for everyone, we are generally left with a shallow ‘common minimum programme’. For example, its hard get everyone interested in talks on Python Bytecode interpretation and Ruby garbage collection at the same time.
Moreover, tech-culture has got built across these programming language fragments. A langauge based group holds some common opinions and prejudices that are specific to that group. These elements of the culture form the backdrop of most of the discussion. When we try to mix such language groups, it needs additional effort to highlight, learn and appreciate each other’s culture.
Facebook is useless. Twitter and Meetup work better
We used a Facebook group earlier, and then we started with Twitter, Meetup.com and have a website too. And slowly, we stopped feeling the need of Facebook. I eventually realized that Facebook is actually one of the worst tools for community building. And for the simple reason that Facebook content is not visible on Google. Facebook is also not what people browse for technical learning or business opportunities, or for anything serious.
Twitter works much better. It is public, visible on Google and is the least privacy-invasive. Most people in the technology world already prefer Twitter. Meetup.com too is public and has better visibility. Its best feature is its cross-group notifications. It notifies its users in other groups about our activities. This is especially helpful for a new group that wants to reach out to potential enthusiasts.
So far I’ve described the lessons I learned while working for the community. I did not talk about the people who helped build it. (If this gives an impression that I did it all, apologies!) There were many noble souls who have invested their time and effort in it. This also brings me be to the final lesson, which is more like a life lesson.
My original motivation for being active in a programming community was technical learning. Being a freelancer by profession I was missing on peer-learning and I had to look for a place to supplement that. I didn’t care about the social service aspect of this in the beginning, and am not as much of an altruist now too.
But there were people who came along and worked selflessly. It may have looked interesting may be. And may be there are some benefits of the volunteer effort. Social highlight and popularity, respect and adulation of peers, the chance of making friends, or getting hired. But they volunteered even when the chance of such benefits is less, and some of them don’t care about the benefits at all. People come along and help just because something good is happening. People are motivated by the altruitic angle of community work. Many of us think we are making the world a better place by our efforts here.
Not everything worked
There are also several things that didn’t work. We have had some ugly conflict on the mailing list. I have no way of telling whether we could have done something to prevent them. Or is it worth planning and preventing all potential conflicts.
We also have ample room for improvement in terms of technical content. Our discussions remains well within the range of beginner to intermediate level. We have not produced any code or software as a group so far - we have only been sharing and discussing what exists.
Not all companies and people working with Ruby in Chennai participate. We have not done a great job with advertising the value of the group.
We have not done enough for the less represented groups. Participation of women has improved gradually, but it is still abysmal. We have remained a English-only group largely, which is also not great because English is the second language in Chennai.
We have done nothing for social outreach. The Free Software Foundation (2) for example is much better involved in activism and training than us.
So that concludes my list. If you noticed something that I may have skipped, please leave a comment. If something doesn’t look right with what we’r doing, or we are missing something, am happy to hear about them too.
 The Python group in Chennai is one of the most well organized tech communities I have seen. And by now they have improved immensely in terms of logistics and participation. One meetup I attended had over 70 participants.
 The FSFTN: http://fsftn.org/