Downloading files, whether it’s a large ISO (CD images), promotional MP3 from your favorite local band, Open Source application, or music video, is one of the most common uses of the Internet. Until recently, download servers that served these files were centralized. If the server was overloaded, offline, or ‘Slashdotted’ you were out of luck. BitTorrent, another SourceForge.net-hosted project, changed this by providing a way to download files in a decentralized way by leveraging, in a transparent fashion, hundreds of end-user computers. Using this method the files are almost always available and the transfer speed is generally faster than a centralized solution, particularly with larger files. SourceForge.net’s September 2004 project of the month is Azureus, a powerful Java-based BitTorrent client. The project is immensely popular on SF.net. Besides being in our top 5 most active projects (out of 80,000+) it enjoys on average 75,000 downloads a day. (Wow!) Azureus runs under Windows, Linux, OS X, among others and is licensed under the GPL. The SourceForge.net team is proud to make Azureus Project of the Month.
Description of project:
Azureus is an advanced multiplatform BitTorrent client written in Java that includes a tracker and a torrent maker, thus providing all the components needed to run a BitTorrent solution. BitTorrent is a file distribution protocol that reduces the load on central servers by using peer-to-peer technology. Instead of downloading from a single overburdened server, a client can download from hundreds (or thousands) of other peer clients simultaneously, allowing for efficient and high-speed content delivery. Azureus differs from other BitTorrent clients in its new-from-the-ground-up protocol implementation, its easy to use multi-download graphical interface, and its extensive plug-in support.
- OSes: win32, linux, solaris, Mac OS X, (any Java 1.4 enabled platform)
- Minimum Requirements: 400MHz Pentium II CPU, 128MB RAM
- Languages: English, German, French, Dutch, Portuguese, Spanish, Swedish, Chinese (simplified), Polish, Finnish, Danish, Italian, Chinese (traditional), Russian, Norwegian, Bulgarian, Brazilian-Portuguese, Czech, Lithuanian, Slovenian, Turkish, Catala, Galician, Greek, Hebrew, Serbian, Malay, Japanese
- License: GPL
- Programming Language: Java
Why and how did you get started?
Olivier: We initially started Azureus for two reasons: to experiment with the Standard Widget Toolkit from Eclipse, and to provide a better GUI than other BitTorrent clients. As the project has gained more of an audience, the goals have changed, and we’re now trying to provide the best BitTorrent client.
Alon: I first installed Azureus about a year ago, when it was still in its infancy. Because there were a few bugs that bothered me and some features missing that I wanted, along with my desire to get into Java programming, I downloaded the source code and began playing with it. My first real contribution to the project was the setting up of a nightly CVS snapshot Web page (which I still maintain). Once I became more familiar with the code, I began to contribute patches on a regular basis, eventually becoming a core developer. Like many other people, my initial contributions to Open Source came because I had an itch that needed scratching.
What is the software’s intended audience?
Currently end users, mostly directly, but we’re building up complete solutions for companies willing to use the technology. Azureus can manage every step in the distribution chain — handling source publishing, data serving, and end-user downloading. Thus, it’s useful for anyone who wants to download the latest Linux ISO CD images, deliver demos and patches of their software product to their users, or distribute and synchronize content within a company intranet.
How many people do you believe are using your software?
We don’t know for sure, but we believe that about 200k users are using Azureus on a daily basis. Statistics from SourceForge.net relate more than 10 million downloads, but that includes updates. We also know that more than a million users have tried the product at least once.
What are a couple of notable examples of how people are using your software?
We deployed Azureus for distributing the latest Unreal Tournament demo to hundreds of thousands of raving fans when it was released, reducing what would have been a crippling bandwidth load on the download servers to something considerably more manageable, all while getting the files on to gamers’ hard drives in a much shorter timeframe. On intranets, Azureus has been used to mirror large multimedia presentations in computer labs for university courses, as well as quickly distributing all the files necessary for a successful LANParty. And of course, Azureus uses BitTorrent technology to automatically distribute updates to itself, reducing the load on SourceForge.net’s own download servers.
What gave you an indication that your project was becoming successful?
We knew Azureus was a success when the number of forum posts, bug reports, and feature requests began to increase significantly, indicating growing interest and a quickly expanding user base. Once we began expanding the plug-in API, we saw a surge of activity in user-contributed modules (like IRC file announce bots, PeerGuardian IP filtering, and RSS-based syndicated content subscriptions). And let’s not forget all the rip-off sites popping up as of late, using Azureus’s name to entice unsuspecting users into downloading Trojan-infected or pay-for copies of the software. You know you’re getting popular when your software is used for scams.
What has been your biggest surprise?
Olivier: When I started this project, I didn’t know anything about the Open Source world, at least not as a developer. My biggest surprise was to see how much support you can get, and how people can involve themselves into your project.
Alon: The incredible community involvement that Open Source seems to bring. Besides the core developers, many other people donate their valuable time to submit patches, test code, write documentation, do translations, provide tech support, express their thoughts and recommendations, and even donate money. People love to get involved. Azureus was my first experience in Open Source development, and I’ve been very impressed with the process as a whole.
What has been your biggest challenge?
Alon: The incredible community involvement that Open Source seems to bring. Managing a project like this, with such a diverse set of users and volunteers, can become overwhelming at times. Since we developers cannot do it all ourselves, we greatly rely on the community to help support itself. We’re constantly striving to come up with new ways to facilitate communication with and within the community, in order to achieve (and even surpass) the level of quality possible with closed-source commercial software.
Olivier: Changing people’s opinion on Java. People often associate Java application with inefficiency, slowness, and ugly interfaces. Some people still refuses to use Azureus because of the Java technology, while most users are happily surprised by what a Java application can do.
Why do you think your project has been so well received?
We provide a powerful piece of software that is both feature-rich and easy to use out of the box, and which runs under almost every OS platform. We are always striving to improve Azureus, by being attentive to users’ comments, needs, and expectations, and by involving the community as much as we can throughout the entire process.
Where do you see your project going?
Olivier: A lot of work is still needed, and some core classes need some refactoring. The new features will certainly be driven, as all features have been so far, by our imagination and users’ needs. We hope that more people will start to develop plug-ins for Azureus. On our side, that means opening our core more.
Alon: We want Azureus to become everyone’s favorite BitTorrent client, and we hope to get there by continually refining and enhancing what is already a potent file downloading utility. At the same time, we’re working on enhancing BitTorrent’s viability in the commercial sector, for use in such business areas as data distribution and content delivery, which we see as the next frontier for peer-to-peer technology.
What’s on your project wish list?
Alon: Auto-configuring and auto-optimizing everything, for a more simplified and reliable user experience. Built-in search functionality, for locating downloadable data in a much easier fashion than is possible now.
Olivier: More plug-ins, and more users.
What are you most proud of?
How do you coordinate the project?
We mainly use IRC to communicate, and as we are only four developers, that’s manageable. Bugs are assigned to the most appropriate person, but one developer may still correct someone’s else bug. We also use email, as we’re in different time zones (Europe, USA, and Japan). We help out each other wherever we can for things like tech support and bug fixing, and provide community forums and a wiki site for the rest of the world to participate in the process.
Do you work on the project full-time, or do you have another job?
Olivier and Alon: Full-time.
What is your development environment like?
Olivier: Mostly Windows. I’ve got PowerBook under Mac OS X in order to test specifically for the Macintosh.
Alon: I do all my development on an aging dual-933GHz Pentium workstation running Windows, using Eclipse IDE for all my code editing.
Azureus has changed a lot since the begining mostly driven by new features, optimisations, and of course, bug fixes.
- 2003.07.16: 188.8.131.52: First release on SF, completion of most advanced files first
- 2003.07.28: 184.108.40.206: New upload limitting algorithm
- 2003.09.03: 220.127.116.11: Automatic updater, fast resume, 11 languages supported
- 2003.09.07: 18.104.22.168: New SHA-1 (JMule), IRC client (Pircbot) for support
- 2003.09.30: 22.214.171.124: Multi-tracker support, priority and seeding options
- 2003.10.12: 126.96.36.199: Make Torrent Wizard, Configuration Wizard, IP filtering
- 2003.11.13: 188.8.131.52: Built-in tracker: host or publish your torrents, plug-in support
- 2003.11.20: 184.108.40.206: Tooltip general support
- 2003.12.19: 220.127.116.11: Intelligent Tracker Chacking, one shared incoming port (need only forwarding one port), password-protected access to tracker/torrents, SSL support for tracker, toolbar, customizable views, multi-tracker support (creation/edition), endgame mode / bad peer detection / SuperSeed mode, auto-import torrents, extended plug-in interface
- 2004.02.02: 18.104.22.168: Sharing (share of a file automatically creates a torrent for it), remote admin interface (SSL and password authorization)
- 2004.03.16: 22.214.171.124: Queue management (seeding rules…), compact and key tracker announce protocol
- 2004.05.30: 126.96.36.199: Download speed limitting, caching of peer info (thwarting tracker failure), detection of plug-in updates, generic update mechanism (core, updater, SWT
How can others contribute?
We lack a real graphic designer, but I think that this is a general problem within the Open Source community. We also always welcome new plug-ins. The core team is more or less locked at the moment, because we find that by the time we educate people on Azureus, they often want to do something else. Joining a 250k lines of code project isn’t easy, while using a simple plug-in interface is more accessible by anyone.