An easy to use Cloud Downloader, BitTorrent Client and Media Player. Search, Download, Play, Share
Java C++ HTML C Objective-C JavaScript
Switch branches/tags
untagged-d281493985ecb04d0e88 help frotswire-android-1.8.1-build-305 frostwire-desktop-6.7.2-build-269 frostwire-desktop-6.7.1-build-268 frostwire-desktop-6.7.1-build-267 frostwire-desktop-6.7.1-build-266 frostwire-desktop-6.7.0-build-265-hotfix frostwire-desktop-6.7.0-build-264 frostwire-desktop-6.7.0-build-262 frostwire-desktop-6.7.0-build-261 frostwire-desktop-6.6.8-build-260 frostwire-desktop-6.6.7-build-529 frostwire-desktop-6.6.6-build-258 frostwire-desktop-6.6.5-build-257 frostwire-desktop-6.6.4-build-256 frostwire-desktop-6.6.3-build-253 frostwire-desktop-6.6.3-build-252 frostwire-desktop-6.6.2-build-251 frostwire-desktop-6.6.2-build-250 frostwire-desktop-6.6.1-build-249 frostwire-desktop-6.6.0-build-248 frostwire-desktop-6.5.9-build-246 frostwire-desktop-6.5.8-build-245 frostwire-desktop-6.5.8-build-244 frostwire-desktop-6.5.5-build-243 frostwire-desktop-6.5.5-build-242 frostwire-desktop-6.5.4-build-241 frostwire-desktop-6.5.3-build-240 frostwire-desktop-6.5.2-build-239 frostwire-desktop-6.5.1-build-238 frostwire-desktop-6.5.0-build-236 frostwire-desktop-6.4.9-build-235 frostwire-desktop-6.4.8-build-234 frostwire-desktop-6.4.8-build-233 frostwire-desktop-6.4.8-build-232 frostwire-desktop-6.4.8-build-230 frostwire-desktop-6.4.7-build-229 frostwire-desktop-6.4.7-build-228 frostwire-desktop-6.4.6-build-227 frostwire-desktop-6.4.6-build-223 frostwire-desktop-6.4.5-build-222 frostwire-desktop-6.4.5-build-221-no-vpn-drop frostwire-desktop-6.4.5-build-220 frostwire-desktop-6.4.5-build-219 frostwire-desktop-6.4.5-build-218 frostwire-desktop-6.4.4-build-215 frostwire-desktop-6.4.3-build-214 frostwire-desktop-6.4.2-build-212 frostwire-desktop-6.4.1-build-210 frostwire-desktop-6.4.1-build-209 frostwire-desktop-6.4.0-build-208 frostwire-desktop-6.4.0-build-207 frostwire-desktop-6.3.7-build-206 frostwire-desktop-6.3.7-build-205 frostwire-desktop-6.3.7-build-204 frostwire-desktop-6.3.7-build-203 frostwire-desktop-6.3.6-build-202 frostwire-desktop-6.3.6-build-201 frostwire-desktop-6.3.5-build-198 frostwire-desktop-6.3.5-build-197 frostwire-desktop-6.3.5-build-195 frostwire-desktop-6.3.4-build-194 frostwire-desktop-6.3.4-build-193 frostwire-desktop-6.3.3-build-255 frostwire-desktop-6.3.3-build-193 frostwire-desktop-6.3.3-build-190 frostwire-desktop-6.3.3-build-189 frostwire-desktop-6.3.2-build-188 frostwire-desktop-6.3.2-build-187 frostwire-desktop-6.3.1-build-186 frostwire-desktop-6.3.0-build-185 frostwire-desktop-6.3.0-build-184 frostwire-desktop-6.3.0-build-183 frostwire-desktop-6.3.0-build-182 frostwire-desktop-6.3.0-build-181 frostwire-desktop-6.3.0-build-180 frostwire-desktop-6.2.4-build-179 frostwire-desktop-6.2.3-build-178 frostwire-desktop-6.2.3-build-177 frostwire-desktop-6.2.2-build-176 frostwire-desktop-6.2.1-build-175 frostwire-desktop-6.2.0-build-174 frostwire-desktop-6.2.0-build-173 frostwire-desktop-6.1.9-build-172 frostwire-desktop-6.1.8-build-169 frostwire-desktop-6.1.7-build-168 frostwire-desktop-6.1.6-build-167 frostwire-desktop-6.1.6-build-166 frostwire-desktop-2.0.7-build-263 frostwire-desktop-1.9.9-build-247 frostwire-desktop-1.9.9-build-246 frostwire-android-2.0.8-build-557 frostwire-android-2.0.7-build-566 frostwire-android-2.0.7-build-555 frostwire-android-2.0.7-build-554 frostwire-android-2.0.7-build-553 frostwire-android-2.0.7-build-552 frostwire-android-2.0.7-build-551 frostwire-android-2.0.7-build-550
Nothing to show
Clone or download
Fetching latest commit…
Cannot retrieve the latest commit at this time.

README.md

The FrostWire Monorepo

Welcome to the main FrostWire repository. Here you will find the sources necessary to build FrostWire for Android and FrostWire for Desktop

  • /android Sources for FrostWire for Android
  • /desktop Sources for FrostWire for Desktop (Windows, Mac, Linux)
  • /common Common sources for the desktop and android client

In the past these sources were held at frostwire-android, frostwire-desktop and frostwire-common respectively. These repositories will no longer be used.

Coding Guidelines

5 Object Oriented Programming Principles learned during the last 15 years

  • Keep it simple, stupid. (KISS)
  • Do not repeat yourself. (DRY) Re-use your own code and our code. It'll be faster to code, and easier to maintain.
  • If you want to help, the Issue tracker is a good place to take a look at.
  • Try to follow our coding style and formatting before submitting a patch.
  • All pull requests should come from a feature branch created on your git fork. We'll review your code and will only merge it to the master branch if it doesn't break the build. If you can include tests for your pull request you get extra bonus points ;)
  • When you submit a pull request try to explain what issue you're fixing in detail and how you're fixing in detail it so it's easier for us to read your patches. If it's too hard to explain what you're doing, you're probably making things more complex than they already are. Look and test your code well before submitting patches.
  • We prefer well named methods and code re-usability than a lot of comments. Code should be self-explanatory.

Contribution Guidelines

If you want to contribute code, start by looking at the open issues on github.com.

If you want to fix a new issue that's not listed there, create the issue, see if we can discuss a solution.

Please follow the following procedure when creating features to avoid unnecessary rejections:

Do this the first time (Cloning & Forking):

git clone https://github.com/frostwire/frostwire
  • Make a Fork of the origin repo into your github account.
  • On your local copy, add your fork as a remote under your username as the remote alias.
cd frostwire
git remote add your_github_username_here https://github.com/your_github_username_here/frostwire

For further contributions

  • Create a branch with a descriptive name of the issue you are solving.
  • Make sure the name of your feature branch describes what you're trying to fix. If you don't know what to name it and there's an issue created for it, name your branch issue-233 (where 233 would be the number of the issue you're fixing).
  • Focus on your patch, do not waste time re-formatting code too much as it makes it hard to review the actual fix. Good patches will be rejected if there's too much code formatting noise, we are a very small team and we can't waste too much time reviewing if something got lost or added in the middle of hundreds of lines that got shifted.
  • Code, Commit, Push, Code, Commit, Push, until the feature is fully implemented.
  • If you can add tests to demonstrate the issue and the fix, even better.
  • Submit a pull request that's as descriptive as possible. Adding (issue #233) to the commit message or in PR comments automatically references them on the issue tracker.
  • We'll code review you, maybe ask you for some more changes, and after we've tested it we'll merge your changes.

If your branch has taken a while to be accepted for merging into master, it's very likely that the master branch will have moved forward while you work. In this case, make sure to sync your master.

git fetch upstream master

and then rebase your branch to bring it up to speed so it can be merged properly (do not merge master into your branch):

git checkout my-branch
git rebase origin/master

As you do this you may have to fix any possible conflicts, just follow the instruction git gives you if this is your first time.

Make sure to squash any cosmetic commits into the body of your work so that we don't pollute the history.

Repeat and rinse, if you send enough patches to demonstrate you have a good coding skills, we'll just give you commit access on the real repo and you will be part of the development team.

How to build

To build you will need the Java Developer Kit 8, Apache Ant and Gradle

Desktop

Go inside the desktop directory and type: gradle build

Additional Desktop requirements

gettext

If you want to work with the translation (i18n) bundles, you will need to install gettext to perform the text extraction and bundling tasks (gradle gettextExtract, gradle gettextBundle)

If you are on Mac, gettext installation is very simple with brew:

brew install gettext.

If you are on Ubuntu, gettext installation can be done with

sudo apt install gettext.

Windows developers

If you are developing in Windows we recommend you work with MinGW and install the gettext package.

We also recommend you use git for window's terminal instead of cmd.exe. All of our scripts will work as if you were working in Linux/Mac. Git's terminal supports window resizing, more convenient copying and pasting, Tab text completion, Ctrl+R reverse search, common bash keyboard shortcuts and basic GNU tools right out of the box.

Android

Go inside the android directory and type: ./gradlew assembleDebug

Additional Android requirements

For Android developers we recommend working with IntelliJ IDEA and the Stand-Alone SDK Tools (instead of Android Studio, which in our experience falls short if you want to also develop for our desktop client)

License

Frostwire Desktop and Frostwire Android are offered under the GNU General Public License.

Official FrostWire sites

Main Website Frostwire.com | Frostwire Forum | Facebook | Twitter @frostwire | Tumblr