Programmers Stack Exchange is a question and answer site for professional programmers interested in conceptual questions about software development. Join them; it only takes a minute:

Sign up
Here's how it works:
  1. Anybody can ask a question
  2. Anybody can answer
  3. The best answers are voted up and rise to the top

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?

share|improve this question
up vote 7 down vote accepted

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.

share|improve this answer
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. – jozzas Aug 12 '12 at 23:25

Your Answer


By posting your answer, you agree to the privacy policy and terms of service.

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