COOPY » a toolbox for cooperative data

Help data swim upstream

The COOPY toolbox brings changes in a local copy of a spreadsheet or database back “upstream” to the original maintainer of that data. Too often, data flows only in one direction, and additions or improvements made along the way don't have the impact they should due to format-conversion hassles and organizational hurdles. It doesn't have to be that way!

Get the toolbox

You can download the toolbox or try out a live demo right here. Paste in two versions of a table below to see their difference (don't have any data handy? use a list of bridges of New York). The full toolbox can produce differences between spreadsheets and databases in many formats, and help merge overlapping or conflicting changes.

Contribute

COOPY is free in every sense of the word. If it helps you out, please engage with the Data Commons Cooperative to support its development, through cash, code, or coop membership. Thanks!

To see a live demo: paste in a table

Paste in a modified version of the table

Thinking...

Please supply two versions of a table to see their difference (their “diff”). Or view a prepared demo.
Alternatively, you can patch a table with a diff someone else sent you.

COOPY and freedom

The COOPY toolbox adapts the free and open-source workflow and culture to collaborative data sharing. It is a skunkworks project of the Data Commons Cooperative. COOPY contains:
  • coopy - A graphical user interface for collaborative development of databases/spreadsheets.
  • ssmerge - A tool for doing “three-way merges” between two versions of a database/spreadsheet and a “common ancestor” of both. Supports lots of formats.
  • ssdiff, sspatch, ssfossil - diffing, patching, and distributed revision control systems are key to the happiness and success of the free software ecology. The COOPY toolbox brings them to the world of collaborative data.
  • ... and more.
COOPY currently supports comparisons between tables in the following formats:
  • CSV (comma-separated values)
  • TSV (tab-separated values)
  • SSV (semicolon-separated values)
  • Excel, OpenOffice/LibreOffice Calc, Gnumeric, and similar formats (via Gnumeric)
  • Sqlite
  • MySQL
  • Microsoft Access (via mdbtools)
  • SocialCalc (experimental)
COOPY is a free download for Linux, Windows, and Mac OSX. Its source code is publically archived on github, and can be freely used, modified, and distributed under the GPL. The license for COOPY will be reviewed when it hits version 1.0 (don't worry: the question under review will be whether to make it more liberal). Plugins for particular optional formats may affect the overall license under which you may distribute COOPY.

COOPY and happiness

  • Copying data should be a natural, happy event. It should mean a new collaboration, a community growing.
  • But today, it is usually leads to sadness. Changes clash or get lost.
  • Today, the trend is to have everyone edit a single version of the data collection, using a single tool.
  • This is an all-or-nothing solution. Any minor disagreement over access, tools, or the data itself can destroy collaboration.
  • There is another way. Every day, programmers worldwide collaborate on software projects, with innumerable changes to innumerable copies of those projects being merged and resolved.
  • COOPY adapts free and open-source workflow and culture to collaborative data sharing.

COOPY tasks

Here's what you can do with COOPY:
  • Compare different versions of a table, and get a summary of what has changed.
  • Review differences, and apply them to your version of a table.
  • Store a collection of tables in an online repository that you can share with others.
  • Read/write support for CSV, Excel, OpenOffice, Sqlite, and MySQL tables. Read support for Access tables.

What is distributed revision control?

Programmers use revision control systems to develop programs collaboratively. These systems take care of the housekeeping needed such as merging non-conflicting changes and preserving project history. In the COOPY toolbox, the ssfossil program is a lightly modified version of the fossil distributed revision control system, specialized for tables. The coopy program wraps ssfossil in a friendly graphical user interface for sharing spreadsheets and databases. If you prefer other version control systems, the COOPY toolbox is adaptable - see for example using git with the toolbox. The choice of fossil was based on its excellent, adaptable, light, dependency-free C source code.

Status of COOPY

The COOPY toolbox is fresh, piping-hot, alpha software. Parts of it are solid, parts of it are ... not. Check the toolbox version number prominently displayed in the documentation. Version 0.4 was very incomplete. Version 0.5 was usable. Version 1.0 should be stable and widely used. At the time of writing, the toolbox has 2546 self-tests (and is passing them).

Fork me on GitHub