One of the developers here. We worked three years to make Uppy the best open source file uploader the world has seen. Looking forward to your brutally honest feedback! Happy to answer questions too.
Well done. I remember looking at this project more than 2 years ago and thinking Wow, this sounds great for my SaaS. Because you were still essentially in Beta and there was missing functionality at the time, I went ahead with another solution and meant to keep in touch with your progress, but, as it tends to happen, I got distracted.
This post is a timely reminder for me, and I will be taking another look at Uppy with keen interest. Thanks for carrying on the good work and getting to 1.0!
The company behind this is Transloadit. We provide tus & uppy for free, hoping that a fraction of our open source communities will use our hosted versions (of companion and tus) and optionally our commercial encoding service because they work well together.
That could make our public coding efforts worthwhile financially. It’s a bit of a gamble. We’re believers/biased in part because we just enjoy working on oss, and in part because we’re quite a lean company and don’t need to make boatloads of money to make investors happy or anything (we’re bootstrapped since 2009, so no investors, and ramen profitable since 2012. Me and my cofounder are both devs and not in it to get yachts, but rather to have nice and rewarding work, basically)
Whether it really also becomes a financial success remains to be seen. 3y of devtime isn’t cheap so it'll be a bit sad if there is no ROI at all, but we'll comfort ourselves with the thought that we'll be able to provide a better and more reliable uploader to Transloadit's existing encoding customers (because going open has made these projects better thanks to exposure to more minds and environments), and making them very happy, even if there’s 100x more people that don’t make us money.
I am not OP, but in the blog post the author mentions he works for Transloadit, which (after googling it as I wasn't previously familiar with it) is a service which handles lots of different file processing tasks for developers (e.g. image manipulation, audio/video encoding, virus scanning, etc.)
If you are a service selling a product targeted towards developers, I can't think of better marketing than something like this, where tons of users will use it for free, but many users (like me) who hadn't previously heard about your core product will find out about it through this.
EDIT: One thing to add about the marketing angle, another commenter mentioned that this was posted multiple times before reaching the front page, and some of the generic "Awesome! Will definitely try this!" comments here by low-karma users makes me think there is some astro-turfing going on. That said, I don't really mind it. Author created a useful tool, open sourced it, and I'm now glad I know about it. Kudos to him and if it helps more people become aware of his business (which obviously funded his creation of this open source tool) more power to him.
Replied to the GP directly about how we find this, you pretty much nailed it!
As for astroturfing: I am certainly guilty of self-promotion. When this post didn’t get traction, after a few days I thought maybe Show HN finds this interesting. In addition, my team of ~5 will have upvoted this post (although that probably works counter productive with HN's algorithms, I couldn’t/wouldn't stop them). Other than that we don’t deploy any schemes here, what you likely see is that, because we exploded on Reddit over the weekend, its users are posting it to HN too.
Back end dev here, and long-time HN lurker. I've never heard of Uppy but I've just bookmarked it and I've very glad to now know of it.
For the few times that I need to build some frontend, usually in HTML and Javascript, I need tools that do one thing well. Uppy looks like that type of tool. It is not some huge library like jQuery that I need to study for a week to use properly.
It is for finding _actionable_ content like this that I come to HN. Thank you OP for posting.
I know it's not your responsibility at all but the only thing that stopped me from using it was the pain in the ass that is configuring s3 itself. I will get to it eventually cause I'm not very happy with filestack's UI but it was so quick to get it working and I was in a hurry.
If you value time over money, you could also use Uppy in conjunction with Transloadit, our company can handle uploading, encoding, and exporting to S3 for you, too.
If you want to save money then yes, you could configure direct S3 uploading with Uppy, we do have better examples fot that these days (e.g. we now also show back-end code for signing the requests)
However it seems you got it working now so maybe no reason to change?
I just tried integrating this into a hobby project of mine. I like the looks of the dashboard, and direct uploads from device work fine, but I don't understand yet how to get other uploads to work.
Am I supposed to be running my own companion server, or is the server shown in the examples supposed to work for my project (I'm seeing CORS errors)?
The Companion server used in the examples (companion.uppy.io) is really only meant for demo purposes and hence throws CORS errors if you'd try to use it for your own website.
You have three options:
1. Disable Instagram/Dropbox/Google Drive. Then you can use Uppy without any special server components (it'll just upload to your Apache server or S3 bucket)
2. Enable Instagram and friends but run Companion on your own server. It can be installed as middleware into an existing Express server, or run as a Standalone server on a different port than your webserver.
3. Use Transloadit's hosted Companion server. Requires a paid subscription (but also gets you hosted tus servers for upload handling, and our encoding platform, all of which are globally distributed)
Thanks for confirming this! This all makes a lot of sense, but might merit clarifying in your documentation.
When I see sample code, I generally assume that I can copy and paste it onto my own site. So a comment "You can try this code on OUR site, but if you want to use it on YOURS, you need to take care of your own companion hosting" in your sample code would be helpful.
Having read your site, I was certainly aware of all the companion options you enumerated above. However, I did not see your above sentence "companion.uppy.io is really only meant for demo purposes and hence throws CORS errors if you'd try to use it for your own website" (or anything equivalent) anywhere on the site.
I realize that this sentence (while clear, accurate, and quite reasonable) takes a bit of polish to turn into a positive message which won't scare away potential users ;-)
Alternatively, maybe you could set up your demo server to accept requests from randos for exploratory purposes, but with a quota set low enough that it won't be abused for production?