DownThemAll (2019)
addons.mozilla.org
addons.mozilla.org
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! :)
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.
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.
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).
Oh how low we have gone...
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.
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.
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.
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.
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:
https://github.com/thundernest/addon-developer-support/tree/...
https://github.com/thundernest/addon-developer-support/issue...
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.
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.
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.
No, thank YOU for building and maintaining DTA for all of us, even after the webext framework overhaul! Been a happy user since the old days.
These days, connections have become so fast that I don't really use a download manager anymore. The last place I download large files from through the browser is Mega, and its encryption is inherently incompatible with this addon.
If you need a download manager for MEGA, check into JDownloader2. They are compatible with MEGA en/decryption. And developers is very active.
Perfect example: https://www.ubu.com/sound/antin.html
I already have software which downloads anything I want fast, the issue is, I can't simply connect it to Firefox anymore. Same goes to using external players to view media (I need more nuanced control over rate and pitch of the playback).
I understand it's done in the name of security, but I refuse to accept there's no practical way to allow user to launch software on his own machine from the browser without some auxiliary intermediate program which some older extensions suggested as a way to continue working.
Sorry for the rant.
The second one needs the "native client" which I mentioned above. It uses effing python to pass the link from the browser to the player! It's a workaround and an ugly complication. The more I use technology the more I come to despise those levels of software strata solving the problem the lower layers introduced for disputable reasons.
Yeah, it's unfortunate that it needs the Python (or Ruby) script as a shim to MPV. But it's not an inherent requirement: the extension could execute MPV directly if MPV understood the weird length-prefixed JSON protocol that Firefox and Chrome use.
The aria2 one didn't have an update since 2019 though.
I imagine a browser extensions that adds deep-links for certain media to be opened in external software is possible. Just needs coordination with the app...
But it is possible. I have made my own little addon that calls yt-dlp (previously youtube-dl) with the current URL to save videos from YouTube and other supported places (e.g. Reddit) with a single click. The addon communicates with a Python program to send it the current page's URL which in turn just changes to a predefined directory (where downloaded videos are stored) and calls yt-dlp with that URL.
I was a bit hesitant at first to bother with all that but eventually i decided that it is "my browser" so i should be able to do whatever i want with it and certainly adding a button to call a program with the current URL should be more than possible.
The downside is that Developer Edition updates way more often than regular Firefox which in theory might break stuff but personally i never had an issue with it.
I do not like the whole signing thing - just like i do not need to sign any -say- Emacs scripts i write, i shouldn't need to sign any browser scripts. Also last time i checked i need to register with Mozilla for this to work and i especially do not want to have some 3rd party's permission so that i can install my own scripts on my own browser. I might have misunderstood that last part but i didn't see much of a reason to bother when i could jus ignore the entire thing with the Developer Edition.
Finally this seems to need npm, node.js, etc to work and i do not want to bother with these things. All i did to make my addon was to use a text editor, make 2-3 files and done. Well, and use regedit but whatever...
Should I only use the one provided by my Web browser? Should I not download the content that I want to access locally or share between devices without being obliged to stream/download it again from a server?
Imagine a page with 50 links, that you each have to download by hand? Nope! Just DTA and a filter to choose what you want.
Photo gallery? Same!
Open a bunch of stuff in different tabs, and want to download the same thing (eg. .zip file) from each open tab... DTA all tabs, and *.zip filter.
Regex filter? Sure!
The basic download manager part is just an extra feature, that you usually don't need.
If I find a gallery of images that I like to keep. I can use gallery-dl for that and use gallery-dl "instagram.com/boburnham" in the command line and it will crawl and download the images within the gallery.
Modern browsers still suck at dealing with downloads if you have a flaky connection that gets interrupted, but we mostly don't care because you can slurp gigabytes in seconds on fiber connections, so it takes a really, really jacked up VPN connection or intrusive proxy to make an impact.
The game changer(s) were when browsers implemented resumable downloads, and most giant file distribution moved to torrents.
2 years ago (Nov 26, 2019)"
It's quite useful where you have 50 PDFs on a school page and you'd like to download them all without manually clicking save link as on each one of them. I have fond memories of DTA from my bachelor studies.
> We are therefore limited to the tools the WebExtensions model provides to us, which sadly makes it impossible to provide some of the advanced features of DownThemAll! Version 3.
I didn't even know they attempted a WebExtension rewrite and am not surprised that it wasn't able to do the things that made the old DTA worth using.
Do you see any hope for a fork of modern Firefox that start with just the tiniest stuff, maybe adding back a simple tab strip api to let Tree Style Tabs work properly again, that kind of stuff, then go on to put Mozilla out of business as soon as the economy allows it?
I'm only halfway joking here, and only about putting Mozilla out of business.
Separately, keeping a browser up-to-date with new standards and security fixes is a huge undertaking. You would need a lot of engineers invested in such a project.
By the way, Nils from DownThemAll is a great guy. He wrote a scathing blog post at the time Mozilla announced dropping support for "legacy" extensions. Wish I could find it.
This is exactly the type of attitude which gives software dev such a bad rap.
I personally support every single user of my products and never force a new version on them.
I did not intend that. My intention is this: "the cost of maintaining a browser with up-to-date standards and security is enormous". A few hundred thousand users who are unlikely to pay anything for such a browser is just financially not viable.
- that would go from my tool budget paid by work as soon as it is better since my browser is my second most important tool.
- as mentioned above I propose starting with a soft fork, as set of patches to be applied to the latest Firefox
No, I want the few tens of million ex-Firefox users that have left during the last decade because of being annoyed or because of the pragmatic reason that Firefox doesn't offer any experienced direct advantage anymore while Chrome is pushed heavily and has a experienced direct advantage: that Google web properties are optimized, not sabotaged on it.
> Separately, keeping a browser up-to-date with new standards and security fixes is a huge undertaking. You would need a lot of engineers invested in such a project.
Here I should have been more precise: I mean to start with a soft fork. Start by building from ordinary Firefox with just small patches to fix the worst offenders like the tab strip API and restoring the UI.
Me too.
Leadership at Mozilla is interested more in social justice, diversity, and equity issues than engineering issues. Don't look for this to come from today's Mozilla.
There is lately a push for privacy issues at Mozilla, which is nice to see.
[0]https://www.downthemall.org/the-likely-end-of-downthemall/
[1]https://blog.mozilla.org/addons/2015/08/21/the-future-of-dev...
[2]https://www.zdnet.com/article/mozilla-changes-firefox-apis-d...
PaleMoon
Waterfox Classic
For example, I am quite happy with visiting only sites which do not require JavaScript, do not use cookie banners, paywalls, and registration prompts.
For my purposes of browsing Teddit, HN, and my own websites, there are more than 20 beautiful, usable, friendly browsers I can think of just off the top of my head.
For everything else, I just close the tab and move on. Past experience leads me to believe I'm not missing much, because sites which break these requirements usually have crap content too.
If I really need something, I can open Chromium (with UO and Vimium) for that particular site and then close it afterwards.
Only a couple years ago there was no Teddit or Nitter, and now they are here.
I'm finding more and more usable sites almost every day, and I'm missing anything less and less frequently.
A couple years ago, I was mostly down-voted for pleading for noJS support here on HN, and now it's the opposite.
I'm feeling optimistic. The biggest thorn in my side right now is SSL/HSTS, which is a very fast treadmill. I'm praying for an easy-to-use and transparent SSL-stripping proxy I can use in the near future, which will make things even better on machines I control.
Why bother with the overhead of a fork? Perhaps a team of volunteers could put together a good enough proposal to be accepted by the WebExtensions team.
My feeling as someone who has tried to look into it is that certain people are not only reluctant to doing it but also directly opposed.
I might be wrong though and it would be fantastic of someone else could fix it and persuade them to accept it.
I don't think anybody was directly opposed, but there were a lot of hidden edge cases that needed to be dealt with.
Even though full-time devs might not have time allocated to doing this themselves, they are open to accepting solutions as long as the contributions are thorough and follow up on their concerns.
Unfortunately IMHO most submissions these days are more like "this looks simple to me, just do it!" instead of a genuine engagement. To some people, that looks like opposition.
To prevent all downloading, not just automatic. When they remove a video, they don't want you to have an archived copy to prove the content ever existed, or to watch it without their permission.