From Fedora Project Wiki

Welcome, and thank you for your interest in Bodhi for Outreachy 2017. This page will outline some tasks you should perform to apply to work on Bodhi.


Bodhi

Bodhi is the Fedora Project's system for releasing software updates. It allows developers to propose updates for Fedora, and it allows community testers to try those updates out before they are released so they can report back whether they worked or not through a +1/-1 voting system known as karma.


Getting started

You will need to run Fedora for this internship. It is strongly recommended that you use a physical machine for this so that you can use Vagrant. You can read about how to install Fedora here:

https://docs.fedoraproject.org/en-US/Fedora/25/html/Installation_Guide/

The next step will be to install git and clone a copy of Bodhi. Before running these commands, you should cd into a directory that you want to keep your code in, such as ~/devel/:

 $ sudo dnf install git
 $ git clone https://github.com/fedora-infra/bodhi.git
 $ cd bodhi

The easiest way to get started with Bodhi is to use Vagrant. Vagrant allows you to type some simple commands and have a virtual machines automatically built for you that will have Bodhi running and ready for hacking! Bodhi has documentation on how to install Vagrant and get a development environment here:

https://github.com/fedora-infra/bodhi/blob/develop/docs/developer_docs.rst#vagrant

The documentation assumes you are using Fedora on a hardware installation that has virtualization extensions enabled. If your computer doesn't have them enabled and does support them, you will need to go into your BIOS settings and turn it on. If you don't wish to work with Vagrant and have moderate experience with Python and virtualenvs, you can also configure a Bodhi development environment that way:

https://github.com/fedora-infra/bodhi/blob/develop/docs/developer_docs.rst#virtualenv


First tasks

You don't need to submit any tasks from this section. They are here to familiarize yourself a little bit with Bodhi and to give you some experience with the development environment.

  • Create a Fedora account - you will need this in order to log in to Bodhi.
  • After you have run vagrant up, Bodhi should be running in a VM on your system. If you used the example Vagrantfile, you should be able to visit Bodhi's web interface at http://localhost:6543 - try that out!
  • You can use vagrant ssh to log into the guest vm. Inside here you will see a helpful message telling you about a few helper commands that the environment has defined for you. Try some of them out! For example, you can type btest to run the Bodhi test suite.
  • The code that you checked out on your host machine is automatically shared into the guest machine. This means that you can use any text editor or IDE that you like on your host to edit the Bodhi code, and the guest will automatically see those changes (be aware that there is a small delay of 2-5 seconds). Open bodhi/server/templates/master.html to insert some text into the master template - for example, you could change "Fedora Updates System" to "Hello, this is the Fedora Updates System!". After you have made your change and saved the file, try to visit http://localhost:6543 to see the change you made. Don't forget that there may be a delay of a few seconds while the change syncs into the guest.
  • Read the developer docs to familiarize yourself with how to work on Bodhi.


Application tasks

At a high level, the type of tasks that are good for this program are

  • Adding a feature to any Fedora project (bonus points for bodhi)
  • Writing automated tests for any Fedora project (bonus points for bodhi)
  • Becoming a package maintainer in Fedora. Being a Fedora packager is a great way to contribute to the Fedora project, and it will give you a valuable perspective on Bodhi since packagers are one of the primary types of users. Randy Barlow can sponsor you if needed.

To apply for the Bodhi internship, the best thing to do is to submit a few pull requests that fix some of Bodhi's Easy Fix bugs:

https://github.com/fedora-infra/bodhi/issues?q=is%3Aopen+is%3Aissue+label%3AEasyFix

Note that EasyFix is a relative term - usually issues will get that label if it meets any of these criteria:

  • The issue description or comments state what needs to be done pretty clearly.
  • The fix is believed to touch very little code.
  • The fix is believed to be relatively simpler than most Bodhi issues.

You can send your patches in by sending a pull request to Bodhi. If you aren't familiar with GitHub, you can read about creating pull requests. If you don't wish to use GitHub, you may also e-mail patches to the Bodhi mailing list.

Be sure to identify yourself as an Outreachy applicant when you perform these tasks. You can simply contact Randy and let him know your GitHub username (or e-mail address if you sent a patch to the mailing list).


Project ideas

The following are ideas for the project you would be applying to. Nothing is set in stone, but these could give you an idea of what the possible project for the summer could look like:

  • Write a dnf plugin that can install or update from a Bodhi update. dnf is Fedora's package manager, used to install or update software on the Fedora operating system. Users who wish to test Bodhi updates currently have to do a bit of manual work to install updates. It would be handy if there were a dnf plugin that could make this easy. This project could be a lot of fun too.
  • Write bash completion for the bodhi command line interface. This could be fun and would make using the CLI much more pleasant!
  • Convert Bodhi to use Pungi to compose OSTrees. This one is a bit more advanced and would be better suited for someone with more experience with with Python.
  • Help Bodhi move towards being able to use Python 3. This project would oddly probably not involve direct contributions to Bodhi itself, but to Bodhi's dependencies. Bodhi cannot be ported to Python 3 until the programs it uses are also ported, so this project would involve working in a variety of other projects to port them to Python 3. This would be a good project for someone who has done some Python coding before.