Huge Update Coming!

To all FrostWire+P2P Geeks and Coders who want to join us

We’ve been working hard this past month on bringing up to speed our jlibtorrent bittorrent library, this should help make the library work even better across more android devices and desktop computers. Lots of issues were solved by the libtorrent team, and many other issues were found by java developers outside FrostWire who are already using jlibtorrent in production.

FrostWire

If you are an app developer, and you think your users could benefit from some behind-the-scenes bittorrent based p2p networking we strongly suggest you take a look at JLibTorrent, it’s open source, it’s free, and it’s battle tested on millions of devices. The more computers we can get to join the DHT, the more we all gain.

As time passes and the libtorrent contributors keep working we are closer to having the largest and robust DHT network of the internet be IPv6 compatible and we’re super excited about the possibilities for peer to peer computing this will bring, perhaps we’ll be able to say good bye to those annoying NAT issues and take advantage of the DHT network in ways we’ve dreamed of the last half a decade.

Insanely Fast Audio Demuxing

Android users downloading large audio files from videos in YouTube will have a much much pleasant experience towards the ends of their downloads.

When YouTube sourced mp4 videos are downloaded for the purposes of audio by your FrostWire client, FrostWire extracts the audio portions of the file to create a new .m4a file (which is way better than an mp3), this process is called “demuxing”

We noticed this process was taking too long and also using more memory than necessary. Our awesome @aldenml senior developer took the time to ditch the mp4 library we were using for demuxing and rewrote the demuxing code from scratch with efficiency in mind and the results are amazing. What once could’ve taken over 5 minutes in the case of large videos, now takes just a few seconds. We have not yet done proper benchmarking, but it’s several orders of magnitude faster and now memory usage is capped to a non-blocking buffer of memory.

Improved/Easier to Maintain Music Player

Since February I’ve been working on a very challenging refactor branch that deals with eliminating a ton of repeated code on the audio player. In the process I’ve lost count of how many bugs were fixed with the audio player user experience. You should now see consistent menus and actions across the UI, less crashes, and since there’s less code from all this work our installer should be even smaller now. Less is more.

We are now expecting to move faster when it comes to fixing issues on the player now that I’m more familiar with the codebase, and now making a fix will be a lot easier as the abstractions used allow us to reuse code and make changes in a single place not in 10 places.

Song/File selection dialog

If you were ever so curious to past a SoundCloud Playlist URL, of a playlist that has tracks marked as “Downloadable” by content creators, you probably saw a dialog that showed you all the tracks FrostWire was about to download.

We had an intern (@votaguz) do some work on this dialog and now it supports checkboxes and radiobuttons, so now you will be able to pick and chose what songs will be downloaded from a soundcloud playlist.

I’m in the process of integrating this powerful dialog with BitTorrent downloads so that you can pick and chose what files from a .torrent you want to download once FrostWire has fetched a .torrent file from a server or from the DHT.

Search architecture revamp

We’ve simplified, optimized and enhanced our search code so that we can finally offer you things like filtering, grouping and sorting of search results, expect a much improved search experience and not getting lost in many results with innovative tools we’re currently experimenting in further releases.

Want to work with FrostWire?

We are looking for smart developers not afraid to code in different programming languages and tackle tough challenges. If you’re looking for impact in the number of users your code will be running on, you’ll probably have more impact on FrostWire than on a big company like Facebook or Google if you join us, we’re a smaller team and your contributions will be more significant.

We work with: Java, Python, C/C++, bash, Ubuntu, MacOSX, Windows 10, Android, AWS, Git, Github, gradle, reddit, slack.

We don’t care where you are, we just want you to breathe and love coding and understanding how operating systems, programming languages, garbage collectors, memory management, networks, compilers and runtimes work. If you have a passion for freedom of speech, no censorship and making the world a better place you will love working with us. And did we mention we don’t have formal schedules? We’re a worldwide team of coders, testers, writers, graphic designers, marketers trying to make the internet a more distributed network that empowers content creators and consumers worldwide.

We don’t want your resume, we want you to start sending pull requests to see if you have what it takes, we don’t want your Pull requests for free, we pay for them in Bitcoin. If you’re interested join us on github and try to tackle one of those, try our apps on desktop or android, find something you don’t like and fix it, code speaks louder than fancy resumes.

Don’t like Eclipse? Prefer IntelliJ Idea for Java Programming? FrostWire for Desktop is now IntelliJ ready

logo_intellij_idea

As of today, when you clone the frostwire-desktop github repository, you can now work from IntelliJIdea and build it right of.

Just make sure you put the following on the VM Options of the Application’s Run/Debug Configuration:

-Djava.library.path=lib/native

Screen Shot 2014-08-22 at 9.27.57 AM

FrostWire is a free, open source BitTorrent client first released in September 2004, as a fork of LimeWire. It was initially very similar to LimeWire in appearance and functionality, but over time developers added more features, including BitTorrent support. In version 5, Gnutella support was dropped entirely, and FrostWire is only a BitTorrent client. Development of the program has been active since the program was first released in September 2004.

Heart Jar? or Dollar Jar? (for Bitcoin, Litecoin, Dogecoin, Paypal Tips)

On the next FrostWire releases we will be introducing a feature to send “Tips” to content creators sharing their works with FrostWire via BitTorrent.

We’re having an unending debate about the icon we should use on the button, which one do you like better?

Consider that you can pay using not just with US dollars or your local currency, but also using bitcoins, litecoins and dogecoins.

tip_2tip_1

How to help translate FrostWire for Desktop (Windows / Mac / Linux)

Help us translate the FrostWire user interface, be part of an open source project, learn new things.

0. Get a GitHub.com account and sign in
Go to GitHub.com and sign up for a free account unless you have one already.

1. Download and install Git on your computer
If you don’t have git installed on your computer, here are instructions on how to install.

git, is a version control software which helps us keep track of all the changes on every file that belong to the FrostWire project.
GitHub.com is a site where we host our source code and its origin git repository (the official one), think of the repository as a database to keep all those file versions.

GitHub is really helpful because it makes colaboration very social, we can comment and review each other’s changes before merging them into the origin repository.

2. Fork us on github.
Go to https://github.com/frostwire/frostwire-desktop/, this is the page for our origin repo. Forking means you will be making a copy of your own inside your github account. You will wok on that one, and when you are done you will send the changes to the origin repo.

For us by clicking on the button that says “Fork” on the top right.

Once the fork is done, you can go to your github personal page, and in the list of your repositories you should have your frostwire-desktop fork.

As of now, that copy lives only at github.com, you could try and edit the files up there, but it’s very uncomfortable working that way, the text editor can be quite slow sometimes, so …

3. Clone your forked repo to your computer
Go to a command line, or with your favorite git client make a clone of YOUR repo (not ours).
If you use the command line git client, you should issue the following command

git clone https://github.com/myusername/frostwire-desktop

wait a few seconds and all the source code and assets that belong to the frostwire-desktop project will be downloaded to a folder called “frostwire-desktop” on your computer.

change directory to it…
cd frostwire-desktop

4. Create a branch for your translation
Create a branch with a name that will help us understand that this is a translation update you’re sending us, it could be named something like
“translation-french-2013-november-myname”, so that we can easily see what language you are translating, on which date you were working on it, and your name so we can give you credit for it.

You create a branch on the git command line like this (just remember to put the name of YOUR branch instead)

Create a branch locally
git branch translation-french-2013-november-myname

Push it to your remote repository
git push origin -u translation-french-2013-november-myname

now your branch lives both on your computer and at your github repository.

Switch to that branch
git checkout translation-french-2013-november-myname

Now you’re ready to start working on your branch.

After we’ve accepted your changes, next time you want to help us do another update of the translation you will have to create a new branch.

5. Make sure the latest english strings have been put into your language.po file
enter the following command to sync strings

ant gettext-extract

(this could take a while to finish as it goes through every line of code looking for translatable strings.)

6. Translate, translate, translate
Now you get to do the actual translation. Translation files are in the following folder inside the frostwire-desktop project
cd lib/messagebundles

If you’re going to translate say to arabic, you will edit the ar.po file, it should be easy to find the language file for the language you intend to work on. We recommend that you use a PO Editor software to make things easier, and always make sure to save the file using UTF-8 encoding.

7. Test your translation
To test your translation, you will need to recreate the message bundle file, for this you will need to invoke the following command

ant gettext-bundle

assuming you didn’t mess up anything in the format of the .po file this should finish after a few minutes of bundling every language file.
If you see any errors you should try to fix them, if you don’t know how to fix them you can reach us on the FrostWire forum, or right here for help.

once the bundle is built, you need to test your translation, for this you will need to build FrostWire, you can do this in one step, from the root frostwire-desktop folder type:

ant

after a couple minutes it should be done compiling everything, and then you can invoke the “run” script right there if you’re on Linux or Mac, if you’re on windows, go to gui/ and invoke the run.bat file.

FrostWire will open, switch to your language and make sure your translations are fine.

8. Time to commit and push your changes

Once you are finished, commit your changes, make sure you don’t make changes in other files than the .po of the language you are working with.
So if you’re working say with italian, you would do (from the frostwire-desktop root directory)

git commit lib/messagebundles/it.po -m "my translation update for italian users"

and then push it to your fork up on github

git push

9. Submit a pull request

Once you see your last commit on github and you are sure you’re finished, it’s time to let us know, so you will submit what’s called a “Pull Request”.
If there are any special notes please let us know, we’ll review your changes, and if everything is good to go, we’ll merge them, and you will make open source history 🙂