EtherCalc is really impressive! We actually have this running on Sandstorm.io and were planning to release our port later this week. You can try it now as follows:
(You can also install on your own Sandstorm server, if you have one, by substituting it for demo.sandstorm.io. Instructions for setting up your own server are at https://github.com/sandstorm-io/sandstorm .)
Thanks to Jake Weisz for this port, and of course the EtherCalc people for developing this and making it open source in the first place.
The way it was already designed, it was incredibly easy to port to Sandstorm. Like, I think I changed three or four lines of code tops to get it working?
Looking at the GitHub[1] or LinkedIn[2] pages for the repository author on this project is a good reminder-to-self (for me, at least) both that:
- time and dedication/enthusiasm can enable some pretty great things in a whole range of different circumstances [+]
- there are a lot of interesting opportunities for work (and people doing interesting things) out there in the world than that which is readily talked about
[+]: some would at this point say 'and so we should not pre-judge' - pre-judging can be a helpful general-purpose heuristic, though - more useful advice might be to avoid 'final judgement' of anyone
"So we created webworker-threads, a cross-platform implementation of the Web Worker API for Node.js."
The AOSA article is a great read. Further, the result of that EtherCalc work is one of the coolest projects around- an implementation of Web Workers for Node.js using native threading:
"This module provides an asynchronous, evented and/or continuation passing style API for moving blocking/longish CPU-bound tasks out of Node's event loop to JavaScript threads that run in parallel in the background and that use all the available CPU cores automatically; all from within a single Node process."
I'm really impressed, by far the best open source web based implementation of spreadsheets that I've come across.
An area which I'm struggling with is the formatting; and this was because I didn't see the 'Save to: A1:A20' at the top, I expected the button to be below or expected it to save when I changed the values.
I've styled the cell/sheet save buttons so it stands out better as of https://github.com/audreyt/ethercalc/commit/1e819ebf and released to npm as of 0.20140804.1 — Shift-refresh on the ethercalc.org site to see the highlighted buttons in the format tab.
You can't really integrate this into ownCloud well, since it's an entirely PHP based piece of software. And a lot of places ownCloud currently works (shared/reseller hosting) won't work with EtherCalc.
Check out sandstorm.io though. (There's another comment about it above.) I got EtherCalc working on it pretty easily, and I think it really IS a killer Google Docs replacement. :D
While the "Ether" functionality is awesome, I don't like personally like SocialCalc. I was hoping for something better to be honest, as ergonomy-wise it's just years behind.
The main problem for our use case is that you can't have multiple sheets for one "document" (as far as I can tell). There are other small but important problems such as the weird formatting interface. All things combined make SocialCalc about twice as slow as LibreOffice for me so far. I still have to use it since there's nothing better at the moment, but I'm not really happy about it.
It seem to me a web app like this enables a re-think of the file and sheets organizational structure, which is really a compromise due to the limitations of a local file based application. It's simulating being able to link different spreadsheets together by putting them all in the same file.
For a web app, linking to other independent sheets should be the way to go. You'd need a convenient way to define links to other sheets (perhaps defining an alias for links to the other sheet), browse linked sheets and open them in another browser tab. Browsers already have multiple tabs, so there's no need to have a tab based structure for this inside a browser tab.
Just throwing it out there, I've not thought the consequences through really, but it seems a shame to just blindly recreate a file based metaphor.
Tracy Ruggles helped getting a better formatting UI (modeled after CKEditor at that time) for Socialtext — screenshot at https://www.socialtext.net/help-en/socialcalc_move_source_ex... — but something more touch-friendly and intuitive (post-bootstrap) would be awesome.
Please get in touch on ethercalc repo or write me if you know a UX designer interested in revamping our UI!
One of these days (or months) I'll try to take a look at it. The first things i'd like to do are:
* understand how event bubbling works (so that you can put something more complex than a html button in a html cell, maybe a select menu)
* disable dynamic rendering (where cells get reinstantiated upon each redraw)
* possibly implement both by using a specific th cell subtype
By the way I've been able to bake in extended excel formula support from the formulajs project by hacking inside the SocialCalc.CalculateFunction function.. Bit of a kludge but it's handy to support some of them more arcane xl functions.
I'm not sure if this is very helpful, but my two big issues were the lack of pages, of course, but mostly--the lack of text formatting for each cell. It makes the actual spreadsheet hard to read.
I've still going to use it because yes, it's very necessary to have a social spreadsheet platform that is open-source and that you can host on your own servers. Thanks for the work you put in.
Re UI, each cell supports basic WikiText, and clicking the "Format" tab next to the default "Edit" shows the Format:Text dropdown that one can change to "HTML" and then click the top-left "Save to: CellCoordinate". That allows arbitrary HTML in cell presentations.
Alignment, font, etc can also be adjusted in the same tab.
If you'd like to use HTML formatting for all cells by default, the third button on that tab "Show sheet settings" allows sheet-wide formatting customizations. Hope this helps!
1) Click "start the demo" at: https://demo.sandstorm.io
2) Open this link to install EtherCalc: https://demo.sandstorm.io/install/100cdd4f5eb0ad2110b98a81c5...
(You can also install on your own Sandstorm server, if you have one, by substituting it for demo.sandstorm.io. Instructions for setting up your own server are at https://github.com/sandstorm-io/sandstorm .)
Thanks to Jake Weisz for this port, and of course the EtherCalc people for developing this and making it open source in the first place.