[Phantom-dc] 'Congress Forms' is now 'Phantom DC', and more!

William Budington bill at eff.org
Mon Mar 2 13:21:24 PST 2015


Hello and welcome to the new Phantom DC list, until now named Congress Forms.  This is the first update on the state of the project in general, recent changes, and what we have in store for the future.  There's a lot of content here, so I've separated it into a few sections.

1. New List
2. Project Rename
3. Contract Work
4. Update to Padrino 0.12.4, Ruby 2.2.0
5. Branches
6. Docker Support



### 1: New List ###

I've subscribed you to the phantom-dc list, which is a public, archived list to coordinate on the phantom-dc software project and how it goes about filling out forms based on the contact-congress YAML files.  Since this is an archived list, please refrain from posting any failed form fills with full user addresses, etc.

Messages to phantom-dc at eff.org will go out to the list.  The list info page is available at https://lists.eff.org/mailman/listinfo/phantom-dc



### 2: Project Rename ###

As you may or may not have seen from Github, we've renamed the rather bland "Congress Forms" to "Phantom of the Capitol", or just "Phantom DC" for short.  I feel this project rename will be useful for people distinguishing this project from our congressional data source, Contact Congress.  It also is a riff of the name of the project's true powerhouse, PhantomJS, with a kind of operatic twist.  We'll also have a neat thematic logo forthcoming, compliments of our in-house designer, Hugh D'Andrade.  

Be sure to update your upstream tracking branch to the new URL:

https://github.com/EFForg/phantom-of-the-capitol.git

The change also comes with a few changes to your usual workflow, so be advised of the following:

  - The repository location has changed to as mentioned above
  - Rake Tasks are now namespaced to `phantom-dc`
  - The example database names and usernames have changed to reflect the project rename
  - `config/congress-forms_config.rb.example` has changed to `config/phantom-dc_config.rb.example`
  - `.gitignore` is now ignoring `config/phantom-dc.rb` rather than `config/congress-forms.rb`
  - The `.ruby-gemset` is now named to `phantom-dc`, so you'll need to re-run bundle install

And that's about it.  I haven't had a chance to rename the `congress-Forms-test` repo yet, but that should be coming up soon.



### 3: Contract Work ###

Jason Rosenbaum has taken the lead in getting in touch with some contractors interested in maintaining `contact-congress`, making sure the data is functional with `phantom-dc` and possibly also `formageddon`.  He has sent out an estimated cost for this work (I'll exclude that figure from this public list as to not bias negotiations), which would be divided by the # of organizations willing to chip in.  This contractor would work closely with me and anyone else that wants to instruct them on a reasonable workflow for debugging form fills.  I predict there will be a lot of hand-holding in the beginning, and it will get easier over time.  This can be facilitated by some live RTC like Google Hangouts or WebRTC.

There also has to be some kind of mechanism to 'escalate' the issue, if an edge case is hit where simply editing the Contact Congress yaml files doesn't fix the issue.  These can be either filed on Github or brought up directly with me, or if the contractor desires issuing a pull request.

The contractor will have to sign the EFF NDA as well as any other NDAs that apply for the Action Network or for any other orgs that the contractor has direct server access to.



### 4: Update to Padrino 0.12.4, Ruby 2.2.0 ###

So we have an update for both the Ruby framework and Ruby itself.  So since a few weeks ago, both the `.ruby-version` and `.ruby-gemset` have been updated.  This means that after you `git pull`, issue a `cd .` so RVM picks up on the changes.  Then, upgrade with: `rvm install ruby-2.2.0`.  Then you'll need to get a few gems: `gem install json -v '1.8.2' && gem install nokogiri -v '1.6.6.2'`
 before doing a `bundle install`.  Before this point, these were both stuck in roughly late 2013 state, so there are probably numerous security updates as well.  

Summary:
  
    $ git pull
    $ cd .
    $ rvm install ruby-2.2.0
    $ gem install json -v '1.8.2'
    $ gem install nokogiri -v '1.6.6.2'
    $ bundle install

And then restart your application.



### 5: Branches ###

I'm going to try not making breaking changes on the `master` branch from now on.  Sorry about the last few weeks if you've been caught up in them.  The usual pattern is using a `develop` branch, so I'll probably go with that.  I may start properly versioning Phantom DC as well, and using `git tag` like a champ.



### 6: Docker support ###

If you're a docker fan or just like a simple deploy process, you'll be happy about this one.  We already have a `Vagrantfile` for making the development process easy, and if you're comfortable with vagrant this will still be supported.  But Vagrant isn't exactly production-friendly, and well wouldn't it be great to have an easy setup process that could run on AWS and CoreOS?  Docker to the rescue.  If you want to test it out some basic docker support we already have, install docker 1.5 and docker-compose.  Then:

  $ cp docker-compose.yml.example docker-compose.yml
  $ docker-compose build
  $ docker-compose up -d db
  $ docker-compose up -d phantomdc

That's it, now you have an actual Phantom DC instance that is production ready!  Well... there's still updates I need to make before it's *completely* ready (such as add some critical config options to support supplying them via env vars).  But you can switch the docker-compose.yml to be in testing mode, and the tests will actually all pass!  I'm actually pretty new to docker, so I still need to figure out some best practices, if you're a docker veteran then let me know how you use it.  I've learned a lot but would love some tips.


More information about the Phantom-dc mailing list