Starting a user group is a great way to improve your Clojure skills and find others interested in Clojure in your area. If you’ve never run a user group before, that’s ok! Anyone can do it.
A user group needs the following elements:
A meeting place. Finding a regular meeting place is sometimes the biggest hurdle a group faces when getting off the ground. Often the ideal option is finding a company that can host a group after-hours. If that’s not an option, some other choices include libraries, churches, or coffee shops.
A meeting time. It’s important to establish a rhythm to keep a group going. Pick a night (like the 2nd Tuesday of the month) and try as much as possible to have your meeting on that same night every month.
A home on the web. It’s important to have an address on the web that can be found by a search engine. There are lots of ways to put together a web page for free or cheap - see below for some tools you can use.
People! You can’t have a meeting without people. Ask around at other mailing lists or user groups in your area for people that might be interested.
Google Calendar - http://www.google.com/calendar
Wordpress - http://wordpress.com - free blog and web site
Meetup - http://meetup.com - meeting discovery, calendar, user network (75% discount available)
Google Groups - http://groups.google.com - free mailing list
Yahoo Groups - http://groups.yahoo.com - free mailing list
YouTube - http://youtube.com - video hosting
"We have a group but it’s hard to find enough speakers." or "The same people always give talks."
Not every meeting has to have a speaker that gives a prepared talk. Think creatively about other ways to have a meeting that gives value. Some ideas:
Lightning talks - do 5 or 10 minute talks on small subjects. Paradoxically, doing more shorter talks at a meeting is sometimes easier than scheduling one big talk. Each presenter has to prepare less material and meetings have a smaller risk of a bad meeting due to one inexperienced speaker. Try doing two or three talks per meeting.
Live coding session - start with a small problem (it’s hard to start too small for this) and let the group drive the evolution of the solution.
Code review - bring some code and walk through it. Explain the code, take comments on style, performance, etc. Rewrite parts of it to make it better.
Contribute - pick a bug from the Clojure bug tracker and work on it together. Or review the documentation and figure out some improvements. Even providing a list of things confusing to newcomers is useful.
Review a paper - there are tons of great books and papers on Lisp, Clojure, functional programming, persistent data structures, etc. Pick one and lead a discussion about the merits or flaws of the paper.
Book study group - review a classic book like Structure and Interpretation of Computer Programs (SICP) or some other classic
Competition - have everyone bring a solution to the same problem in Clojure or other languages and compare the result.
"We have a mailing list but no one ever uses it."
The best way to get people talking on a mailing list is to talk on it yourself. Post your meeting announcements, meeting recaps, articles of interest, code snippets, etc. Ask people to introduce themselves on the list - people love to talk about themselves. Mailing lists require some bootstrapping. Eventually, the mailing list will become self-maintaining but it takes some work at the beginning or if there is a lull.
"Recruiters have joined our mailing list and keep posting job ads."
It’s important to have a policy for recruiters and job postings. Decide on your policy, document it, and refer people to it. Some common policies are: "job postings are allowed", "only job postings pertinent to the group are allowed", "only approved job postings are allowed", etc. Some groups have a separate mailing list only for jobs and recruiting.
"I can’t find enough people to have a meeting."
If you can’t find enough people to start a Clojure group, perhaps you can broaden the scope to find others that might like to talk about Clojure some of the time. Are there people interested in a functional programming group? A programming languages group? A JVM-based languages group? A programmer’s club?