''Attention: this page is for Tahoe-LAFS developers. If you are not a Tahoe-LAFS developer, then the page you want is [source:docs/quickstart.rst quickstart.rst].'' see also wiki:Installation, wiki:Dev, wiki:Doc, wiki:Manual, and wiki:CompileError = Newbie Developer Setup = As I'm progressing my first steps in hacking tahoe-lafs I thought it might help others and this is what you're reading now. Be bold editing and improving this doc, since I'm not even familiar with Python and lots of you can document your own 'best practices' for other newbies. I will use Eclipse IDE because of wide use and availability. But just because I'm used to it. You might have your preferred tools. I'm on Ubuntu. The easiest workflow you can use is by working using Github's [https://help.github.com/articles/using-pull-requests Pull Requests]. Tahoe-LAFS's code has automated test coverage and each PR you will send will be tested automatically. However, if you want tests to be run even before sending a PR, and if you're prepared to accept the [https://github.com/travis-ci/travis-ci/issues/1390 security issue of Travis needing write access], see [http://about.travis-ci.org/docs/user/getting-started/ these docs for how to set up Travis CI on your own GitHub forked repo]. This way, each commit you'll make, will have tests run on it. 1. Set up your OS. (I tinker a lot with mine so I maybe miss some). You have to [http://python.org/download/ install python in your OS] for tahoe to run. Most Linux distributions have it in their software repositories. 2. tahoe-lafs source code is hosted in git repositories [https://github.com/tahoe-lafs/tahoe-lafs/ on github]. Get git running in your machine. For Ubuntu just do this from a shell: {{{ sudo apt-get install git }}} 3. Get the code from the main repo [wiki:Dev#SourceCodeviarevisioncontrol this way] 4. IDE: Install [http://eclipse.org Eclipse] + [http://pydev.org PyDev] in your platform. You can start from a "classical" Eclipse install and add the "Software sites" URL http://pydev.org/updates. You can then go to 'Install new software' menu item and add PyDev from there. 5. Hack as if there was no tomorrow :) 6. Run the tests (watch out #2129) {{{ $ python setup.py trial }}} 7. Build {{{ $ python setup.py build $ python setup.py --help-commands # TIP: run this for a complete list of options }}} 8. You can run the resulting binary inside "bin" subdirectory. If you want to distinguish versions in a mixed grid, see ticket:2131#comment:7. m. Learn to use the [source:trunk/docs/logging.rst logging system] n. Help [wiki:PatchReviewProcess reviewing patches]. It is a good way to familiarize yourself with Tahoe-LAFS code and a lot can be learnt from the reviews before writting a single line of code. o. Learn [wiki:Patches how to submit patches] p. Dive into the code! See some [https://tahoe-lafs.org/pipermail/tahoe-dev/2012-May/007337.html tips for diving into Tahoe's source code] and follow the [wiki:CodingStandards coding standards] when you're ready to code. q. Learn [wiki:HowToWriteTests how to write tests]. Patches and new code should pass the automated testing before being eligible to be merged (see [ticket:68#comment:88 this comment]). Even [https://tahoe-lafs.org/pipermail/tahoe-dev/2014-November/009268.html packaging has tests]. There is a [query:status=!closed&keywords=~test-needed list of patches needing tests] if you want to get your feet wet.