# GSoC 2019 Fedora Gooye Karma
* Getting Started with Fedora
* Understanding the project
* Baby steps
# Getting Started with Fedora!
This Section will apply to all the projects in Fedora GSoC in general.
Fedora Project is although known for an awesome Gnu based leading edge OS in the FOSS world but then there a lot more which goes in the project which helps in keeping the cog wheel moving.
The subprojects are usually, Rel-Eng (Release Enginnering), QA (Quality Assurance), Fedora Infra, Fedora Desing, and much more. These subproject work together to build the OS and keep the release process smooth. Needless to say, we require a lot of tools and lot of work goes into developing and maintaning the same. That's exactly where we have our wonderful community conitubutors who help us achieve our goals.
Since we have a lot of contributors who ingress together Fedora infra helps out people by providing them by giving them a profile which maps them to all their contributions. FAS(Fedora Account System) -This is something which every contributors have to create once they want to get into the project.
This year there are some projects which are represented and mentored by people from few subsystem teams namely the Fedora CI, Fedora QA and many others.
Everything in Fedora is bound by the Code of Conduct, the ground rule is to be respectful to all the members in the project. To read the whole document see below.
# Understanding the project
If you are one of those applicants you should start looking for things in the right place:
* FAS : https://admin.fedoraproject.org/accounts/
* Sub project and Code : http://pagure.io/
* Fedora infra code and doc: https://fedoraproject.org/wiki/Infrastructure
* Fedora's code of Conduct : https://docs.fedoraproject.org/en-US/project/code-of-conduct/index.html
* Fedora releng : https://docs.pagure.org/releng/
* Fedora MLs: http://lists.fedoraproject.org/
* Fedora QA : https://pagure.io/fedora-qa/
* Calendar : https://apps.fedoraproject.org/calendar
* Docs for the project : http://docs.fedoraproject.org/
* All the Subproject/WG/SIGs meetings are logged : https://meetbot.fedoraproject.org/
# Getting started with Fedora Gooye Karma
## The idea behind
The Quality Assurance team is reponsible for mataining the quality of releases and as Fedora releases once in every 6 months. It's important to roll out updates for the released OS version every now and then for packages which has improvements in upstream or fixes a bug in Fedora. The Fedora infra team mainatins a Web UI where a bunch of updates are shown from a repo called "updates-testing". These updates are then manually tested and given karma by testers around the world. The OS continues to get updates until it goes End Of Life (EOL) which is about one and half years after the release is cut.
Bodhi : http://bodhi.fedoraproject.org/
Code : https://github.com/fedora-infra/bodhi
## Understanding the workflow
The easiest way to understand the workflow of Bodhi and getting started is to spin up a VM and then start posting some karmas to known packages like terminal,sudo,dnf,kernel,firefox etc. Getting started to udpates testing guide is linked below. After posting some karmas , you will be well acquinted with "how bodhi works" and this is exactly what the gooye karma solve except that it will be a standalone RPM file on Fedora.
If you are one who is looking to understand how posting karmas work from an RPM, you can try out Fedora easy karma[https://fedoraproject.org/wiki/Fedora_Easy_Karma]
The Fedora easy karma is a CLI tool which fetches the packages from UT repo and then let's an contributor post karmas after testing packages.
The Mockup you can build on can be found here [http://tirfa.com/gooey-karma.html]
## The expectaion from student
* Understand the Project and how the tool fits in
* Revamp the UI/UX of the gooye karma
* Migrate to Python3
* Develop, Test and Implement the Bodhi's latest API to fetch packages in the UI
* Build an RPM in copr [https://copr.fedorainfracloud.org/coprs/] and test it
* Request Fedora Infra and work with them to become a packager
* Ship Fedora Gooye Karma RPM publicly by annoucing it to @test @qa-devel list