Catch up on stories from the past week (and beyond) at the Slashdot story archive

 



Forgot your password?
typodupeerror
×
User Journal

Journal Sanity's Journal: /dev/government : On geeks and the political process 34

During a conversation with Larry Lessig a couple of years ago, Larry was lamenting the reluctance of many geeks to engage in the political process, and how if they did, we might never need to resort to systems like Freenet.

Since then, and particularly in the last year or so during which I have been working hard to prevent the introduction of software patents in the European Union, I have seen first-hand how difficult it can be even for determined geeks to combat experienced and well-paid corporate lobbyists. Even when they figure out who it is they should be talking to, the lack of a coherent message can often serve simply to confuse their political representatives, rather than persuade them. On other occasions people's time and energy is wasted in writing to politicians whose minds are already made up.

My idea is to create a website which would allow geeks concerned about particular issues to coordinate their lobbying efforts to avoid these and other problems. At a basic level the website would contain a database of political representatives (and possibly other relevant individuals), and a record of all correspondence sent to and received from that person, organised by issue or campaign (examples of which might include the Software Patent Directive in the EU or the latest piece of anti-technology legislation put forward by the copyright industry's flunkies in congress).

This website would be somewhat analogous to "bugtracker" software such as Bugzilla, but instead of tracking the progress of particular bug-fixes, it tracks the progress of informing those in power about the concerns of technologists.

Going into a bit more detail, people would be able to locate their political representatives by indicating what issue they are interested in and then entering their location. The website would be largely user-generated in the spirit of Wikipedia. Users would be able to add new politicians to the database, edit summaries of those politician's positions, and obviously add details of correspondence they have sent or received.

Each response received from a politician can be rated with a score indicating how close they appear to be to the position the website has taken on an issue. These scores will be combined by the site to summarise the politicians apparent position, whether pro, anti, or undecided.

This data could then be mined in a variety of useful ways, such as creating voting lists of which politicians are deserving of support, and which are not, or determining whether politicians are accurately representing their party's position on the issue.

Unfortunately I do not have the time to build this myself at present, but I am hopeful that there is someone out there with PHP and MySql experience that could get their teeth into it. For my part I am willing to donate an account on a reliable Linux box from which the website can be served, and also the domain name lawtracker.org, to anyone that convinces me that they can make this a reality. Of course I will also provide any other support and advice I can for the project.

If interested, drop me an email at ian at locut dot us.

This discussion has been archived. No new comments can be posted.

/dev/government : On geeks and the political process

Comments Filter:
  • I love it!

    I envision it as something like slashdot (think the layout of the stories, not the trolls), but instead of tech news stories, there'd be politicians (we could have a short bio with a photo), and the comments on each "story" would be summaries of correspondence with that person. There'd be a robust category system to record which political party in which country the politician belongs to.

    Wow, I love this idea and I think I actually have the skills to do it, but I'd prefer to use perl/postgresql i
    • I've been brainstorming how I'd organize the database, tell me if you can see any major flaws with this:

      First, there'd be a table of just countries. It'd have one field, the name of the country, which would be a unique primary key.

      Second, there'd be a table of political parties, which would have a field for the party name (unique primary key), the country it's in (this would be tied to the country table to avoid mispellings in country names), the party's official website, the party's official logo (stored
      • This is great, and is more-or-less in line with what I had in mind. A few comments:

        Re: Country/politician/party tables:
        I think this is a good start, although I am a bit concerned that it might not be flexible enough for the EU, where politicians are members of both national parties, and "groups" within the EU - so we might need a many-to-one relationship between parties and politicians (and perhaps use the more generic term "group" rather than party)?

        Then there'd be a table for politicians, with their

        • Just thinking about the look and feel of the site. I really think WikiPedia [wikipedia.org] has a very nice design, so perhaps we can use it as inspiration. We could probably grab one of the designs from OSWD [oswd.org], some of them are pretty nice too, and all are freely reusable.
          • I agree that wikipedia has a very nice design, soft primary colors but not garish. Google News is also very nice. I could see the design of LawTracker being inspired by both of them. That's just the icing on the cake, for now we need to focus on the hard work of developing code and designing databases ;)
            • That's just the icing on the cake, for now we need to focus on the hard work of developing code and designing databases ;)
              Agreed.
              • I like Sinorca [oswd.org]. Mostly I just like the way the sidebar has alternating grey/white boxes that visually distinguish the different sections. I don't think I'm going to use that design exactly as it is, but I'll probably borrow a lot of ideas from it.
        • I think this is a good start, although I am a bit concerned that it might not be flexible enough for the EU, where politicians are members of both national parties, and "groups" within the EU - so we might need a many-to-one relationship between parties and politicians (and perhaps use the more generic term "group" rather than party)?

          Sure, I have no preference. I'm just used to 'party' as that is the term used here in Canada. Always seemed like a weird word to me ;)

          I think it might be preferable for the

          • I would appreciate ideas on how to store these score values in the database.

            I think the easiest way would be to have a float for each item in the "bridge" table between politicians and issues, or groups and issues (ie. each item in this table contains information about a particular politician or group's view on a particular issue). This would mean that a politician could have a good score on one issue, but a bad score on another. Overall scores for politicians would be calculated on the fly as the aver

            • Overall scores for politicians would be calculated on the fly as the average of all scores for that politician on all issues.

              I think I'm starting to understand. My original idea was to have users 'vote' for the politicians, leaving them with an average overall score, which would give us an aggregate of each user's opinion on the person. But what you're saying is to just simply have one flat 'score' rating per politician per issue, so the last person to edit that value would simply define the absolute scor

              • I have a PNG, or the original .dia file if you want to edit it and send it back to me.

                Made a few changes, get V2 here [freenetproject.org]. Mainly just added a few fields. I replaced the location stuff with a "region" - this can be any geographic area, and links to its "parent" region - ie. the region that contains it. A region can then be a country, county, city, state, or even a politicial union of countries (eg. EU). I have also added an "Id" field to several tables and used it as the UPK - I have noticed that people

                • Made a few more changes, now there is a many-to-many relationship between politicians and groups (using a bridge table). Also, you can find a PNG here [freenetproject.org].

                  By the way, I have sent you a few emails but haven't received any responses - are you getting them?

                • Looking at the new diagram, it makes my head hurt ;)

                  I don't think you understand the arrows, though, as it's impossible for a table to reference itself (is it? I guess I'm the newbie here).

                  Anyway, I made some small tweaks to clean it up. Again, I have a PNG [rbpark.ath.cx] for those who don't want to bother loading Dia [rbpark.ath.cx] ;)

                  I had to take the arrows off of the 'Parent' fields because it needs to be possible to have that value set to 'null', otherwise there could be no top-level regions and no top-level posts.

                  I'm also not e
                  • I don't think you understand the arrows, though, as it's impossible for a table to reference itself (is it? I guess I'm the newbie here).

                    Well, I took the arrows to mean that the field at which the arrow originates contains a value that can be used to look up a particular entry in another table, the destination of the arrow. This is the common meaning of arrows in similar diagrams I have seen which illustrate database architectures.

                    Given this, it is perfectly possible for a field in a table to referenc

                    • Zuh, I'm learning something new every day ;)

                      I was thinking postgres's references would require the value to be something from the field it references, but it looks like I can indeed insert a null value into a referenced field. And I also thought that I could only reference other tables -- postgres is a little weird, it won't let me specify which field in the table it references, I just have to say 'references that other table' and then there's some magic that it figures it out with. I'll have to read up on
                    • was thinking postgres's references would require the value to be something from the field it references, but it looks like I can indeed insert a null value into a referenced field.

                      Well, remember that you don't need to tell postgres when a field references another field (whether in a different table or not), as far as Postgres is concerned when you create the tables it is just an integer. Rather, the referencing is implicit in the SELECT statements when you are querying the database.

                    • Oh no no, there is a way for postgres to enfore the reference itself, to maintain referential integrity. That way it actually won't let you enter invalid data (doesn't stop you from entering just plain wrong info, but it at least stops you from entering invalid data).

                      For example, lets say we only have one region in the region table, 'Canada'. That would have an id of 1 since it's the first entry in the table. If you tried to enter a region whose parent int is '20', it'll give you an error because there is
                    • Oh no no, there is a way for postgres to enfore the reference itself, to maintain referential integrity.
                      Well, I guess we are both learning something from this :-)

                      Once you have got a good schema file, I have a friend who is a database expert who we might want to ask to look over it.

                    • What do you mean by schema? If there's a way to export a schema from the fully implemented database, let me know ;)
                    • A schema is a plain-text file that contains the commands used to create a database (ie. the CREATE TABLE commands). Generally this is how database structures are formalised, and allows you to create the database simply by piping the schema file to the database command.

                      Some quick research suggests that the command you need to dump a schema from postgres is pg_dump -s but I haven't tried it personally.

                    • Ok, I did pg_dump, and I came up with this [rbpark.ath.cx].

                      Have fun with that ;)
        • One thing that I do currently need help with is configuring access controls for postgres. As it is now, I can't seem to figure out how to connect to the postgres server without actually being the postgres user. What I mean is, as root, this command fails:

          psql -U postgres -W lawtracker

          Even though I'm entering the correct password for the postgres user. However, this command succeeds (also as root):

          su postgres -c "psql lawtracker"

          And that'll connect to the database without asking for a password or anythin

    • How about building it using the slashdot engine from www.slashcode.com [slashcode.com]?
    • Wow, I love this idea and I think I actually have the skills to do it, but I'd prefer to use perl/postgresql instead of PHP/MySQL.

      Great! You are welcome to do it in any language you like provided it can be done in a nice clean way such that others can extend it easily, and that the required tools can be installed with relative ease on a Debian box.

      Do you know of any existing codebase that could be adapted to this purpose, so I don't have to start it myself from scratch? Code re-use is a good thing, mm

      • Great! You are welcome to do it in any language you like provided it can be done in a nice clean way such that others can extend it easily, and that the required tools can be installed with relative ease on a Debian box.

        Well, my development platform is a debian stable box running stock apache, perl, and postgres packages, so that should be fine. I'll try not to obfuscate the perl too much, but it'll mostly be written in SQL anyway (and most of the stuff that isn't SQL will be small, simple subroutines def

        • A login mechanism would be nice to not have to implement myself from scratch, though I don't know how useful PHP will be for my perl code (at best I'd be borrowing ideas, not code).
          The PHP probably wouldn't be all that useful - I am sure there are many examples of simple cookie-based login systems using a DB back-end implemented in Perl that you could use as a reference point.
  • by xedx ( 776707 )
    can i join the brainstorming is there a wiki setup somewhere
    • can i join the brainstorming is there a wiki setup somewhere
      Sure, but it is really just taking place here in the comments for the moment.
  • Ok, so now I'm just futzing around with actually setting up the database from the design we've settled on. Learning SQL as I go, but I'm confident that I can do this.

    One thing that I discovered that's very cool, is this SQL statement:

    SELECT a.name, b.name as parent from regions a, regions b where a.parent = b.id;

    It lists all but the top-level regions and associates it with their parents. That's going to come in handy big-time when I'm creating the site and I need to actually create the heirarchy in perl'

  • I'd suggest checking out tikiwiki.org - you can get a site set up with forums, pictures, wiki, web logs in no time at all. You can also customize the appearance to be more in line with your idea. You don't really need to know any SQL to make it work.
  • I have a mostly working login prompt that I managed to hack together from CGI::Session. The next step is to look at the code and get a better understanding of what it's actually doing (some of the session stuff is just voodoo magic to me at this point), and after that to make it possible to register new users.

    From there, all I really have to do is some different public views (looking at different parts of the DB without logging in), and then allowing logged in users to make changes. This is the longest ste

The only possible interpretation of any research whatever in the `social sciences' is: some do, some don't. -- Ernest Rutherford

Working...