Comment by blippage
8 hours ago
Oleo is C, circa 50k of C code, Neo(-leo) is around 5k of C++ code. A 10th of the size, but not necessarily any less powerful. Oleo has some memory leaks in places, whereas Neo has no (known) leaks.
Oleo uses lex and yacc, whereas Neo has a hand-parser.
Oleo is in the style of emacs bindings, whereas Neo is more vim-like, but without the modality.
I think the Neo code is better-structured and more readable (but I would say that, wouldn't I? - although it is far from perfect). C++ generally makes code more readable and obvious, without all that pointer arithmetic.
The internals of Oleo are more complicated. It uses byte-code for cells, for example. Neo stores a parse tree for a cell. So you can see that a lot of programming effort is saved right there.
In terms of speed, I suspect that the original Oleo is faster, although it's difficult to benchmark.
Neo is also heading towards being a library that you can compile in with other C++ code. Plus there's an interface to Tcl, which Oleo never had. So you get a lot of extensibility there which Oleo doesn't have.
I also think Neo is more generally accessible. It's got something in the way of a menu (still early stages), which helps. Neo is just generally less fiddly with editing cells, IMO. The mouse works, too.
Oleo does have an interface using Motif. Very early-90s. There's even an interface to GTk, although I don't think that works properly. I decided to abandon all that and just stick to an ncurses interface. After all, if you want a fancy interface, there are proper options these days like LibreCalc, Caliigra and Gnumeric.
To add to the cool things you can do with Neoleo, I wrote a little TCL extension that loads current processes into the spreadsheet. I added custom bindings so that you could search for processes, go to its parent, and kill processes.
I'm also half-way to adding a little calendar extension, too.
Thanks for the extensive write up