> The entire codebase has been migrated from C to C++. In the process, we've removed thousands of lines of custom code and used standard C++ tools instead. The core's code has shrunk by 18%. The core codebase has been extensively refactored to be more testable and maintainable.
I love negative-LOC commits! They warm my heart. As do the people who take the time to make them.
At my previous job, we re-did some Java stream processing stuff in Clojure. We added functionality, made it more stable and dropped 6K lines of code (out of 18K for that particular component) in the process. It felt like magic...
It is still a LOC reduction produced via rewrite. I don't think we should hold it against them that they choose a great target language for the rewrite...
Essential complexity I agree, you cannot get rid of (hence the whole "essential" part). However, when you program, lots of non-essential complexity sneaks in. If you've only ever written code in one language, I bet you wouldn't even be able to notice what is essential vs non-essential.
One funny consequence is: refactor code only well covered by tests, decrease nb of lines of code => test coverage decreases. This is normal and test coverage is not itself a target, but that's funny.
Brittleness isn't really a property of having tests IMO, more about designing it to reduce unexpected dependencies and interaction-at-a-distance between components. (Part of it is also understanding how the system works. If you are new to a code base, virtually all dependencies are unexpected)
Tests can help reveal when those types of dependencies break, but even so, I would argue that is brittle code held together with cling wrap. The fundamental problem is still there.
> Tests can help reveal when those types of dependencies break, but even so, I would argue that is brittle code held together with cling wrap. The fundamental problem is still there.
Sure, however tests failing after refactoring or removing seemingly unused bits of code will be a great way to figure out when one's assumptions about how everything works are mistaken, or to discover bits of code that one wasn't even aware of.
Along the lines of: "Oh hey, our tests caught that removing this seemingly unused dependency from pom.xml will break PDF export logic, because for some reason it loads classes dynamically and needs that package" or maybe "The tests revealed that our latest refactoring breaks JSON serialization of dates, because while we should be able to use these annotations for our Dtos properly, the underlying framework gets confused because of our serialization library."
The worst cases are where you don't have the tests and things break in ways that might not be immediately obvious. Such codebases will make any attempts at refactoring unsafe and inherently stressful, that's what I meant with brittle - you'll never be able to change anything whilst having confidence that things won't break all over the place.
To be clear, I'm not saying you shouldn't have tests, but if you change your pom.xml and the code starts blowing up at runtime, your code is still brittle.
Code that isn't brittle wouldn't behave like that.
Tests allows you to catch it early, but with the platonic form of non-brittle code, you wouldn't need to run any other tests than the test that tests the module you just changed.
That's a fair point! I guess it's a matter of what's under the hood vs how it appears on the outside. Code that is brittle in obvious ways is still better than code that is brittle in subtle ways and will break later. Code that doesn't have those issues in the first place is the best, of course.
Based on LibTorrent, Lots of features, easy customization, web UI is consistent and stable, API is easy enough to work with.
Plus it generally works everywhere I need it to - as a GUI app (across all major OSes), a web app, or a terminal app. So I can just dump it on whatever machine I'm using without having to think very hard.
Transmission is also fine, but it kinda felt like it was stalled out for a bit - missing features, some ui bugs, not much movement around it. So I switched to Deluge and haven't really had a reason to move anywhere else.
I disagree. I was using that because it had RSS integration. Since then - RSS integration got broken for me.
Also there is something wrong with their scheduler/thread performance. Any time I add any torrents to the downloads, GUI starts to pause for multiple seconds at a time. At this point it's unusable unless you are willing to wait multiple seconds for any action that you want to do. I don't know whats wrong, but it shouldn't happen on Mac
only worked a few times for me. tried a lot of different configs... was just always stuck retrieving the metatdata.
Transmission worked straight away and has continued to behave just the same since. very happy with it!
I did use Transmission up until a few years ago. Forget exactly why I switched, but there was some issue with it at the time. qBittorrent has worked great ever since, and I certainly never configured anything more complicated than speed limits.
I kind of thought the project was dead with how long it went without a release. I ended up switching to qBittorrent about 8 months ago as I needed v2 torrent support. So far I have been very satisfied with the switch.
I was a long time user of transmission, but when I redid my *arr setup I devided to go to qbittorrent.
qBittorrent can handle way more simultaneous connections and torrents than transmission. It doesn't slow down, it supports tags, categories and even custom UI (vue-qbittorrent is awesome).
I'm not going back, especially when you have great docker images with WireGuard integrated in them.
so you say there is no benefit for me to switch from qbit to transmission for ocassional torrent download? I seed only during download or very shortly after and at max I download 10-15 torrents
> Newly-added seeds can start immediately and verify pieces on demand, instead of needing a full verify before seeding can begin.
This is a huge annoyance for me with torrent clients. Files that are 80GB or larger take days to verify before they can seed. Having this feature (which makes sense to do) is a more sane way to do it.
I don't remember why or how I ever picked up uTorrent, but that's the client I've always used. Thinking about torrenting just now, I realize I used to download torrents much more often than I do these days. I guess that's due to greater availability of video content on the streaming platforms and music on Spotify, etc.? What else do people use torrents for from a consumer perspective? Is there a wider everyday use case that I'm unaware of? Genuinely curious.
I use torrents heavily despite subscribing to 4 different streaming services because I live in Canada and we don't yet have Hulu or HBO Max. Plus I also like watching some older movies via 2160p bluray rips and torrents are just the easiest option to do so. That plus it has everything.
I use Transmission for torrents and then https://airflow.app/ to cast movies from my Macbook to my Firestick/Chromecast, which I find just as easy as using a streaming service.
When I a) can't find it on streaming and b) don't feel like waiting for torrent d/ls (even on fiber connection) I just use https://soap2day.id/ and mirror via Chromecast casting, which seems to have every movie/TV show ever. Quality is pretty good, usually 1080p or 720p.
Yeah, streaming has become such a mess. In the beginning, it felt liberating to cut the cord and the promise was, at least in theory, that you could get just what you wanted with a couple streaming services. But now you have to have 5 or 6 and when combined they are more than cable used to be! Even if those services are available where you live, you might not want to subscribe to yet another streaming service just to catch one episode or one show, especially since a many of the streaming services aren't exactly filled with tons of great content that justifies the permanent subscription.
I hadn't heard of Airflow, thanks for the link. Out of curiosity, if my TV is already AirPlay-enabled, what does Airflow do for me that I can't get by just clicking on my Mac to watch on that screen (although I often just end up connecting my Mac via HDMI because that seems more reliable, at least on my TV)?
I'm not sure re: airplay. I personally use a Firestick 4k Max, which I replaced my more custom Android TV box (w/ Plex) because it has a fast CPU and Wifi 6 and was <$50 (vs $75+ for a decent custom android box and >$100 for Apple TV).
Honestly I'm not even sure which protocol Airflow uses to connect with my Firestick + TV, I use an app (AirReceiver) which says "AirPlay, Chromecast, and DLNA" and it works every time so I don't really care :)
If you want quicker speeds, look into usenet. Have to pay for a decent news hosting and indexer, but after some tweaking you can download new releases so much quicker without worrying about vpns and ratios.
At this point I have Plex and Overseer hooked up to Prowlarr, Sonarr, Lidarr and Radarr, with Prowlarr connected to my nzb client and server (it was easy to cut over from transmission, using the secure ports to talk the news hosting and client accounts). Everything is spun up in docker using the linuxserverio images.
I might be mixing up some terms there, but that setup has made downloading content so much easier and quicker.
My current setup:
Plex (Media Content Manager, desktop, mobile, tv apps. Local and external) - https://www.plex.tv/
NZBGet (nzb download client, configure nzb newhosting site, Radarr, Sonarr, Lidarr point NZBGet to download content. I pay for one newshosting site and two separate indexers) - https://nzbget.net/
I don't think I've ever found torrent download speed a limiting problem. I've much more often had problems finding peers to enable downloading 100% of the file at all, because most of what I download is stuff that's old enough (in time since the torrent was created) that mostly the torrent isn't being actively seeded any more. How long do files generally "stick around" on Usenet?
In practice most servers offer over 2000 or 3000 days of retention (and growing). It used to be a problem many years ago because shortage wasn’t as cheap as now, but it feels like Usenet will also keep things forever now.
What's good these days? I used GigaNews back in the day. From memory, there was a content decrease as newsgroups were getting hit hard for take downs. I think I'm remembering this correctly.
is there something for books and audiobooks in particular?
i am hoping for a audible-like experience which can easily be created using booksonic and other servers but the retrieval part is the most troublesome imo.
Libgen has almost everything I need and when it doesn’t I can usually find it in #bookz on undernet. If all else fails, bookfinder.com usually knows about used copies. I don’t have the luxury of an English speaking public library where I live.
If you want audiobooks, nothing beats myanonamouse.net.
They're a semi-private tracker, registration is open, but you have to actually read the rules, go on IRC and answer a few rules-related questions. It takes a few hours, but it's definitely worth the effort IMO. The amount of content they have is pretty staggering, and I don't think I found a single unseeded torrent so far.
They also offer ebooks, but Anna's Archive and Libgen have a bigger selection of those.
Quite a few people I know use https://nzbs.in/login/ and swear by it. The admins of that site try to masquerade it as another WordPress site. Ingenious. But it is by far the biggest, and the best I am told.
I never torrent for ethical reasons, but I just jumped onto soap2day to check if they had something that I've been on the lookout for (Abacus: Small Enough to Jail) and they don't have it.
context for unaware: torrents are more general. for example, official releases of open source operating systems, such as debian [1], are available via torrents.
I simply prefer watching stuff via a video player of my choice (mpv). That way I can do stuff like frame-by-frame playback, and take screenshots / video clips with conveniently named files. Niche, I know, but I watch a lot of animation, and like to study and discuss how different artists approach and implement their scenes. So these are all essential features for me.
Also, some stuff I want to watch is not available legally anywhere in my territory.
Well, it can be used to transfer any large files amongst a bunch of people.
I like the protocol in theory. If n people want the same resource, it seems better if they get that in a sort of distributed way rather than all of them connecting to a central server to get that resource. Can be useful if you're on a slow network. I wonder if existing routers along the way make this efficient regardless.
Some Linux distros nudge you towards torrents to download its .iso file even if direct download methods are available. Xubuntu is one such distro [1].
Also, can anybody from Germany confirm if there's a ban on torrenting over there? I hear some governments/ISPs etc are starting to blanket-ban the entire protocol to prevent proliferation of pirated movies, which seems to be what the protocol is used for in practice.
Oh for sure. I wasn't suggesting there's no need for torrents anymore. Like I said, I still torrent, just a lot less than I used to. And I was speculating that this is due, at least in part, to the increased availability of video content on streaming platforms. It used to be that the only way I could see a certain show or movie was by torrenting it.
Same situation as you. Used to be involved in the whole private tracker thing too. Was a mix of online services getting better, and me having more money.
I use torrents for full videos of porn, UFC, ebooks, professional tutorials, expensive software and for anything that isn’t available on Netflix since that’s the only subscription service I have.
Also subscription services don’t let you select the bitrate for streaming- this way I can make sure I watch the entire program in 4K.
It's not Apple's issue to fix, I don't know what that person is talking about. On macOS the scroll bar is hidden and only shown when you scroll, over the window's content and gets wider if you mouse over it. It has worked this way since 2011 and it's not going to change. There's a setting to disable it system-wide but 1) I'm not going to enable something that permanently takes away 1% of my screen space systemwide just for this 2) this is the default scroll bar behavior, so most macOS users have this issue where clicking the most important "open torrent" button requires waiting a few seconds for the scroll bar to go away.
Transmission needs to add like 20 pixels of padding after the magnifying glass for the scroll bar if the user is on macOS and has this setting enabled.
If you think you have a solution ("move the buttons anyways"), maybe reply in the issue and help solve a problem for FOSS that seems to annoy some of you.
Put some padding on the UI. I had a quick look and I couldn’t find any app that had UI in the space the scroll bar shows in.
Apple is clearly never changing this as they and every other app developer puts a 10px padding in and it looks better while not having a scroll bar obscure anything.
That comment is 7 years old. I clicked around in Xcode for a bit and it doesn’t anymore.
I didn’t expect “I can’t click “Open Downloaded File” on a file downloading application because the scroll bar is in the way” would generate any discussion. It should be obvious to everyone that it’s an issue and should be fixed.
If you know how to fix it (even if just by written word), please do help them to fix it by sharing the solution, as you don't seem to be the only one who is disturbed by the issue.
For whatever reason the ARM version of Transmission does not work well on my M2 laptop - it downloads quickly at first and then drops off to zero, and had some other bugs (the x86 version always worked flawlessly). I tried playing around with different settings, running their nightly builds, etc, and nothing fixed it for me. In the end I searched for other clients and found them all filled with ads and bloatware, and decided to use this excellent open source command line client instead:
It has a few frontends built on top of it (linked in the project readme), but I just run `torrent download <magnet link>` and it downloads at full speed / with no issues.
After uTorrent went south, I started using qBittorent on all platforms and haven't looked back since. Found it better than any alternative, might want to give it a try if you want client+ui in one package: https://www.qbittorrent.org/
I wanted to evaluate it in the past but their downloads page has a giant warning, "The macOS version is not well supported", so I didn't bother downloading it.
I am actively trying to use it on macOS/M1 and it does have bugs. Random crashes every few days, UI crawling (doing anything, right click, whatever) with more than 20 torrents, etc.
I just downloaded Transmission 4 via Github and it works on my M1 Macbook. I previously had problems with beta versions as well, so I guess they addressed that.
Related: the Transmission Remote GUI that allows to control the client from elsewhere. I use it with the Transmission client contained in the XigmaNAS NAS software which I run headless.
The release notes say, "The remote control GUIs (transmission-qt and transmission-web) now use the RPC API "table" mode, resulting in smaller payloads / less bandwidth use.", but the GUI hasn't been updated in 3+ years, so what is this referring to?
It probably refers to the official remote gui which is not the one I linked. Mine works because I'm connecting to the transmission daemon shipped with XigmaNAS, an older version since it updates with the NAS firmware, which currently is the latest stable one, yet over 1 year old.
> Support for using BitTorrent v2 torrents and hybrid torrents
This is a big deal. The FOSS world has been unable to switch to hybrid or v2 torrents for years, entirely because Transmission would completely break if handed an v2 or hybrid file and the developers declined to address it.
Actually, not such a bad question, if worded poorly. There's at least Synapse[1]. It even has a third-part broker to accept transmission GUIs by Drew DeVault[2]. Why didn't they just reuse Transmission protocol from the get-go, to leverage the great Transmission-Remote-GUI[3] for example, is beyond me.
Unfortunately, there's just not enough interest in the project and no adoption.
Transmission, at least previously, never have been too resource-friendly, so a lean and mean Rust alternative would be great.
No seriously, I am a rustacean too, but please stop telling everyone to Rewrite everything in Rust (even if its only a joke), its becoming slightly annoying
On Windows I've used Tixati previously, because it doesn't do ads and has a rather pleasant UI: https://tixati.com/
On Linux, however, Transmission is great! Actually, Transmission also runs on Windows, so if the simpler UI is enough for you, then it's also a great choice across multiple platforms.
I have it setup in on a vps in foreign lands and ssh forward the web control port to use it without having to worry about opening up ports on the server to get the script kiddies interested.
On an Intel Mac Mini I've got 4.0 Beta 2 installed the Check Updates doesn't detect anything and on the website there is only an Apple-based Mac option listed. Did they drop Intel support or is that coming later? Or does it matter and it is really a universal package with a poor name choice (and failed update check)?
It looks like a Mac app on macOS instead of a relic of Windows XP.
(I use qbittorrent as well, it performs well and would work with some trackers that didn't play nice with Transmission 3).
I use it but I don't like how the app language = system language, you can't change it
>It's not technically challenging to add a drop-down list of languages to the UI, as least for the Qt client, but I'm still not convinced it'll be used by a lot of people.
Almost all Mac apps work this way. All apps use the global language and region settings. It would be against platform conventions to override the system settings, and in my opinion it's a waste of developer time to add such a setting in the app (especially because that popup needs to be tested, maintained, localized....).
If you really want the app to use a different language than the system, you can just override the user default per app:
It's possible to select a preferred language for each app in System Preferences / System Settings since macOS 10.15 (or 10.14? anyway since some years ago).
Oof yeah that's a faux pas. Apps also frequently use the wrong setting and try to set their language using location rather than the user's selected language. So on Windows VLC for me is in Czech since that's where I chose my location (for the correct time), even though my UI language + kb layout is US English. Quite a few apps make this mistake :-/
> The entire codebase has been migrated from C to C++. In the process, we've removed thousands of lines of custom code and used standard C++ tools instead. The core's code has shrunk by 18%. The core codebase has been extensively refactored to be more testable and maintainable.
From the user perspective I don't particularly care (although I've been using it for more than a decade) but it excites the inner developer in me.
Nice! "Transmission now uses Sonarcloud, Coverity, LGTM, and clang-tidy static analysis on new code. Several hundred code warnings have been fixed compared to Transmission 3.00."
GPL licensed so it seems relevant. For closed-source apps I wouldn't think these need to be in the release notes but for FLOSS apps, many "users" are developers.
The app told me that there was an update available. I clicked on install, it downloaded an 8MB binary, installed and restarted it within a few seconds. After years of apps which update twice a week by downloading half a GB and then waste my time by grabbing focus multiple times in a row while restarting (hello Signal), this was the best update experience I can remember in a long time.
> Transmission is a great bittorrent client, but last time I checked they purposely didn't want to support sequential downloads, which is useful for media streaming, so I'll stick with qBittorrent.
There's a long history of antisocial-behavior-prevention stuff in peer to peer sharing applications. Overall they're usually a good thing.
I'm with them on this. Sequential downloading leads to a bias in what pieces are available.
If you're not sequentially downloading, you're contributing evenly back to the swarm. If you sequential-download, you're not...and you're potentially leaving the stream much sooner (if you don't finish watching etc.)
I love negative-LOC commits! They warm my heart. As do the people who take the time to make them.