Using modified MeetBot

2011/09/30 at 10:54 pm (2010) (, , , , , )

As part of my GSoC project I made some changes to MeetBot. If you want to use it you should:

  1. Install supybot. This should be easy, on Gentoo just
    emerge supybot
  2. Get a copy of modified plugin. You can download it from GitHub. Or if you have git installed you can clone official repository:

    git clone git://

    or development repository:

    git clone git://
  3. Add
    to your PYTHONPATH (or link it to directory in which you will run supybot).
  4. Link$(sources_directory)/bot/MeetBotto your Supybot plugins directory. On Gentoo you can do it by executingln -s $(sources_directory)/bot/MeetBot /usr/lib64/python2.7/site-packages/supybot/plugins
  5. Configure supybot. Remember to enable MeetBot plugin:
  6. Configure MeetBot. In directory with your supybot configuration create file
    and in the file put customized version of (please fix indentation):
    class Config(object):
    # Meeting management urls
    voters_url = 'http://localhost:3000/users/voters'
    agenda_url = 'http://localhost:3000/agendas/current_items'
    result_url = 'http://localhost:3000/agendas/current_items'
    # Credentials for posting voting results
    voting_results_user = 'user'
    voting_results_password = 'password'
    # You must set this - it's turned off by default
    manage_agenda = True

    there are some more options but those above should be enough to get started.
  7. Run supybot and try out the bot:
    supybot $(your_config_name).conf

Permalink Leave a Comment

Council application – final report

2011/08/04 at 12:48 am (Planet Gentoo) (, , , , , )

I wanted to write a proper summary, but it’s almost 2am local time for me and I have to get up in 3 hour or so to leave, so I’ll just give a short-yet-covering-everything sumamry I wrote for README of the project. I’ll try to write something more once I’m back. Also you may be interested in README and bug for deploying to Gentoo Infra.

This project has three parts:

  • Website written in Ruby (using Rails and Hobo). This site helps to prepare meetings, collect ideas and feedback from community.
  • Modified MeetBot (MeetBot is supybot plugin). This plugin handles meetings. You can use

    to list available commands and

    #command <command> 

    to view help for each command.

  • Reminder plugin. This supybot plugin pulls reminder information from the website and sends messages to all council members to remind them about upcoming meeting.

What you can do in the webapp depends on your role. You can be guest or a registered user. Once you register administrators can give you administrator and council member roles.


As guest you can only view:

  • Current and past agendas
  • Items for agendas
  • Voting results
  • Meeting summaries approved by council
  • Council attendance

Registered user

Once you register you can do everything a guest can and:

  • Suggest items for council
  • Participate in community vote

Council member

When administrator will give you a council member role you will be able to do everything a regular registered user can and:

  • Change agendas states (available states are open, submissions closed, meeting_ongoing, old)
  • Add suggested items to agenda
  • Reject suggested items
  • Vote during meetings (IRC bot handles voting)


As administrator you can manage users – give them new roles and take away old roles.

Bot has a separate list of commands:

  • #startmeeting
  • #startvote
  • #vote
  • #endvote
  • #nextitem
  • #previtem
  • #changeitem
  • #option list
  • #option add
  • #option remove
  • #timelimit list
  • #timelimit add:
  • #timelimit remove
  • #endmeeting

hopefully command names are self-explanatory. In addition bot obtains agenda items, voting options and timelimits for each item from website when you #startmeeting and sends voting option changes and voting results to webapp when you #endmeeting.

Permalink Leave a Comment

Council application – weekly report #10

2011/08/01 at 3:39 pm (Planet Gentoo) (, , , , , , )

This is my last weekly report – I started working on my project earlier because I’m leaving on Thursday morning (plane takes off on 7:40 a.m. local time, ouch). I’ll write a final report summing up what I did during the project before I leave, this report is summary of what I did last week.

  • I fixed a problem with MeetBot tests (there was one test that failed because it tried to create symlinks that already existed on my system
  • I read all code I wrote and did some refactoring
  • I wrote a proper front page for the application
  • I fixed a bug in a gem the site was using (if you made a mistake during signup it would show your password in plain text input)
  • I wrote usage hints for possibly non-obvious forms in the webapp
  • I added license information to webapp.

For short description of project and sources, read this.

Permalink 1 Comment

Council application – weekly report #9

2011/07/25 at 1:45 pm (Planet Gentoo) (, , , , , , )

Last week I was working on:

  • Preparing database seed for demos.
  • Made some more changes to Hobo to make it easier to use.
  • Wrote custom poll functionality (I planned to use Doodle API, but I had problems with authentication)
  • Improved code metrics.
  • Added support for basic summaries:
    • Council members can edit  summaries.
    • Council members can approve summaries.
    • All approvals are canceled after summary changes.
    • Regular users can view a summary after 4 council members approve it.

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – weekly report #8

2011/07/19 at 1:00 pm (Planet Gentoo) (, , , , , , )

Last week I:

  • Opened bug asking for deployment to Gentoo infrastructure.
  • Worked to push some changes I made to packages maintained by someone else (capybara-webkit, MeetBot, Hobo).
  • Fixed some code that produced warnings

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – weekly report #7

2011/07/12 at 2:54 pm (Planet Gentoo) (, , , , , , )

Last week I continued work on hobo-based application:

  • If you enter url to message on gentoo-archives as “discussion” for agenda item application will use it to calculate how long discussion took.
  • I worked to use Doodle to help planning meetings. Doodle REST API is pretty easy (my code words with doodle-test ) but I didn’t manage to finish authentication. Authentication is oauth-based but I couldn’t authenticate with oauth(2) gems.

I made some changes to hobo. In the application I’m writing I had to set
:null => false
for most fields, my patch adds configuration option null_false_by_default. If you turn it on all text, string and boolean fields in all models will have

:null => false

set by default.

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – weekly report #6

2011/07/05 at 11:36 am (Planet Gentoo) (, , , , , , )

Last week I was working mostly on the website part of my project:

  • I fixed some bugs:
    • If for some reason there was no current agenda(for example it was removed when application was running) the application crashed. Now whenever it tries to access current agenda application will check if there is a current agenda. If there is no current agenda it will create one.
    • When council didn’t have any meetings yet.
    • Some buttons were in weird places, now they are where they look nice.
  • Now all users will be able to vote using the webapp. Those votes are just to let council know what community thinks.
  • Now it’s possible to use markdown when describing ideas.

Also bot will give meeting log to agenda and it will store it for later use.

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – weekly report #5

2011/06/28 at 11:04 am (Planet Gentoo) (, , , , , , )

Last week I worked to improve MeetBot:

  • I added support for #changeitemcommand – it allows you to move through agenda items faster then #netxitem/ #previtem.
  • Bot will close voting after last vote
  • Bot can  send reminders. You can add reminder with

    #timelimit add :

    remove it with

    #timelimt remove message

    list set reminders with

    #timelimit list

    or set them in web application before meeting. Changing item removes all reminders.

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – weekly report #4

2011/06/20 at 10:34 am (Planet Gentoo) (, , , , , , )

Last week I used metrical on the web app and improved tests coverage and variable naming. I also removed some stuff it reported as “code duplication”. Metrical warned about some stuff, but I couldn’t find a reasonable way to fix it.

I tried to switch to capybara-webkit for cucumber tests but I couldn’t find a way to remove session cookies (and I need it to test “Remember me” feature) so I made a feature request (including a suggested patch) and I’m waiting.

I added
#option add
#option remove
#option list

commands to MeetBot to allow changing voting options during meeting (I must do some work on the webapp end to handle added and removed option properly).

I also improved tests for my changes to MeetBot and wrote test for Reminder (the Supybot  plugin I wrote last week).

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – weekly report #3

2011/06/13 at 9:32 am (Planet Gentoo) (, , , , , , )

Last week I:

  • Wrote Supybot plugin that regularly fetches JSON data from given location. Then it checks timestamp, if timestam is newer then previous it sends message to listed users.
  • Application now tracks slaking properly – it marks participation after meeting (council members who voted at least once are present). Then it calculates “slacking status” for current council members based on council term start date and participations.

For short description of project and sources, read this.

Permalink 2 Comments

Next page »