Thursday, May 2, 2013

Plans for Summer 2013

It's been a long time since my last post, so I thought I should give a quick update about the project. Due to delays in development, the official beta launch has been postponed until July 4th, 2013. On that day, the famous American holiday, we hope to start a new kind of revolution...

We have been awarded a $5000 summer grant from RPI's Foundry program for a startup company based on Burocrat (a web development platform built on top of GWT created for Collective Congress). The idea is to sell technical services to other software firms who want to build web applications using our open-source platform. This grant will help fund the development of both Burocrat and Collective Congress this summer. We've also been discussing the possibility of a contract with an RPI startup, which could provide even more funding for the project.

We have some new developers joining the project, some of whom may be working remotely. Starting this summer, we will be having regular Skype meetings to coordinate our work. Progress should get much faster, with these additional developers and no classwork to worry about. Expect more updates soon, as we finish up the semester and start focusing more on the project.

Friday, February 15, 2013

Introducing: Bureaucrat

While developing Collective Congress over the past year, I faced many tough design decisions. It took me multiple iterations, sometimes with nearly complete re-writes of the code, to get it right (or as right as I can make it).

There is a trade-off between simplicity and extensibility that must be weighed when designing a large software system. Solving a problem in a generalized way often requires more code, but it's worth it if you expect to run into that same problem again in the future. In developing Collective Congress, I have (for better or for worse) leaned in the direction of extensibility over simplicity. This is partly due to the nature of the particular problem we are trying to solve, and partly due to the value solving the problem in a general way.

Developing with this philosophy has produced, in addition to a prototype of Collective Congress, a reusable web development framework built on top of Google Web Toolkit. I've named this framework Bureaucrat, because it mainly functions to manage the data and client-server communication of a GWT app. It also includes custom GWT widgets for data entry forms, lists, a debug terminal, etc.

If anyone is interested in contributing to Burocrat (or Collective Congress), please email us at colcongress@gmail.com.

Below is a more detailed description copied from Bureaucrat's GitHub page:

Bureaucrat does all the boring stuff for you!

The system is based on three key concepts:
  • All data is structured in the form of maps (sets of key-value pairs)
  • Maps can be represented as and parsed from strings in any appropriate format
  • Client-server communication is implemented with the command pattern (passing strings back and forth)
Features include:
  • Model code that can be referenced by both client and server code
  • Command line interface for client-server communication
  • Data storage via the GWT Datastore
  • Logging of all user activity
  • Notification system for user alerts (emails, etc.)
  • Data encryption via Jasypt (http://www.jasypt.org/)
  • Custom GWT Widgets
    • Data entry forms, with validation and configurable form logic
    • Data display lists, with pagination and sorting
    • Debug terminal for testing server commands
To develop a web application with Burocrat:
  • Define the model in plain Java code
    • Argument definitions
    • Item type definitions
    • Command definitions
  • Implement the server
    • Argument implementations
    • Item type implementations
    • Command implementations
  • Implement the client
    • Page implementations
    • Item page implementations
    • CSS and images

Monday, January 7, 2013

Spring 2013 Project Goals

As the beginning of the Spring 2013 semester approaches, it is important to reflect on the long-term goals of the project in order to prioritize the work that we will do. Below is an explanation of the semester-long goals of the project, regarding our development process, the website itself, and our potential user base. These goals are ordered by priority, but we will likely be working on them all in parallel this spring.

Spring 2013 Project Goals

  1. Development process
    1. Active: at least one commit per week
    2. Decentralized: not reliant on any single developer
    3. Accessible: well-documented and easy to contribute
  2. Web site
    1. Functional: provides a useful service
    2. Stable: reliable and relatively bug-free
    3. Usable: easy to learn and use
  3. User base
    1. Active: at least one user activity per day
    2. Decentralized: not reliant on any single user or group
    3. Accessible: welcoming and easy to join
Given the above goals for the spring, we will be using the remainder of winter break (two weeks) to prepare for a successful semester. This means focusing on the first goal, which will help us to achieve the other two goals once we get back to RPI. Right now, the development process is active (usually), but not yet as decentralized (lead developer is still a bottleneck) and accessible (more documentation needed) as we would like it to be. Expect to see some progress in these areas by the end of winter break.

Wednesday, January 2, 2013

Now is the Winter of our Development...

...made glorious summer by this Sean O' Sullivan.

With the Fall 2012 semester behind us, we are now getting back to work and trying to make use of a few weeks of abundant free time during winter break. With a growing development team and a maturing code base, Spring 2013 should be a great semester for the project.

The status of the website remains as it was at the end of Fall 2012. Most of the basic functionality of the site has been implemented, with much work still to be done in testing, debugging, and improving usability. Our goal of a stable beta release remains planned for the beginning of Spring 2012, although this could be delayed depending on how much progress is made during the break.

A potential source of revenue for the project has recently arisen. I have been discussing with a local RPI startup called Ithos (located in the EVE office space) about the possibility of collaboration with Collective Congress. They have expressed interest in our implementation of auto-generated web forms, which they might be able to use for their regulatory compliance service. I will post more details about this if it moves forward.

This interest in our form generation code, along with other considerations, has led to a major development decision. I've decided to take all of the code that is not specific to Collective Congress and put it into a separate repository, as a web development framework that sits on top of GWT. I'm calling this new framework MRCWS (pronounced MaRe CoWS), which stands for Map Representation Command-based Web System. Once this new system is up and running (it's already partially complete), we will export it in a .jar file back to the CC repository. More details about MRCWS and the motivations for this separation coming soon.

Saturday, December 15, 2012

Plans for Winter Break

As the fall semester draws to a close, we're planning the work we will do over winter break. We will have a lot more free time over the next few weeks, so we expect to make a lot of progress. The development team is also growing, with at least two new students joining the project. This brings the team size up to five, and there is one other student who is also considering joining. The combination of additional free time and new developers should allow us to reach our goal of launching a stable beta version at the beginning of the spring semester.

We've created a Google+ page for the project, as well as a Google+ community for internet democracy in general.

We've also started using an IRC channel for internal communication. Anyone interested in the project is welcome to join and say hi.

Expect to see lots of progress and updates in the coming weeks.

Thursday, November 29, 2012

Spreading the Word

As the end of the Fall semester approaches, we're moving into a new phase of development for Collective Congress. The site is becoming more stable, and we will be focusing more on testing and improving the interface in the near future.

Now that our current 3-person team is functioning smoothly, we are looking for more programmers to expand the project. Please let us know if you are interested in contributing. We've created a Facebook page to help spread the word about the project. If you are reading this, then you probably care enough about this project to like us on Facebook, so go ahead.

Get excited for a demo of the new-and-improved site on Tuesday.

Sunday, November 18, 2012

Revised Beta Plans

After reconsidering the current state of the project, we have have decided to delay the launch of the official "beta" version of the site. This change in plans is mostly semantics, because we will still be launching an experimental version of the site for people to test. However, we will keep calling it an "alpha" version until it has reached a certain level of stability and reliability. We expect to reach these levels by the start of the Spring 2012 semester, at the latest. Until then, we will be finishing up the last few essential features, testing the site, and improving the code quality and documentation.

Within the next few weeks, we will begin spreading the word about the project and requesting more developers and testers. Hopefully, the development team will continue to grow over winter break and into the spring semester. During our next RCOS presentation, we will give a live demo of the current version of the site, which has improved significantly since the last demo.

Also, we recently made a submission to RPI's Change the World Challenge. A PDF of our submission can be viewed here: https://github.com/downloads/collective-congress/collective-congress/change_the_world_challenge.pdf