9 ms·
Concord, our GPL outliner
- jerf 13y agoAh, dwiner, at last my long Linux nightmare of having no decent outliner shall come to an end.... Urf, budgeting the time for this may be a challenge, but odds are good that this can be dropped into a XUL shell to obtain a traditional "local" filesystem outliner with only a few hundred lines more of grease. I'll have to see what I can do. (I've done it once before for something else.)
- untothebreach 13y agoHave you ever tried FreeMind? Not an "outliner" like this, but a good way to organize content, and it's Java so it Runs Everywhere™
- phaer 13y agoNo decent outliner on Linux? http://orgmode.org/ http://orgmode.org/ is by far the best i have seen so far, so could use outline-mode if you do not use any of the extra features. There is something similar to outline-mode for vim users if i remember correctly.
- ah- 13y agoYes, I use VimOutliner, which is perfect when you already know how to use vim.
- acomjean 13y agoI didn't know what an outliner was: From the Git page: 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.
- smoyer 13y agoAnd isn't this just a special case of an object graph where all the objects are strings, the relationships sub-objects can't have two parents and the traversal is over when you've reached a leaf? What about hierarchies of objects that aren't strings? (I'd like to organize them too). What about hierarchies that aren't a strict tree? (I can't really do my genealogy on this). P.S. I like what Dave does with outliners but I'm not sure I'd apply them everywhere he does.
- jerf 13y agoI've fiddled with this extensively. The problem isn't data representation; sure, "outlines" are "just" graphs. The question is, what on Earth does your UI look like? Editing "graphs" is hardly more structured than creating a "data editor"... ok, those are some nice English words you've got there, but how does it actually work? At least by limiting it to text and stuff that looks a lot like text, you can produce a real application that does real things of real value. It may not be suitable for everything, but your thing that is suitable for "everything" is likely come out being suitable for nothing in practice.
- smoyer 13y agoThat's a hard problem - I haven't done any "fiddle" but I've spent a lot of time doing Gedankenexperiment and haven't come up with anything I believe is remotely applicable. The genealogy example I gave is simpler but I'm not sure I've seen an editor for that use-case that's optimal either. Maybe the problem just can't be simplified further? And as an aside, I wasn't trying to disparage Dave Winer's implementation of tree editing at all.
- andrewflnr 13y agoI wrote one. It might not be exactly what you had in mind. It works okay for me for brainstorming: github.com/andrewf/graphpaper
- thyrsus 13y agoWhen folks stop talking about trees and start talking about graphs, they seem to forget that you usually want to have an order on the edges. I think an outliner is a great way to explore a fully connected directed graph with sequenced edges; just don't hit "Expand everything" when the graph contains a cycle. Leo http://leoeditor.com/ http://leoeditor.com/ expends a lot of effort to avoid cycles, which shows up in slow execution when adding edges ("cloning", in its terminology) to a node reaching a significant subgraph. If the graph can contain cycles, a recursive expander needs to contain cycle recognition and terminate after a finite number of trips through the cycle (probably one).
- the_mitsuhiko 13y agoI think more project should be this obvious with their choice of GPL, makes it easier to dismiss :-)
- vx-k 13y agoI think more comments should be this obvious with their trolling & stupidity, makes it easier to flag :-)
- the_mitsuhiko 13y agoMight not have been the highest quality comment but there are lots of companies out there that outright forbid GPLv3 code to be used for anything really.
- AaronFriel 13y agoGPL? How does this interact (legally) with other running JavaScript? Do I have to make the rest of my site's JavaScript "GPL" as a result? I'm curious, does the dynamic nature of JavaScript make browser-based GPL Javascript essentially LGPL? Any lawyers or FSF advocates out there know?
- tedivm 13y agoI've never seen a good answer to that question. I've emailed the FSF and others and they all tell me to consult a lawyer for how the license works (if they respond at all).
- npsimons 13y agoIANAL, but the spirit seems to be "hey, here's this software, use it how you like, but if you distribute it (including building on it or bundling it in a product) please be kind enough to extend the same freedoms to those you give it to." Using Concord on your site? Offer a link to the source. Modify it to work better with a framework? Offer that modification too. Build an entire product off of it? Well, be prepared to release the source to that product under GPL as well. If you don't like those terms, feel free to start from scratch and not freeload off the original authors who were kind enough to share source with you in the first place. I don't understand how people can pay good money for things like game engines, then turn around and think that OSS doesn't have a price too, or get upset when they are asked to pay it. You just end up paying back to the community instead of into a company's coffers.
- halostatue 13y agoThat's what the LGPL is for, if you prefer that one (I don't; I prefer the MPL to the LGPL, as it's share-alike restrictions trigger on internal changes). The GPL is less suitable for this because means that all of your code for the page(s) using Concord have to be GPL-compatible. Presumably, this includes Urchin.
- tedivm 13y agoNot all OSS has a price. All of the code I've releases is under a free license, not a restrictive one like the GPL. This does mean that companies can use my code in their proprietary projects, but that seems to have gotten me more contributions back instead of less. I also think that a license which is too complicated for anyone to actually understand is simply too flawed to serve it's purpose, which was the original point of my post. This is completely separate from people not giving back to open source.
- Touche 13y ago3k LOC in a single file... ouch. Someone introduce Dave to makefiles.
- andymoe 13y agoI'm almost certain he writes the code using an outliner tool as well like was the case for the scripting language that shipped with frontier and the OPML editor so that probably makes it easier for him to manage. At least it will be easy to include into a project ;-)
- Arelius 13y agoIs 3k lines in a single file really considered that bad? I've never had a problem dealing with it.
- kemayo 13y agoShould really have a demo link somewhere. You can click through to github, to be told that it's what their Fargo tool is based on, and from there you can click through to that... to be told that you have to link it to your dropbox account before you can even try it.
- davewiner 13y agoThere are links to two demos in the readme.md file in the repository. https://github.com/scripting/concord/blob/master/README.md https://github.com/scripting/concord/blob/master/README.md
- tjr 13y agohttp://littleoutliner.com/ http://littleoutliner.com/
- davewiner 13y agoAnd littleoutliner is an instance of Concord as well. ;-)
- leejoramo 13y agoIn addition to the all ready linked to Little Outliner version, the project on GitHub has to examples.
- deleted 13y ago[deleted]
- sinkasapa 13y agoI would like something like this that translates directly into JSON. Kind of a cross between concord and http://jsoneditoronline.org/ http://jsoneditoronline.org/ It will just have to be something I write myself, I guess.
- davexunit 13y agoIt's crazy to me that there seems to be a backlash against this project being licensed under the GPL. Thank you for choosing copyleft. Also, if I got it right, an outliner is a note taking application? The best note-taking application I know of is, by far, org-mode in Emacs.
- hhuuggoo 13y agohope you all don't mind. little self plug on the subject - I also have an open source outliner here is the source http://github.com/hhuuggoo/efficiently http://github.com/hhuuggoo/efficiently and the demo: https://eff.iciently.com/docview/r/4ed70c031a7ba32edb000002/ https://eff.iciently.com/docview/r/4ed70c031a7ba32edb000002/ But this one is an app, not a plugin, so it might be less useful to some.
- tzs 13y agoGPLv3, which will put off some people who would be fine with GPLv2.
- Stratoscope 13y agoI've been browsing through the code a bit. It has a few problems. First, the brace and indentation style is extremely unusual and hard to follow. I have never seen this style used in another curly-brace-language project anywhere. I realize that brace and indentation is a very personal preference, but I've had no trouble following a variety of styles - until this one. Here's an example: if(c.op.inTextMode()){ c.op.focusCursor(); c.editor.restoreSelection(); }else{ c.pasteBinFocus(); } The if block and matching else block have different indentation levels? What? That does seem to be the pattern followed in a number of places. How would you follow this style if there is a chain of else-if's? I don't see any examples in the code, but it seems it would have to look like this to be consistent: if(a){ b(); }else if(c){ d(); }else if(e){ f(); }else{ g(); } OTOH, this function follows two different indentation styles for its two if/else blocks: this.callbacks = function(callbacks) { if(callbacks) { this.root.data("callbacks", callbacks); return callbacks; } else { if(this.root.data("callbacks")) { return this.root.data("callbacks"); } else { return {}; } } }; Try this quiz: Without loading the code into a brace-matching editor, just eyeball that function and see if you can tell which open brace matches with which close brace. The function could be much simpler too: this.callbacks = function( callbacks ) { return callbacks ? this.root.data( "callbacks", callbacks ) : this.root.data( "callbacks" ) || {}; }; Also in a half-dozen places or so, the code uses a for..in loop to iterate over an array. This type of loop should never be used with an array for two reasons: If any other code in the page extends Array.prototype the code will break, and the order of iteration is not guaranteed. These loops need to be converted to numeric for loops or $.each() or any similar alternative. One last point that is just a matter of taste, but I think the code would benefit quite a bit if it followed the popular jQuery convention of using a $ prefix on variables that contain jQuery objects. I love outliners, and I'd really like to contribute to this project, but the code is so strangely formatted that I'd have a really hard time with it. I wonder if the authors would consider adopting a more conventional coding style, or if they just like it the way it is?
- davewiner 13y ago
- gatesphere 13y agoLeo is the last outliner you'll ever need. http://leoeditor.com/ http://leoeditor.com/