Council application – weekly report #2

2011/06/07 at 9:01 pm (Planet Gentoo) (, , , , , , )

Last week I:

    • Fixed some bugs
    • Added support for proxies:
      • each council member can appoint one proxy per meeting
      • proxy must not be a council member
      • council member who appointed proxy will not be listed as ‘voter’ (for IRC bot)
      • appointed proxy will be listed as voter
    • Nearly finished work on bot
      • It obtains list of users allowed to vote from application
      • It obtains list of agenda items (with voting options for each item)
      • It helps to manage meeting (you can use #nextitem and #previtem commands)
      • It manages voting (#startvote, #endvote)
    • Application can send email reminders about meetings.

For short description of project and sources, read this.


Permalink Leave a Comment

Council application – weekly report #1

2011/05/30 at 6:11 pm (Planet Gentoo) (, , , , , )

I’m going to finish work early (first week of August) so I started working three weeks ago.

Some functionality is ready:

  • Anyone can view agendas
    • Agenda has state:
      • Open – council members and administrators can edit it.
      • Closed for submissions – when meeting is close and no one should change agenda.
      • Meeting ongoing – currently unused.
      • Old – old agendas, no one can change them.
    • There is always exactly one agenda in state different then “old” (that is in open, closed for submissions or meeting ongoing state).  cal this agenda “current agenda”.
    • There is list of agenda items
      • Every item has fields for title, description, and discussion(s).
      • Any registered user can create a new item. Initially item is not assigned to agenda. There is listing of all unassigned (suggested) agenda items.
      • Council members can add it to current agenda. Items added to agenda don’t appear any more on the suggested agenda items list. They appear as agenda items for a specific agenda.
      • Council members can reject it. Rejected items don’t appear on suggested agenda items list.
    • For every agenda item there is voting options list.
  • Anyone can register
  • Registered user can be marked as administrator
  • Registered user can be marked as council member
  • I started work on the IRC bot
    • When someone says #startmeeting (in addition to everything MeetBot usually does) it obtains two JSON files containing:
      • Array of nicks allowed to vote on the meeting
      • Array of agenda items. Each agenda item is array. First item of that array is title of agenda item. Second item is array with voting options for agenda item.
        This looks a more complicated then it really is, so here is an example: suppose current  has two two items: ‘What I will eat for diner’ and ‘Should I walk the dog before or after dinner’. Voting options for the first one are ‘Pizza’, ‘Sandwiches’ and ‘Nothing’. Choices for the second one are ‘Yes’ and ‘No’. This results in an array:

        [["What I will eat for diner", ["Pizza", "Sandwiches", "Nothing"]], ["Should I walk the dog before or after dinner", ["Yes", "No"]]]
    • Other commands I added are: #nextitem, #previtem (to change currently discussed item), #startvote, #endvote, #vote(to vote).
    • When someone issues #endmeeting command bot posts voting results (JSON with hash mapping agenda item title to hash mapping nick to voting choice).

For short description of project and sources, read this.

Permalink Leave a Comment

Council application – Short introduction

2011/05/30 at 1:57 pm (Planet Gentoo) (, , , , )

I’m working on application for Gentoo Council this year. You can see current code in repository on GitHub, you can expect frequent non fast forward changes there. You can find reviewed code in repository on All changes in the repository on will be fast forwardable.

Like my GSoC project in 2010 the main part of this will be a hobo-based ruby on rails web application. I’m using hobo-devise gem to manage authentication, to provide LDAP integration. I want to expand MeetBot to provide IRC bot that will help to manage Council meetings on IRC.

Permalink Leave a Comment

Recruiters application on Gentoo infrastructure

2011/02/21 at 6:07 pm (Planet Gentoo) (, , )

It took longer then I thought but Gentoo Recruiters Application is working on the Gentoo infrastructure (in fact it was working for a while now, but I missed the message that it did). You can find it here. Right now there is just one recruit using it (me) to try how it works with real recruiting.

And by the way on the Gentoo Bugzilla in product “Gentoo Hosted Projects” there is a component “RecruitingWebapp”. And there are already a few bugs there (here).

Permalink 4 Comments

Need for some signed emails to test Gentoo recruiters application

2010/10/05 at 10:27 pm (2010, GSoC 2010, Hobo, Planet Gentoo, Ruby on Rails, WebApplication)

I did some work on web application for Gentoo Recruiters after end of Google Summer. One thing I (hopefully) finished is signatures validation. To make sure the application works properly I need sample singed emails from various email clients.

To help me testing please create a signed email using your email client and send it to jbartosik[at]gmail[dot]com (or save it and pastebin it if you prefer).  Please use detached/ mime signature. Also feel free to use outdated/fake keys.

Permalink 2 Comments

GSoC: Gentoo Recruiters web app summary

2010/08/19 at 9:02 pm (2010, GSoC 2010, Planet Gentoo, WebApplication)

Coding for Google Summer of code has ended on Monday so here is a quick overview of what application can do. It’s pretty basic web application, but should do the work in the beginning I’ll continue working on it so some shiny features I (and not only I) wanted in the application shall get here in the future.


Each user in application has a role. Role can be guest, recruit, mentor or recruiter. There are also two groups with additional permissions: project leads and administrators. Every role has different permissions. User who is not logged in is guest, who can only view some questions and read question descriptions. After creating account user will be recruit or mentor. To be mentor after registration user should use OpenID to register. Recruiters can promote recruits to mentors and demote mentors to recruits. Administrators can demote recruiters to recruits or mentors and promote recruiters to administrators. User must be recruiter to be administrator.

Mentors and recruiters must be Gentoo developers for at least 6 months so application requires them to provide their nicks. Application can check if mentors provided nick of Gentoo developer and if developer with this nick is with Gentoo long enough.

Application can also fetch list of (sub)*project leads from and mark users who are project leads as project leads.


Any signed up user may create a question. Questions created by administrators are public: all users can view them and answer them. Questions created by non-administrators are private (or suggested) questions: only creator and recruiters can view those questions. Administrator can approve suggested question and then it becomes a public question.

Questions belong to categories and groups. It probably could use a better wording to avoid confusion (as I explain below they are quite different things but names may be confusing).

Recruiters tell users questions in which categories they should answer. They do so by adding relationships between users and categories.

Question in group are alternative questions – user should answer only one question from every group. Application choses randomly question user should answer from every question group. Guests can’t see grouped questions – but they can see description of group (so they can prepare to answer question). Recruits can see only those grouped questions they should answer. Mentors can see grouped questions their recruits should answer. Recruiters can see all questions.

Question can have content of one of three types:

  • Text questions. recruits write their answers. Recruiters and mentors then check answer. Mentor of recruit who gave the answer can make comments to help recruit improve answer. Recruiters can give reference answers for questions (only recruiters can see reference answers).
  • Multiple choice questions. When recruit answers all multiple choice questions [s]he should [s]he will see a message on the home page indicating if all answers were correct or if there was at least one wrong. Application checks if answer is correct by comparing it to reference answers. All multiple choice questions should have reference – if there is no reference answer for question application will assume recruits answer was correct
  • Email questions. To answer email question recruit sends email to application. The email should match specified conditions (not visible to recruits).

Email notifications

Application sends email in few cases: When recruit gives a new answer or changes existing answer application sends notification to mentor of the recruit. When mentor comments answer application sends notification to user who gave the answer. When new public question appears application sends notifications to recruits who should answer it.


It’s possible to sign up and login with OpenID.


When answering questions recruits can express their opinion about documentation.

Permalink 1 Comment

Released hobo-openid gem

2010/08/04 at 6:47 pm (2010, Hobo, Programming, Ruby on Rails, WebApplication)

I released hobo_openid to RubyGems ( here :) ).  It still needs work but is usable. To add OpenID support to your Hobo application install hobo_openid gem and change your application a bit.

Modify user model

First you need to add field storing OpenID to your User model. Open app/models/user.rb and add

openid        :string


Modify users controller

Then add actions that will handle logging in and sign up to your UsersController. Open app/controllers/users_controller.rb and add following line to the controller class:

openid_login({ :openid_opts => { :model => User } })

Create OpenID login page

With current version of Hobo it’s impossible to include taglibs in gems (probably it’ll be possible when next version of Hobo comes out), so you will need  to change some pages manually. Create app/views/users/openid_login.dryml with following content:



        <input type="text" name="login" id="login" class="string"/>

      <labelled-item if="&Hobo::User.default_user_model.column_names.include?('remember_token')">
        <item-label class="field-label">Remember me:</item-label>
        <input type="checkbox" name="remember_me" id="remember-me"/>


    <set user="&Hobo::User.default_user_model"/>

    <div class="actions">
      <submit label='Log in'/>


Add links to OpenID login page on login and signup pages

Create app/views/users/signup.dryml with content

    Or <a href="&openid_login_users_path">sign up using OpenID</a>.

and app/views/users/login.dryml with content

    Or <a href="&openid_login_users_path">log in using OpenID</a>.

Create routes

Add this lines to config/routes.rb:

map.openid_login_users 'users/openid_login', :controller => 'users', :action => 'openid_login', :conditions => {:method => :get}
map.complete_openid_users 'users/complete_openid', :controller => 'users', :action => 'complete_openid', :conditions => {:method => :get}

Permalink Leave a Comment

Recruiters web application – please help testing

2010/08/03 at 7:21 pm (2010, GSoC 2010, Hobo, Planet Gentoo, Programming, Ruby on Rails, WebApplication)

please help testing web application I’m developing for Gentoo Recruiters team.


Here is an instance of the application you can use for testing. If you do please remember a few things:

  • Don’t use your real email. There is no need to. There is no point to.
  • This instance can not send email notifications.
  • I will probably wipe its database from time to time so don’t put anything you don’t want deleted there.


If you want to read sources or run your own instance of the application you can obtain sources of the application from git repository on When running your own instance of application remember a few things:

  • If you start application in ‘development’ mode it will be incredibly slow. You will be able to choose user from drop down list instead of logging in.
  • It’s tested for PostgreSQL and MySQL, probably will work with SQLite.

To get started do following:

git clone git://
cd recruiting-webapp
rake prepare:config db=mysql # you can use db=sqlite3 or db=postgres
nano config/config.yml # fill in usernames, passwords and database names
rake db:schema:load
rake gems:install # or `gem install hobo bluecloth`
./script/server -e production

then wait a few second for server to start (at my machine it takes about 10s) and visit .

Permalink 1 Comment

GSoC: Gentoo Recruiters weekly progress report #9

2010/07/19 at 9:00 pm (GSoC 2010, Planet Gentoo)

Last week (after finishing previous iteration) I finally managed to stay a bit ahead of schedule. This iteration titled is polish so I was polishing the application:

  • I improved quality of some stories from last iteration that weren’t ready. There is still one story left – email questions. Now application uses email from field and subject to identify who is answering what question. To make it harder to break someones answers by sending forged emails I’ll rewrite it to use tokens to identify users.
  • Navigation bar had too many tabs I cleaned it.
  • Seed data are now interpreted as ERB. I did it to allow configuring domain for seed users (to make testing easier).
  • I replaced plain text fields in some models with HoboFields::MarkdownString so now users can use markdown in answers, comments and questions. I also updated seed to use markdown where it’s useful.

My app is:

Permalink Leave a Comment

GSoC: Gentoo Recruiters weekly progress report #8

2010/07/16 at 5:28 pm (GSoC 2010, Planet Gentoo)

Last week (that is 2010.07.05-10) I added some features to Gentoo Recruiters web app:

  • Support for multiple choice questions. Users who answered all multiple choice question they should will see on their home pages messages indicating if their answers were correct. The message tells only if all answers were correct or if there was at least on wrong answer.
  • Making  sure mentors are Gentoo developers long enough. When user is edited application check will check if user role is mentor. If it is app will check if nick of user is nick of Gentoo developer and if the developer is Gentoo dev long enough. Several things are configurable:
    • If this check should be performed or not.
    • URI from which developer data shall be obtained.
    • Minimum time spent as Gentoo dev before one can become mentor
  • Support for testing gentoo-dev-announce posting. This adds a new question type, that can’t be answered using web app. It can be answered by sending email to the application. Once app receives email it will check who sent it (using from field of the email) and question it’s answer for (using email title) and check if it meets specified criteria.

Also we started a new iteration this week, so demo of the application got updated. It contains some bugs that were discovered when I was covering existing features with cucumber (more about it in next weekly report on Mon).

Permalink Leave a Comment

« Previous page · Next page »