Hi creator here, just got in from a few beers to see on HN which is amazing to see! I've only been coding for about 20+ months or so and this has been my evening/weekend project for the past few months, its a very new site, only out for about 5 weeks now. There are still lots of things to improve but the feedback has been amazing.
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
Hey, this is really great (and a strange coincidence -- this afternoon I was thinking about building something similar).
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.
> I can define 'QQ' -> '\mathbb{Q}', 'fN' -> 'function', '`/' -> '\frac{<++>}{<++>}<++>' or even 'pmABCD' -> '\begin{pmatrix} a & b \\ c& d \end{pmatrix}'
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.)
It sort of depends. For the blackboard bold, it's not really much difference between doing it in the editor and doing it as TeX macros. I used to do them in TeX, but after I started doing other things in the editor I switched them for no particular reason outside of consistency. Also, expansions for words like function, holomorphic, 'the following are equivalent', 'if and only if', etc., are problematic to do as TeX macros, because of issues around spacing, and because it's simply more readable.
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?
Pleased to hear it wasn't a mad idea to build the site! I don't personally write the vim command and tbh they are just vi movement bindings which come along with the ace editor - http://ace.ajax.org/
I am an avid vim user and I would also love more powerful bindings.
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
massive get out clause, its 3am in London and I have been drinking
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!
ACE seems like the best choice; I didn't realize it didn't do remote cursor tracking. Definitely not worth going out of your way for. As for showing the cursor in the PDF preview, even just doing that for the user's own cursor would work quite well.
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.
Having individual user paths with style files and other packages is something I have thought about. I think for my premium account I will probably only offer unlimited accounts and perhaps continuions compiling behind the scenes looking for errors. It is quite important to me to offer a full service for free.
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.
With few exceptions, most of the papers and presentations I've written get finished, tagged, archives, and never touched again. Sometimes I'll start a new presentation and take some material from a previous one, but I still typically do so as a new document. Given a model like that (which seems fairly standard in research), unlimited projects wouldn't really affect me much, since I can just delete projects I've finished with. (I wouldn't keep the canonical original on ShareLaTeX anyway.)
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.
You are right about people just moving projects in and out. Another option is to follow Cloud9's lead and have public projects for free and private available to premium. There are other things to limit like number of collaborators however its quite important to me personally to let as many people use this as possible. People do spend a lot of time on the site which might make adds an interesting alternative, but I would rather not muddy up the site with them. Any ideas are very welcome.
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.
> You are right about people just moving projects in and out. Another option is to follow Cloud9's lead and have public projects for free and private available to premium. There are other things to limit like number of collaborators however its quite important to me personally to let as many people use this as possible. People do spend a lot of time on the site which might make adds an interesting alternative, but I would rather not muddy up the site with them. Any ideas are very welcome.
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.
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.
First of all, a disclaimer: ask a pile of interested people very carefully before deciding on prices; people suck at accurately saying how much they'd pay for something, and that almost certainly includes me. :) If you want to get fancy about it, take a look at https://en.wikipedia.org/wiki/Van_Westendorp%27s_Price_Sensi... , and perhaps http://www.priceintelligently.com/ ; if you don't want to get fancy about it, just make sure you talk to more than a few people.
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.
Interesting on redis, I already use it to store sessions. A friend talked about have 2 ques, only process free que when premium is empty as well.
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).
If you were to offer an self-hosted version that I could install in my own datacenter, that'd be of serious interest to me (my company). Allowing anyone else to hosting the sort of documents that end up in latex (very sensitive research papers) is simply not an option, but collaboration among researchers would be very convenient on a platform like this if we could control it. Sure, lots of latex is university or public research that ends up getting published anyway, so security is not a concern. A lot of it, however, is industrial research labs where information security is of paramount importance. This seems to be an overlooked market among many people who just want to make web programs. I urge you to consider the possibility that you have many potential customers who are not interested in letting you host their data.
Very cool site, though. Google docs for latex is a very useful offering. Thanks!
Just few days ago I was saying that I wish Google docs could handle latex. Now this looks perfect! I will be sharing this with my advisor and other students and see whether we can use it.
Latex lab development seemed to have stopped over a year ago before they implemented real time collaberation, if it had continued I would have not have started sharelatex.
Unfortunately no, that brings in a world of Complexity which Im not planning on dealing with. www.scribtex.com offers a git based interface for offline work which may suit.
I am a graduate student in a math-heavy field, so I thought you might be interested in some feedback. Just yesterday, I was embedding LaTex-derived images into an HTML email in order to collaborate, and I thought: this is just so stupid. Your service definitely fills a need in the research community. I love it. What is the envisioned freemium model? A problem I can see is that very few users would need more than the service you are already offering.
That is a problem tbh. At the moment my number 1 objective isn't to make money but we will see what the service costs me to run. Ideas for things for premium
- 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
I'd really like to see a prominently linked privacy policy. Not that I'm particularly concerned with you stealing my work-in-progress, but just as an easy-to-see assurance that such things won't happen.
A really sweet potential feature request: dropbox integration. Then I could work on my dissertation from anywhere, and always have a few extra backups.
Git is the best if you are working on LaTeX by yourself, I wrote my dissertation last summer using it extensively. However 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. I am planning on writing a blog post on this soon.
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.
At the moment it is just a full installation of tex-live 2011 on ubuntu, if something is missing just do some feedback and I will install it within a few (waking) hours.
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.
You can download the source files with maybe 2 clicks? (settings -> download zip).
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.
Well I only half know what that means as well, bit of a buz word. I basically mean you need to see things happening in real time.
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.
This is a legit startup idea. I can see my professors, research advisors, and myself using this for sure. Collaborative research documentation is a great idea. I hope others will see what I see, and use your service.
Great concept and nice looking implementation, Henry! I'd not remembered to check it out since you mentioned it in the pub the other (last?) week, but I'll definitely kick the tyres over the weekend :-)
Ha ha, hello John! I have since left the land of ec2 and this is running happily on a small linode instance, found it much faster for my monry. Yes my db's are in a totally different datacenter to my server but I don' think the site is that slow.
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)
Excellent. Now I no longer have to cart MikeTex Portable on my keychain. Since I work on multiple computers with files from my DB, this will be great. Thanks.
Great idea and I like what I'm seeing so far. I assume it's based on pdflatex, as opposed to latex + dvipdf / (dvips + ps2pdf) ?
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...
LaTeX lab is a direct copy of google documents. I am also incorrect with www.scribtex.com who have another service. Scribex are going strong but latexlab is not being worked on anymore. sharelatex is the only service which offers the ability to work in real time which is the way I see latex collaboration working.
Its not a given but it is doable, the main/basic line of defence is using a chroot jail and having nothing in that root of any interest/value. When I get chance I will do a blog post on it.
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