Wow. Didn't expect this :) I was the author of this tiny extension back in the days (extension #201, I still remember it) together with a friend who recently passed away, Federico Parodi.
We hacked the first version when we still didn't know much about JS, but it immediately exploded (500k daily users). Donations were super helpful at that time, being 22 years old with a newborn.
After a couple of years (iirc) Nils Maier joined the team and helped us a lot. Years later he managed to transition the codebase to the new web extension tooling that was introduced by Firefox a few years ago.
This little extension really shaped my professional career. The realization that something I made could have such an impact is what gave me the drive to keep creating small indie products, which I'm still doing nowadays with http://www.datocms.com
Yeah, it was 2006 when I joined you and Federico, if I remember correctly, while you and Federico started DownThemAll! in 2004. #201 is correct :D
2006 was really a long time ago...
DownThemAll! went through a lot of revisions since that time, including the work it took to make it restartless, then make it compatible with "electrolysis" and so on. And in the meantime ensure it didn't break with every Firefox release. But at the core the functionality kept the same. People contacting me with questions could be quite overwhelming - and I am sorry if some of you HN'ers mailed me and I didn't answer - but it was very enjoyable to see what different kinds of people were using our creation and get in touch with all kinds of folks that way, from students downloading lecture videos to movie editors downloading the "dailies", and everything in between.
I am still not happy mozilla decided they had to break all extensions, and I had to do a full rewrite as a WebExtension, and thus abandon a lot of features that simply are not possible anymore with that new API, while at the same time reinvent the wheel for the UI (now being forced to use vanilla HTML, which can be quite hard to get performant enough when people queue a couple of tens of thousands downloads at once). But the very core of functionality, namely selecting and queuing up a lot of links quickly, is still there, so I hope some people still find this new DownThemAll! WebExtension useful.
Lastly, while the last release was indeed 2 years ago, I keep meaning to fix some bugs and make a new release. I was already planning to set aside a lot of time this month for that, even before seeing DTA pop up on HN again. I guess this HN post can only motivate me more :D
Federico's death was incredibly sad. We only met once in person, but he was such a nice and humble guy, not just in real life but online too. I miss him too, may he rest in peace.
As a life-long Firefox user who has been increasingly angry with Mozilla's direction for the browser for the past ten years, I honestly don't know how developers like you could put up with it.
Trashing an entire swathe of extensions - hundreds of thousands of man-hours of work - and then making breaking changes in nearly every subsequent version after that... it's precisely why I've never even considered making a browser extension. It would be pure hell.
It's not exactly that they put up with it, but rather that projects under Mozilla - speaking from my TB experience - are ruled with an iron fist: Censorship, internal secret trials for supposed misconduct, summary expulsions etc. I don't know what it's like for core developers, but I suspect they either keep their head down or it gets chopped off (and thus, the developers who didn't put up with it are probably gone).
> I am still not happy mozilla decided they had to break all extensions
Actually, the weird thing - for those who see FF or TB from the inside - is that the same kind of code we have in regular extensions is still what's used in FF and TB's own chrome (which is in many ways like a bunch of "core extension"). They haven't changed things in a way which makes using extensions impossible, they simply removed the loading mechanisms for them.
Interestingly, for Thunderbird, there's a loophole which most popular extensions use, that allows them to keep loading and running the same kind of extension code they always have:
One of the core technologies of the old extension model, XBL, has been completely ripped out. XBL-defined elements and XBL overlays were how a lot of the old UI customisations functioned, so even if you enable loading the older code it just flat won't work. Obviously custom JavaScript, as in the example you linked, can still do whatever when loaded without restrictions, but then you're at the mercy of changing internals, instead of the supported stable WebExtensions API.
Additionally a lot of XUL in the chrome UI has been removed, replaced with HTML equivalents or custom elements (a descendant of XBL), and the root documents that make up the browser chrome have transitioned from being .xul XUL documents with some HTML elements in to .xhtml HTML documents with some XUL elements in.
As I said elsewhere, I reviewed thousands of addons for addons.mozilla.org back in the day. The number of extensions which used XBL directly were just a handful, and usually by the most capable developers. I have no doubt these developers would have adopted to XBL going away, especially as WebComponents is basically a replacement for most of it.
That some of XUL has gone or was moved to HTML doesn't really matter much either. People could have adopted to this as well. Adopting to ongoing changes in Firefox was the bread-and-butter of extension development before WebExtensions (or the add-on SDK/jetpack), a necessary cost of doing business with the reward of very powerful things you could then do in and to the browser. With JetPack and the Addon SDK mozilla tried to provide stable APIs with some success. Adding WebExtensions to the mix would have helped, just to make it easier for Chrome extensions devs to port their stuff. People not in need of anything besides these stable APIs could use these and be done. People who needed more powerful capabilities would have went the other route and tracked Firefox changes, just like they used to for over a decade already anyway.
There were tons of major breaking changes over the years (Firefox 3.5 to 4 was particularly "bad" IIRC), and while those caused some causalities over the years with abandoned extensions not getting updated (tho most popular add-ons affected got new maintainers or were forked), most extensions kept going, adapting as needed.
I am pretty sure that I could pick up my "legacy" DownThemAll! code now and today, spend a month adopting it, and have a working version for Firefox 94+. A month may sound like a lot for some hobby project, but in an alternate reality where "legacy" add-ons still would be supported, I would have spent that month over a duration of the last 5 years.
But in this reality, I have no supported way to actually load such a "legacy" extension. I could add such a capability back to a Firefox fork, but then only I would be able to use it, but nobody else would... Unless I released the fork, and really, I don't have the resources to maintain an entire Firefox public fork.
Old extentions had way more access to the internals of the browser. When they disabled that access, they also meant they could change internal interfaces faster without breaking so many extensions. So I think it would be possible to make a small source-level tweak and compile a browser that loads old extentions, the individual extensions might not work anymore.
Thanks! This extension was great for archiving materials from MOOCs (Coursera and such) for future reference. Also finding it useful for retrieving a bunch of things from some collections on Internet Archive, where their previews don't work or are broken, etc.
Thank you so much for this! It was truly a lifesaver for a young pirate. My dad blocked torrents on our home network and I hadn't yet learned enough linux to crack our neighbors WEP DownThemAll was key to pirating games and movies off 20+ part rapidshares. <3
That's funny, my internet provider (funky little wireless provider for people who live on mountains) was blocking torrents which made me gravitate towards rapidshare et similia as well.
Incidentally, I wrote several premium link makers back in the day (including one particular implementation which I tried to sell and pirates leaked - oh well, that's what you get when trying to sell to pirates) and I don't remember rapidshare allowing you to download things directly, unless you were premium.
Whoa, never thought I can put in a word of thanks directly to the creator of DownThemAll. Thank you for your contribution - this made my teenager days much more fulfilling. =)
Thank you for authoring DTA! I was a student with no personal computer, and our 3rd world computer labs' download speeds maxed out at about 3kbps and would drop all the time. I had Portable Firefox on a USB disk(thanks John T. Haller) with DTA, which meant I could dare to download live Linux ISOs over some days, which would have been otherwise impossible; live Linux was the hot new thing then. My heartfelt thanks to you, Federico and Nils.
I (Nils) was the maintainer of it for many years at the point already, and I was genuinely considering to let it die for quite a while. I was furious at what mozilla did to the loyal and active extension community and especially on how they did it - essentially by decree without community interaction at all. I was part of the mozilla volunteer army, not just with DownThemAll! and a few other more minor extensions, but I also had been on the team reviewing add-on submissions - I think I reviewed something like 2000-2500 individual submissions including updates in the end - and contributed a few minor bits to Firefox itself. The carelessness of how mozilla approached this large chunk of their community, after declaring their "1 million mozillians" goal not too long before, was mindblowing to me.
I eventually decided not to let it die... DownThemAll! had been a big part of my life, and while I recognized that I had to dumb down the feature set, I saw a way to at least make the core stuff work, maybe. I am glad I tried it even though it required a considerable amount of time to fully rewrite this thing.
The net result of mozilla's move was that they killed a large number of useful extensions entirely, while the survivors then usually became available for Chrome as well thanks to the mostly shared API - DownThemAll! is available for Chrome as well right now - giving users even less incentive to stay with Firefox. Oh well.
Mozilla’s self-sabotaging actions made it seem to me that it was Google’s money talking. That it was a Google funded plan to kill everything that made Firefox great. Really enjoyed Firefox’s heydays and DTA. You guys were a part of saving the internet from IE.
I don't know where this conspiracy theory keeps coming from, but as someone who was there it's definitely untrue. Apply Hanlon's razor.
If Googlers could mind-control Mozilla employees, they wouldn't be sabotaging the browser. They'd be getting Mozilla developers to rubber-stamp their W3C proposals so they could look good on performance reviews.
I agree, it's untrue. In my opinion, most of the problems Firefox has stem from mismanagement and utter lack of vision.
This has a lot to do with mozilla losing their leaders and rock star devs at a rapid pace in the last 10 years. Some golden-parachuted out to the FAANGs, others just shrugged seeing the Mitchell Baker Club got more and more influential in a bad way and looked for less toxic places to work, and of course Eich prominently got cancelled for being against gay marriage and his departure rippled through the entire community. I was subscribed to planet.mozilla and there was a constant stream of "it's been fun, I am moving on" blog posts by names I immediately recognized.
The Code of Conduct situation caused a minor exodus especially in the volunteer community, especially outside of the US. A lot of rather important people, who were the ones building the local communities, just had enough with mozilla corp leadership unilaterally pushing stuff on them without soliciting any feedback first. mozilla was supposed to be this community of equals and Corp dictating more and more things really did not sit well with a lot of folks. Some outright (and sometimes rather publicly) left, others just dialed back their volunteer time a lot. This left especially the Western European communities in shambles.
The WebExtensions switch caused a lot of extension developers (who often were also volunteering in different areas of mozilla) to move on.
The loss of extensions, themes and customization options made a lot of the power users very unhappy. And those power users were exactly the kind of people who kept telling friends and family to use Firefox, driving Firefox adoption. While they often kept using Firefox themselves, they also quite often stopped advocating for Firefox in their circles.
All of this put together, mozilla losing leadership, volunteer, power user and dev mindshare at such a rapid pace then translated directly into a loss of market share.
Major failures such as FirefoxOS and BrowserID furthermore have been very demoralizing, making mozilla leaders very cautious, to the point where you had very little innovation going on from the top down. These failed projects - especially FirefoxOS - furthermore took away a lot of developers from the core product, leaving Firefox in a place where for years they had to play catch up with Chrome.
Things like Rust and servo where went more of a bottom-up direction, with bright engineers pushing it, not so much the leadership. And then these things were the first ones on the cutting block last year.
Google only "helped" in so far that they kept mozilla busy playing catch up, making the situation worse by a ton of (experimental) features and new specs that Firefox then had to implement, thus taking developers from other areas that needed improvement. I think most of the time it wasn't Google's intention to fuck with mozilla tho, it just happened to be the outcome.
I felt the same way about how they killed off the old extensions. It took a lot of work to rewrite my (much smaller) Image Search Options extension, and lots of once key features had to be removed... I tried to work with Mozilla to get a couple minor changes made to enable some of the missing features, but that went nowhere fast. The new extension works, but it's a shadow of its former self. Although I did also port it to chrome (why not, right?) I wound up not publishing the full version. For better or worse, I still feel Firefox is the best browser. Its a small measure, but if my extension has helped keep even a few users, I count that as a win.
The mobile Firefox situation is even bigger mess - there used to be a mozikka maintained Firefox build based on older Firefox cidebase that supported quite many Firefox extensions. Then last summer Mozilla decided to update the codebase and rewrite the GUI on Android. End result ? A hand picked list of essential extensions (Ublock Origin basically and little else) that are available that hardly gets ever extended.
You can add arbitrary exebsions to the android Firefix nightly build, but it involves a lot of unnecessary steps, such as custom extension list creation, id passing and other bullshit.
End result is that the best bet for using extensions on Android is actually Chrome extensions & the Yandex browser of all things, which will just install anything from the Chrome web store (and it often will even work).
>I tried to work with Mozilla to get a couple minor changes made to enable some of the missing features, but that went nowhere fast.
Yeah, unless you actually write the code, there is no way. And writing code for the mozilla code base can be quite intimidating with their mix of C++ and js and XPCOM and not-XPCOM and webidl, etc. I once submitted a patch (unrelated to my extensions) that bounced from the who-is-who of mozilla rockstar devs at the time, and nobody wanted to really even look it because it was changing something so deep within the XPCOM-Javascript bridge and nobody really remembered how it even worked. I finally got my r+ from some brave soul who just said "I don't really know the code it touches either, but somebody has to do the review".
Even if you do the work, it can be an uphill battle to get code in, especially if you're trying to add new features and not just fix existing bugs.
I spoke to people within mozilla back in the day - I was part of the community after all and knew a lot of folks - and they weren't exactly happy, but weren't in a position to make things better, either.
DownThemAll! was big enough that they eventually "officially" reached out and ask me what I need, and then essentially said they couldn't really do any of it, "sorry" and they know "that sucks" (refreshingly honest, at least, but I wasn't talking to upper management but a developer-turned-developer-relations). The person who contacted me, one could tell, was given a mission to appease developers by showing mozilla cared, but wasn't actually provided any resources to really help or support people. All that person could do was to apologize and suggest to read the docs and read the docs on how to propose and implement new APIs - but at the time I had already proposed some new APIs that in my opinion would not just have benefited DownThemAll! but all kinds of add-ons dealing with downloads, and was struck down as "not generally useful to a lot of add-ons, sorry, we do not want to maintain such an API" already.
What I said almost 5 years ago still is true in that regard: they tried to a certain degree to accommodate some of the really popular add-ons, and with some success too, and the smaller add-ons were left in the dust. Not because of ill-will of mozilla, but simply because they lacked the resources to do anything more.
Thank you for such a time-saving extension! I got much more time to read while it was doing what it was doing, instead of endless "right-click, save as" sequences.
We hacked the first version when we still didn't know much about JS, but it immediately exploded (500k daily users). Donations were super helpful at that time, being 22 years old with a newborn.
After a couple of years (iirc) Nils Maier joined the team and helped us a lot. Years later he managed to transition the codebase to the new web extension tooling that was introduced by Firefox a few years ago.
This little extension really shaped my professional career. The realization that something I made could have such an impact is what gave me the drive to keep creating small indie products, which I'm still doing nowadays with http://www.datocms.com
Thanks for making my day! :)