Home - PAPIsdotio/cfp-app GitHub Wiki
Welcome to the cfp-app
Like many other conferences and meetups, PAPIs used to rely on Google Forms & Spreadsheets to handle talk proposals. But nowadays, there’s an app for just about anything — including Calls for Proposals. Earlier this year, we opted for Ruby Central’s cfp-app, an open source Rails application that can run on Heroku and proved to be a big time saver compared to regular forms & spreadsheets. None of us knew Rails but we were still able to customize and deploy the app very quickly — here’s how.
PAPIs (the International Conference on Predictive Applications and APIs) is a community conference which features invited talks and a majority of contributed talks in 3 different tracks: technical, business, and research (see videos on Youtube and proceedings in the Journal of Machine Learning Research).
Talk proposals can be submitted by anyone and are reviewed by our program committee. We operate a “rolling acceptance” submissions policy, in which early submissions may be accepted earlier. During the whole revision process, reviewers can provide feedback for authors to improve their proposals before the CfP closes, which in the end makes a positive impact on the quality of the conference program.
The biggest academic conferences rely on complex conference management systems such as Easychair or Microsoft CMT, but for PAPIs we opted for an open source solution which is much easier to adopt. Ruby Central’s cfp-app was originally designed to run the CfPs for RailsConf and RubyConf, and they made the source code available on Github for anyone to use. Most of the features we needed were already built-in, and the fact that this app is built with Ruby on Rails makes it easy to extend its functionalities through plugins and gems. By default, the cfp-app allows speakers to log in to the app via Twitter or Github accounts and submit their proposals through a customizable web form. Organizers create a group of reviewers who blindly review and rate proposals. Authors receive feedback from reviewers through the same platform. When decisions are made to accept/waitlist/reject proposals, authors get automatically notified by email. Moreover, the cfp-app provides slotting and scheduling tools to create the final conference program.
Customizing the app with more sign in options
Customization is one of the key advantages of open source apps. In particular, we wanted to extend the “sign in” procedure with other providers apart from Twitter and Github. This could be easily achieved thanks to Omniauth, a library that standardizes multi-provider authentication for web apps. Technically speaking, this change implied to include the new plugins for Google, Linkedin and Openid (omniauth-google-oauth2, omniauth-linkedin, omniauth-openid) into the ruby gemfile (Gemfile). Then, we updated the initializer with the new providers (config/initializers/omniauth.rb). Finally, we amended the “sign in” view (app/views/sessions/new.html.haml) and css file (app/assets/stylesheets/_base.css.scss) with the new providers.
Deploying the app on Heroku
Deployment on Heroku was also time and money saving. Heroku is a cloud platform that provides infrastructure abstraction and enables fast deployment, management and scaling of apps. Moreover, Heroku offers a free tier solution called Dynos, which is ideal for prototyping apps. Ruby Central created the cfp-app with a Github to Heroku deployment stack in mind. This allowed quicker deployment without worrying about the installation and configuration of Ruby and Postgres. It only requires to configure some app parameters, such as the App name, runtime region and configuration variables (GITHUB_KEY, GITHUB_SECRET,…). Once the app is deployed, it can be accessed through the browser https://app-name.herokuapp.com/ and through the system console (by installing the Heroku CLI). To set up the admin user, this has to first sign in via browser and then the Heroku app owner has to set its admin flag to true from the Heroku CLI. You will find step by step instructions for deploying the cfp-app at the end of the article. Finally, Heroku enables to schedule daily database backups through the following user interface https://postgres.heroku.com/databases/. However, the free tier solution only retains the two last backups.
Creating a call & reviewing proposals on the app
If you are running a meetup, having only one call/event on your CfP app could be enough, but for conferences (which would get more proposals), you would create a dedicated call per conference.
You can specify tags (proposal tags & reviewer tags), add custom fields, edit guidelines, and speaker notification messages… Manage roles and add reviewer and organizer accounts.
Reviewers can access the list of (anonymized) proposals and sort them according to various criteria: number of reviews, standard deviation in previous reviews’ ratings, tags, etc. For any given proposal, a reviewer would provide a rating, an internal comment, and a comment to be sent to the author of the proposal (comments can actually be both ways and serve for discussions). When enough reviews have been made, organizers can make a first pass at the list of proposals, give soft accept/waitlist/reject decisions, and when they have all agreed on decisions they can confirm them, which sends emails to authors. Authors can confirm or withdraw, and confirmed proposals can then be added to the program and schedule within the app (it even handles multiple tracks and rooms). When we first used the app, we didn’t use its “program” and “schedule” features and chose to do this part outside of the app. It made adoption quicker for us, but now that we are more familiar with the app, we’re ready to use all its features in order to make collaboration on creating the conference program even easier and more efficient!
Step by step deployment on Heroku
-
Fork the cfp-app repository from Ruby Central.
-
Click on “Deploy to Heroku” link at your own repository (https://github.com/your-github-account/cfp-app#deployment-on-heroku).
-
Fill in the form (App Name, Runtime Selection) on Heroku.
-
Register the CfP app at Github and Twitter to obtain the application key and secret.
-
Set up the configuration variables on Heroku accordingly.
- Deploy the app. The first deployment, Heroku will request profile information such as credit card, although nothing will be charged as long as you use Dynos.
-
View the app on the web browser.
-
Sign in to the CfP app with your Twitter/Github account.
To set up the admin user from your local’s computer console:
- Clone locally the forked repository.
git clone https://github.com/your-github-account/cfp-app.git
- Install the proposed ruby version (rvm is the ruby version manager).
rvm install ruby-2.3.0
- Run locally the app through the Heroku CLI.
heroku run console — app papis-cfp
- Set the first user as admin.
p = Person.first
p.admin = true
p.save
Running Cfp- App locally
To setup this application locally we need to first create the required environment on the local system. To run this application locally we need to first install the ruby on rails on our system.We on install ruby on rails on windows but using Ubuntu as a base operating system is highly recommended. Now if you don't want to install Ubuntu on your system separately you can use a virtual machine to do it parallelly with your current operating system.
Installing Virtual Machine and Ubuntu on your system
There are many virtual machines available online but Virtual Box is an easy to install and open source virtual machine.
First, download and install the Virtual Box from this link https://www.virtualbox.org/ Then download a Ubuntu iso file - https://www.ubuntu.com/download/desktop
Go to new option in the virtual box and then follow the steps from this video https://www.youtube.com/watch?v=uXZHPGx4dDk&t=208s to install the Ubuntu on Virtual Machine
Installing rvm, Ruby, Rails and Postgres
After installing virtual box and running Ubuntu on virtual box Ruby and Rails needed to install
To install Ruby on Rails first we have to install rvm and using curl. To install rvm use this command \curl -sSL https://get.rvm.io | bash
Using rvm install ruby and rails on the system (make sure the installed ruby version is same as in the gem file) of cfp 2.2.3 if not change the version in the gem file. to install Ruby, Rails and dependencies please refer to this link http://railsapps.github.io/installrubyonrails-ubuntu.html
After installing the ruby and rails install Postgres database - https://help.ubuntu.com/community/Pos... import the cfp app using git clone command (first, install git if not installed - https://www.digitalocean.com/communit...) –
After cloning file to local system run cd cfp-app command run the following command
bundle install
NOTE: You may need to install Qt/qmake to get Capybara to work you will get the install command in suggestions.
Create and migrate database using
bundle exec rake db:create db:migrate db:seed
there could be errors try to alter the superuser
In end run rails s command to run app locally ( you can also refer to this video to see how to run app locally https://www.youtube.com/watch?v=ysQxu7x8I3o&t=281s )
ation though only name and contact email are required.
Managing your event
Once done you should land on your event's organizers page. This is the hub of managing your event. I will briefly touch on the things you can do here. You will likely want to add other organizers and reviewers to the event. This is at the bottom of the page in a section called 'Participants'. Click 'Add/Invite New Participant' to add them. You will use their email address to get them added. The system will add any existing users if their email address matches the invite. You can fully manage who has access to your event in that section. The next order of business will be to draft up your conference guidelines via the 'Edit Guidelines' button. Guidelines are the instructions speakers see before submitting a proposal. This is where you give them any information and instructions before they submit a talk. You can preview the guidelines with a link to the public guidelines page after they've been set. 'Edit Tags' will keep a list of tags that can be used by speakers (proposal tags) and by reviewers (review tags). Above the 'Edit Tags' button is the list of both tag groups. Speakers and Reviewers can only tag their proposals from these choices. 'Edit Event' allows you to change any of the details you initially set when creating the event. If you didn't set the opening and closing dates on your event, you can do that under 'CFP Dates'. Additionally, you will want to indicate the dates for your conference under 'Event Dates'. These dates are required to create a schedule. Finally, the status of the CFP, such as open or closed, is listed under 'State'. It must be in the open state to accept proposals. If you need to delete your event, you can do it on the edit page. 'Edit Speaker Notifications' allows you to craft the email content that goes out to speakers when their talks are accepted, waitlisted or rejected. The app does have defaults but we recommend you draft your own email bodies. On the right side there is a markup legend with some custom tags for making the emails dynamic such as including proposal title and confirmation link.
Navigation
The nav bar has several parts to it. On the far left we have the 'CFPApp' link which takes you to a public-facing events page. There you would see all events active on the site. Next to the right is the 'Speaking' dropdown. All users get this and from there you can navigate to your proposals. That page has links to each proposal you have submitted to all events as well as any speaker invitations you may have received. We'll touch on speaker invitations under 'Submitting a Proposal'. If you have Reviewer access you will see a 'Review' dropdown next to the right. Each event you have reviewer access to will show up there, which takes you to the proposals page. We will talk about that in detail under 'Reviewing Proposals' If you have Organizer access you will see an 'Organize' dropdown will give you three links per event you have organizer access to: Proposal, Program and Schedule. We cover each of these in the Organizer section. The 'Notifications' dropdown will display a count of any in app notifications you haven't read. Clicking the dropdown will show you a list of these notifications such as 'Marty Haught has commented on '. You have a 'Mark all as read' and 'View all notifications' options as well. We briefly touched on the user dropdown on the far right. This is visible to all users. From there they can sign out or visit their profile. Their profile is how they edit their name, email or bio, allow them to connect to various services such as Github or Twitter. If you are an admin, you will also have a People link. This is where you manage all Person records.
Submitting a Proposal
The primary way to submit a talk is to visit the public guidelines page and click 'Submit a proposal' to get started. This does require the event's CFP to be open. The heart of the proposal is the title and abstract. These two will show up in your program and schedule. They are required fields and have limits on how long they can be. The details field is for reviewers/organizers only and is there to allow the speaker to show 'what's behind the curtain' like an outline or other explanations that don't belong in the abstract. The pitch is there to allow the speaker to sell you on why this talk should be in your event. On the right column there is a section for the speaker to select what tags they feel are appropriate, assuming your event is using tags. Next it will show the speaker's name, email and bio. The bio can be modified per proposal in case the speaker wants to tweak the bio to sound better for the specific topic. Name, email and bio are hidden from reviewers and only visible to organizers at a later stage of the CFP. Finally there is a preview on the bottom right of the page. Assuming everything looks good go ahead and hit 'Submit Proposal' at the bottom right. You can get back to your proposal by going to the 'My Proposals' link under 'Speaking' nav dropdown. You will be able to see its status, which should be 'submitted' until either you withdraw the talk or the organizers make a decision on your talk. Returning to your proposal page, you will see both an 'Edit' and either 'Delete Proposal' or 'Withdraw' button. If you need to make edits, feel free to do so up until the organizers have decided if your talk is in or out. Once it has been accepted or waitlisted, you cannot edit the proposal. At that point you reach out directly to the organizers to edit it. We did this on purpose so talks can't be changed without organizer awareness and permission. Another feature on the proposal page is the ability to invite additional speakers. If your talk has more than one speaker, you would now invite them via their email to your talk. They will get an email with instructions on how to accept your invitation. This is important so that their information will be associated with the talk. Additionally, you can make comments to the reviewers on your talk. You will remain anonymous, identified only as 'speaker', though any replies from the reviewers will indicate which reviewer made the comment. You can see how many reviews your talk has received but not details on what sort of rating it received. Finally, you can see if your talk status has changed from 'submitted'.
Reviewing Proposals
As a reviewer or organizer, you will use the 'Review' dropdown to get to the proposals page for your event. It is the hub for going through and rating all the proposals submitted. It has a Statistics section up top where it will show you how many proposals you have rated versus how many have been submitted. Below that is a count of how many unrated proposals are left. The list of proposals can be filtered and sorted as you see fit. This is very important so that you can either focus on a certain tag or look at the oldest proposals that you have not rated. The list shows the following fields: Score: the average score across all ratings Your Score: how you rated the proposal Ratings: how many ratings total a talk has received Title: which is also the link to view the proposal Proposal Tags: the tags the speaker(s) associated with the proposal Reviewer Tags: the tags the reviewers have added Comments: a total count of public comments including reviewers and speakers Submitted On: the original submission date and time Updated At: The last time the speaker updated the proposal The sort order is sticky and you can use the shift key to sort by more than one column. Use the 'Reset Sort Order' button to clear this out. By clicking the proposal title you can view the proposal details page. Here you can see the title, abstract, details and pitch fields for the talk. If any comments have been made, you can view those as well as make a comment yourself. The Review column on the far right is only visible to other reviewers and organizers. You will not be able to see any other ratings or internal comments until you have rated the talk. This is to keep the reviewer from being biased by what others have said on their reviews. You can set or modify review tags at any point and this again is visible only to other reviewers. The rating scale is 1 through 5. At RubyCentral we consider a 1 as a strong no, 2 is a likely not, 3 is a good talk and certainly in the running, 4 is a great talk and a fit for the event and 5 as a top notch and ideal talk for the event. We also like to get at least three ratings for each talk, preferrably more. Once you have rated the talk you will see an average rating along with the other ratings the proposal received. Finally internal comments can be viewed below, once you have rated the talk. These comments will only be visible to fellow reviewers and is a place for any commentary that can help determine how suitable the talk is for your event without the speaker seeing the discussion. One note, at this point updating the review tags or posting a comment in either comment box will refresh the page and lose changes in the other comment box. Only Rating is an ajax call that will not disturb the rest of the page. One thing that will happen is you will get notifications showing you what talks have been updated after this point. You only get notifications for talks you have reviewed though. We added a flag in the participants sections which defaults to true for reviewers to receive an email when comments have been left on the talk. You will not receive an email for an update though notifications for updates do appear in the Notifications nav list.
Customizing and Contributing
It is likely you may want to customize or change how the CFP App works. Feel free to fork and modify as you see it, as long as you respect the MIT license. If you feel any of your customizations are appropriate to contribute back to the project, please review our CONTRIBUTING.md file to see the guidelines on how to work with us to make the CFP App better.