/concord

Core outliner

Primary LanguageJavaScriptGNU General Public License v3.0GPL-3.0

Concord

Concord is a JavaScript outliner written by Kyle Shank in 2013, maintained by Dave Winer since, GPL-licensed.

The user interface is keystroke and mouse-compatible with the Living Videotext outliners, ThinkTank, Ready and MORE, and the outliner built into UserLand Frontier and Radio UserLand.

There's a new release in February 2020, the first since 2013.

Concord is the core component of Little Outliner and numerous other of Dave's projects.

Concord's native file format is OPML.

What's new?

You can see the work notes here.

I've been adding features carefully and slowly over the years.

The biggest change is that Concord is now managed using the same tools I use for all my other projects, so it will be easier to publicly release new versions.

The examples and writing on this site are from 2013, this update is a restoration of the original site, not a rewrite.

Concord is an outliner

An outliner is a text editor that organizes information in a hierarchy, allowing users to control the level of detail and to reorganize according to structure. Your notes can have full detail, yet be organized so a casual reader can get a quick overview. Outlining is a great way for teams to organize work.

Written in JavaScript

It's a jQuery plug-in that implements a full-featured outliner that you can drop into other applications with a minimum of work.

GPL-licensed

Concord is licensed under the GPL because outliners are an incredibly useful way to edit structured information. We want Concord to be able to fill every conceivable need for outlining technology.

Ideas include file systems, mailboxes, chatrooms, databases, documents, presentations, product plans, code, libraries, laws, systems of laws, contracts, rules, guidelines, principles, docs, manifestos, journals, blogs, etc.

Here's an important 11-minute podcast about Concord and the GPL.

Tour of the repository

concord.js -- the JavaScript code for the outliner.

concordstyles.css -- styles for Concord outlines.

concordutils.js -- utility routines for apps that include Concord. Everything here is optional, think of it as sample code, but the kind of stuff that likely will be in every app that uses Concord. concord.js does not include this file, but the example apps do.

libraries -- Concord uses jQuery, bootstrap and Font Awesome. There are copies of each in the libraries folder. concord.js does not include these files, but the example apps do.

opml -- contains OPML source code for concord.js and the other files. OPML is the native file format for Concord, so you can open these files in the example apps. They are menu items in example1.

archive -- contains the readme file from the previous version. We may archive other things there in the future.

Example 0: The bare minimum

This example has the bare minimum to add an outliner to an existing app.

This saves developers the trouble of having to factor it out of Example 1, below.

You can try it out here.

Example 1: Hello Outliner

This example is a functional outliner, with most of the capabilities of the Little Outliner app and the same basic approach. You edit a single outline, saved in local storage, so it's there when you come back to it, but only on that machine.

It has a simple menubar, with menus containing Outliner commands, links to OPML documents you can view and edit, and links to docs.

You can try it out here.

Example 2: Small Picture Reader

We've released the source for Small Picture Reader under the GPL as part of the Concord release.

This app provides a way to read any OPML file even if you aren't using an outliner.

There's a command in Little Outliner that creates a link between the document you're editing and a reader version.

If you want to run the app, click here.

The previous version

Here's a snapshot of this repo before integrating the new stuff.

Here's the previous readme.

Support

If you have a question, comment, or bug to report, please post an issue here.

I do not take pull requests, it's best to describe the problem or feature you want to add, as an issue, and let's talk about the best way to do it. Writing the code is never the biggest part of a change or addition.