=====================================
How to start LLVM Social in your town
=====================================

Here are several ideas you can take into account when designing your specific
LLVM Social.

Before you start, it is essential to make sure that the meetup is as welcoming
as any other event related to LLVM. Therefore you shall follow LLVM's
`Code of Conduct <https://llvm.org/docs/CodeOfConduct.html>`_.

Other than that - your mileage may vary. Please adapt your social to what works
best for your specific situation.

General suggestions
-------------------

* We highly recommend that you join the official LLVM meetup organization. In
  addition to covering the cost of the meetup, all LLVM meetups are advertised
  together and easily found by potential attendees. Please contact
  arnaud.degrandmaison@llvm.org for more details.
* Beware of cultural differences: what works well in one region may not work in
  other part of the world.
* Do not be alone to organize the meetup. Try to work with a couple other
  organizers. This is more motivating as an organizer, and this makes the
  meetup more resilient over time.
* Each event can have a different form such as a social event, or
  a hackathon/workshop, or a 'mini-conference' with one or more talks. You do
  not have to stick to one format forever.
* Whatever format you choose, `LLVM Weekly <http://llvmweekly.org/>`_ is an
  excellent topic starter: go through the 3-4 recent LLVM Weekly posts and
  prepare a list of the most interesting/notable news and discuss them with the
  group.

Advertisement
-------------

* Try to advertise via similar meetups/user groups
* Advertise your meetup on the mailing lists (llvm-dev, cfe-dev, lldb-dev,
  ...). Feel free to post to all of them, or at least to llvm-dev.
  But as these mailing lists have high traffic and some LLVM developers are not
  very active on them, you may reach more interested people using the mailing
  feature from meetup.com.
* Advertise the meetup on Twitter and mention
  `@llvmweekly <http://twitter.com/llvmweekly>`_ and
  `@llvmorg <http://twitter.com/llvmorg>`_.
* Announce the next meetup in advance, and remind in one week or so.

Tech talks
----------

* It’s a great idea to have several talks scheduled for several upcoming
  meetups to get the ball rolling.
* Keep looking for speakers far in advance, ideally you should have 2-3
  speakers ready in the pipeline.
* Try to record the talks if possible. It adds visibility to the meetup and
  just a good idea in general. Any modern smartphone or tablet should work, but
  you can also get a camera. Though, it is recommended to get an external
  microphone for better sound.

Where to host the meetup?
-------------------------

* Look around for bars/café with projectors.
* Talk to tech companies in the area.
* Some co-working spaces provide their facilities for non-profit (i.e., you do
  not charge attendees any fees) meetups.
* Ask nearby universities or university departments.

How to pick the date?
---------------------

* Make sure you do not clash with the similar meetups in the city (e.g.,
  C++ user groups).
* Prefer not to have a meetup the same week when the other similar meetups
  happen (e.g., it’s not a good idea to have LLVM meetup on Thursday after
  C++ meetup on Wednesday).
* Meetups on weekends may attract people who live far away from the city,
  but the people who live in the city may not attend.
* Make a poll, but beware that not every responder will join (we had ~20 votes
  on the poll, while only ~8 people attended).

