About this tutorial

This guide covers:

  • Starting a user group
  • Tips for keeping it going
  • Meeting ideas

This work is licensed under a Creative Commons Attribution 3.0 Unported License (including images & stylesheets). The source is available on Github.

Starting a user group

Learning Clojure is easier (and more fun) if you can do it with others. Some of the essentials you will need to work out before your first meeting:

Meeting time

If you have a handful of interested parties, it's best to run a quick poll with some options for day of the week to find the most promising candidates and then unilaterally pick one. If evenings are challenging, consider a breakfast or lunch get together!

Location

Location can sometimes be the hardest part of creating a new group. Some ideas:

  • Ask a software, consulting, or recruiting company in the area. Hosting a group is a great way for potential hires to learn about a company.
  • Many libraries and public spaces can be reserved for meetings.
  • A get together at a local bar or coffee shop can be enough at the beginning.

Meeting format

Most Clojure user groups follow one of three models:

  • Talk with a speaker
  • Coding exercises (dojo, swarm coding, pairing, etc)
  • Informal chat

Speakers

If you have trouble getting speakers, try assigning a topic (a Clojure feature, library, etc) to someone to present at the next meeting.

Meeting organization

By far the two most popular ways to organize your group are Meetup (use discount code "clojure" for 50% off!) or Google group mailing lists. Also consider creating a GitHub organization where attendees can find each others' code repos.

Keeping it going

Once you get the first meeting or two under your belt, you have to worry about how to keep it going. Consistency is one of the most important things in getting a group going - as much as possible try to stick to a stable meeting date and location.

When the group is young you’ll need to spend some effort marketing to help it grow — this is one of the reasons that Meetup.com shines. If there are local calendars, get your group listed.

Create a web site! Domain names and hosting are cheap — it’s totally worth creating a blog site dedicated to the group on your own domain name.

Create a Twitter account for the group and post info related to the group as well as specific to your topic. Ask all attendees to post about meetings on Twitter and blogs. Record your talks and put them on the net.

Consider using a private mailing list for those that attend the meetings. This is a somewhat unusual choice these days but having the limited membership means that you generally know the people that write on the mailing list and having it closed means that people can be a bit more free in asking newbie questions. Both factors contribute to a closer-knit feeling of local community.

Once you get to a certain size (or if you are fortunate to have good companies involved), you can find sponsors that provide food for your group.

Meeting ideas

Looking for meeting ideas? Here's some ideas....

  • Work through through the Clojure Koans
  • Work through problems from 4Clojure
  • Run a session on getting set up on Emacs with Clojure (or Vim, or ...)
  • Work through Project Euler problems
  • Work through a Code Kata
  • Implement a game (Tic-Tac-Toe, Rock-Paper-Scissors, Checkers, Othello, etc)
  • Build a web site for your group in Clojure and deploy it to Heroku!
  • Review and expand Clojure documentation guides
  • Look through the Clojure JIRA for bugs to work on

And some tips:

Troubleshooting

I can't find enough people for a group

You might think of broadening the scope to pull in people that are interested in something similar but not exactly the same. If you can't find enough people for a Clojure user group, maybe a functional programming group would capture other people interested in Erlang, Scala, Haskell, F#, etc.

Contributors

Alex Miller alex@puredanger.com (original author)