ShareLaTeX
sharelatex.com
sharelatex.com
I am aiming for a fermium model at the moment, deep down I want to offer free a service which helps people collaborate on important work. Ideally with premium accounts subsidising a free but fully functional accounts. i.e. help people work together first, make a living second.
few buzzwords for people: > MongoDB/mongolab, > 100% CoffeeScript, > Node.js, > Now.js/socket.io, > Twitter bootstrap, stole css for menu bar from nide https://github.com/coreh/nide > S3 > Linode > loggy.com
So you'll have half as much traffic in 100.5 days? :)
More seriously, this looks awesome. I do all almost all of my writing in LaTeX, including papers, presentations, and random other documents. I've tried to collaborate on LaTeX documents before, but unlike many other types of text documents, the collaboration didn't work very well: the editors that could do collaboration didn't integrate with rapid compilation and previewing, and the editors that do rapid compilation and previewing don't do collaboration.
Have you considered using PDF.js to display the PDF in real-time in the browser next to the LaTeX document? Put that together with something like SyncTeX, and you could show your (or everyone's) current cursor position in the rendered document in real-time. Various tricks also exist to render LaTeX documents more quickly to allow for real-time previewing, such as those used in WhizzyTeX http://cristal.inria.fr/whizzytex/ .
Integration between the BibTeX bits and some form of online reference tracking would make a lot of sense: hit one bookmarklet or browser plugin button on a paper you want to reference, and end up with a new reference in your .bib file.
The biggest question I immediately have: how well does this handle documents that need random packages you don't already have in your TeX installation? From Beamer and TikZ to conference and journal styles to random obscure formatting packages, I don't want to find out in a crunch that I can't easily use any package I need. Do you have any compatibility issues with random TeX and LaTeX packages, perhaps due to the need to run them in a secure server environment? Do I have to add all the individual packages into my project, or can I have them as common elements across my projects? Similarly, can I share my own .bib files and packages across projects?
On that note, what about images and arbitrary data files I might need to include, such as from \includegraphics or
What TeX implementation do you use behind the scenes? TeXLive, I hope?
How do I know what versions you use? What happens when you upgrade? TeX itself might keep backward compatibility forever, but random LaTeX packages don't always maintain that property.
First-impression question: why do you ask for my first and last name, rather than just an email address and password? Do you want it to fill in \author{} automatically? Please say up front what you need it for. Either way, never ask for "first name" and "last name", just ask for "full name", which will work for more people. http://www.w3.org/International/questions/qa-personal-names
I have looked into pdf.js and semi implemented it however it was only really worth it for firefox users, other browsers generally had a better experience natively, not that I am ruling it out forever but at the time I went for keeping it simple.
Seeing others cursors would be great. I am using the ace editor and that does not natively suport more than once cursor atm, if I had more time I may implement it myself but to be honest it is not going to happen in the very short term.
behind the scenes it is just a fully instance of tex-live 2011 which should cover 95% of needs. For other packaged which are available I am hoping people request them for the moment and I install them, for obvious reasons I am wary of allowing people the ability to install global packages on my server.
On first name and last name, you are right not really needed, same goes for email confirmation. I have been planning on killing those for a while but just hasn't happened!
I definitely wouldn't suggest that you allow people to install new packages globally. However, TeX supports personal LaTeX paths, so users could have their own path with whatever extra packages they needed. (Also, if you ever decide to provide paid-account-only features, that seems like a prime candidate.)
TeXLive definitely covers most needs. Beamer and TikZ represent the biggest things I regularly want that TeXLive doesn't include, and would want to install to a non-project-specific location (since they both have big piles of interacting packages). Other bits, like conference and journal styles, usually come as a single .sty or .cls file that I could easily enough just drop in my project if necessary.
One more thought: I desperately want this to integrate with git, since I version-control almost all of my LaTeX documents.
on git: I want to add some sort of versioning, my current plan is to do a nice friendly wrapper around a single branch on git. This could then be pulled from for peoples peace of mind but probably not pushed to. My thinking is git is hard, I use it all day as a dev and I am still googling how to do things, if you are a mathematician yes you have the ability to learn it but you shouldn't have to and probably can't be bothered to.
Do you expect many people to keep a giant pile of still-edited documents on ShareLaTeX?
Regarding git: using it for basic built-in versioning seems useful, but in my case I actually don't want to treat ShareLaTeX as the canonical source of the document and keep the git repository there. I'd just like to use ShareLaTeX as an editor, and keep the Git repo elsewhere. I don't know offhand the best way to support that, though. Pushing to ShareLaTeX to edit and pulling back when done to push to the canonical repo could work, and it seems like the simplest option, since you can safely ignore conflicts entirely. Using ShareLaTeX as an editor on a third-party git repository seems potentially awesome, but fraught with unfortunate security implications, as well as having to deal with merge conflicts on pull.
I feel people on HN/you are a small percentage of people who use latex and git in that way. I think most latex users backup policy is copying and pasting folders. Im not against the idea, what I really don't want is to deal with merge conflicts and people emailing me asking for git help it is likely I will offer a pull only service one day.
Please do remember that you've created something awesome here, and you should try to make some money from it. :) I realize you want as many users as possible, but when designing your premium features you need to select things that some significant subset of people will want enough to pay for. I certainly want to pay you for this, but if you give me everything I need for free that makes it harder. :)
In particular, as a user I want you to make money from this so I'll feel confident that it'll stick around.
The private/public distinction makes a lot of sense. It might also work to just allow a single private non-collaborative repository, which would suffice for a user who rarely uses collaboration to try the service (since they can delete and add projects at will), while anyone doing collaboration on a private project with several other people will want those people to have the ability to edit at any time, and thus they can't take down the project to work on something else.
Freemium does seem highly preferable to ads, here. I won't say that you couldn't make a decent amount on ads, but I don't think they'll work nearly as well for you, given both the target audience and the amount of resources each user needs.
I do think you have the right idea about git: supporting arbitrary repositories would help power users, but allowing read-only access to a one-branch git repo goes a long way with relatively little effort. Your priorities seem entirely sensible. :)
By the way, how do you plan to scale? A single compilation of a large document takes multiple seconds of CPU-bound computation even on a dedicated system; what happens when you have even a few hundred simultaneous free users? That suggests a very sensible possibility for premium accounts: any kind of real-time previewing or fast compilation would go in the premium category, while free users get to click the "PDF" button and wait in line for a brief period. (Browsershots and similar services follow this model.) You'd still provide a huge amount of value for free users, who can collaborately edit for a while and then hit "PDF" and wait a bit for the result. Meanwhile, in my case I compile several times a minute by hitting a single editor keystroke and having the PDF viewer in the other window automatically update, and I'd happily pay to make the delay go away, given the collaborative features here.
On a closely related note, I think this would work most effectively if you allow one user to pay and then invite other collaborators to edit a document. A couple months ago, I needed to prepare a presentation with two other people elsewhere in the world. After a failed attempt to use Gobby (non-trivial for one of the collaborators to install the current version on OS X), I ended up using one of the various EtherPad sites floating around to edit the TeX source, and repeatedly grabbing the entire document and running pdflatex locally to get a preview. I still had to clean up the document by hand afterward due to broken TeX formatting, since other collaborators didn't have the ability to compile. If I could have paid to make that problem go away, and just handed a link to my two collaborators, I gladly would have.
Which raises an interesting question: does this make more sense as a monthly service, or as an "ow ow ow this hurts here's some money make it stop" service with a more pay-as-you-go model? I edit LaTeX documents often enough to use a service like this quite frequently, but not so often that I wouldn't have a month go by without doing so, which hurts when paying for a monthly service. Perhaps something like $small for a few days (for the initial "ow this hurts" use case), and a reasonable multiple of $small for a year (for the case where you expect to use it repeatedly). When you stop paying, your documents stick around (because a bit of text costs you almost nothing to store), but the private collaboration and fast unqueued compilation/preview goes away.
How does that sound?
Yep right again, I should try and make money. What price points would you think is acceptable? I was thinking around $4/mo $35/yr. Great idea on PAYG, a one off project for $7 which could actually get a lot of sales, that would have to be time limited to say 2 months however because people could just switch the content in and out. You are correct I would never delete the content, the cost is so low. Actually getting the money is another problem, Im based in London so the best option is currently paypal, I would like to hold out for stripe but who knows how long that will take....
Scaling, You are right that it could get bad, I've been chatting to a guy who's pdf compiles down to a 28 meg. The next step would be breaking the compiling out to a different server, the code is nicely decoupled so it would not be hard to implement. It wouldn't be to hard to have multiple compiling processes getting jobs from a que. Other than that I've not thought to much about it.
For simplicity sake I am planning on having 1 owner who's account is 'debited', other users could be of any type. Interesting idea like Browsershots, I will have to look at that a bit more.
This is great advice, please keep it coming.
That said: I actually think $4 would work nicely as a "project" price, and for more along the lines of 1 week rather than 2 months. That would nicely cover immediate one-time pain like the case I ran into. $4 falls squarely in the category of "yeah, I'll pay that to solve this problem today", and I'd have paid that just for the 1 day I needed to use it.
If you feel like you can comfortably serve people at $4/month, I'd absolutely pay that price without hesitation; $7/month seems reasonable too. Perhaps you should just treat that as the "project" case, and market it so that people think of it more as a "pay once and use it for a month" price than something they necessarily have to pay repeatedly for via a subscription. I think that'd make more sense than trying to go off the beaten path by talking about weeks. :) (Most "monthly" services don't really cater for the case of "let it lapse, then start paying again when I need it", but in the case of this project I think it would work beautifully to do so several times a year.)
I don't have a strong feeling for the right price for a year. You want something that makes people say "I'll use it often enough that I don't just want to pay $4 (or $7) each time I use it." You might just want to start with monthly and add annual if someone asks for it. Annual billing also introduces new complications, such as making chargebacks more frequent and more serious.
I also think some great opportunities exist here for "organization" or "college department" plans. I could easily imagine an entire CS department getting enough value out of this to pay for it, if you don't mind jumping through the hoops it takes to sell to such entities.
Regarding queuing: Redis works beautifully for this. Just add the ID for the particular version of the project to a queue when the user hits the PDF button (Redis: LPUSH), and run a pile of queue processors, each of which grabs an ID from the queue (Redis: BRPOP) and runs pdflatex. To handle premium users, use a separate queue with some queue processors only looking at that queue and some looking at both. (BRPOP accepts multiple lists and returns an item from the first non-empty list.) Track the processing time for premium and free users, and throw enough resources at queue processors to get each of those to the level of service you want to provide.
Regarding payment: words can't express how much I'd recommend against PayPal. But then, I have access to things like Stripe and Samurai; sorry. :( I'd still recommend finding a decent payment gateway if possible. You'll also find it a lot harder to sell to organizations or departments if you use PayPal.
When I get a chance to breath I will look into the price levels in more detail.
I would ideally look for a provider who can just take all the hassle out of taking cards and doing reoccurring payments. Sorting out a payment gateway is a lot of effort which I would rather focus on the product in the short term (next 3 months).
Something I'm wondering about: I currently use vim-latexsuite which has a bunch of expansion features. For instance, if you type '^^' it expands to '^{<++>}<++>', where the '<++>' are jump markers, and then 'jumps' into the first marker. So if I wanted to type e.g., 'e^{-x/2}', the keystrokes I'd use would be 'e ^ ^ - x / 2 CTRL-J'.
I'm not sure how you'd do the something similar, but the combination of jump markers and user-defined expansions (e.g., I can define 'QQ' -> '\mathbb{Q}', 'fN' -> 'function', '`/' -> '\frac{<++>}{<++>}<++>' or even 'pmABCD' -> '\begin{pmatrix} a & b \\ c& d \end{pmatrix}' ) saves an enormous amount of time writing TeX.
Out of curiosity, why do all these in your editor rather than in TeX? For example, `\def\QQ{\mathbb Q}` would work just fine, and be only one more keystroke. (The third example could be made into a parametrised macro, but `\frac` is already such a macro, so I guess that you're really valuing the keystrokes.)
For the others, it is really about the keystrokes -- one has to be able to type really fast to keep up in a lecture or a talk, and then once you've optimized for speed, why not type that quickly all the time?
I am an avid vim user and I would also love more powerful bindings.
Very cool site, though. Google docs for latex is a very useful offering. Thanks!
A demo is up and running at http://docs.latexlab.org/
* not affiliated with the project in anyway, just remember using it awhile back.
- unlimited private projects / free accounts only have public projects like cloud9 - multiple compilers - unlimited collaborators per project - background compile looking for errors - git pull access
any other ideas are welcome.
A really sweet potential feature request: dropbox integration. Then I could work on my dissertation from anywhere, and always have a few extra backups.
I did write a makefile to do the monotonous stuff for me (create pdf, generate figures with graphviz, fetch bibtex from zotero, etc). one of those instances of procrastination instead of writing which i can at least justify.
http://www.ieee.org/conferences_events/conferences/publishin...
I did upload the class file and the document points to it explicitly.
You can check out the errors here: https://www.sharelatex.com/project/4f2cc71be369403e73004116 (awesome that I can do this!)
This is really great, I'm going to tell all of my academic friends/collaborators about it. This is a _huge_ improvement over version control (for non-geeks) or Dropbox sharing, not to mention email, which a shocking number of people seem to still use.
That said, it would be nice to be able to download the files with one click, sync with dropbox, and maybe have support for versions or diffs?
There is no version control at the moment. I am working on how to implement this and diffs in a user friendly way soon. Basically git is not the answer for collaborative LaTeX in my option, a different more dynamic and simpler way is needed which I am working on.
This sounds very interesting. Could you elaborate at all, particularly on what 'more dynamic' means?
Stolen from another comment I made about writing latex:
"writing LaTeX is different from code for many reasons, for one if you write a new class in e.g. c# all other classes do not care about the implementation, just what can the put in and what do they get out. With LaTeX that doesn't work, you duplicate yourself and get the narrative in the wrong order, they are very different paradigms."
Basically other systems have this down, classically google docs and either pad, but they are just for normal text. I would love to be able to have a wrapped git blame on the site, one you can see in real time.
Awesome job BTW.
£10 says it goes down in the next 6 hours.
I'm bored this w/e, so do get in touch and let me know if I can lend a hand with some back-end systems tuning ... email, or via the phone number on m'webshite (also on devwiki, under "contact numbers" IIRC)
FWIW, I just imported a document I'm working on to check things out. It gives a bunch of warnings (underfull \hbox) but other than that works fine on my system -- on your site, however, I can't get to the PDF, it keeps jumping to the Logs screen with the warnings...
The site is secure but can always do better.
Looking forward to giving it a spin!