Nowdays it turned into a bloated client that works in Mac, Linux, and Windows, while still keeping the whole program in a single binary file that weighs only 876 kb, while competitors that use gui libraries weigh around 6 mb.

Do they create a separate native gui for each platform instead of using a multiplatform gui library? What's the best approach to achieve such a thing?


From looking at screenshots it's fairly obvious that the Windows and OSX GUIs of μTorrent are not identical, so it's fairly unlikely that they used a multi-platform GUI library. μTorrent for Linux doesn't even have a conventional GUI, it offers a web-based interface, which would be programmed separately to a Windows GUI in any case.

That's the way to go: If you want to keep binary size down, you can't depend on libraries that aren't included in the operating system, because you'll have to bundle them.

Programming separate GUIs for separate platforms is, in my opinion, usually the correct approach: user interfaces on OSX and Windows follow significantly different paradigms, and if you port an app designed for Windows to OSX without changing the user interface, it will look quite alien to the user. Cross-platform GUI libraries can be very helpful tools, but they make it very easy to build software that looks out-of-place everywhere.

  • 1
    They provide separate builds for OSX, Linux and Windows, and the Linux version as you say only allows for web access. The logical way to 'keep the size down' would be by maintaining the builds for different platforms as different branches, keeping the UI separate from the core libraries and only including what's required in each build. – John Lyon Aug 12 '12 at 23:25

Your Answer

By clicking “Post Your Answer”, you agree to our terms of service, privacy policy and cookie policy

Not the answer you're looking for? Browse other questions tagged or ask your own question.