From Fedora Project Wiki

(Initial edit)
 
 
(89 intermediate revisions by 15 users not shown)
Line 5: Line 5:


== Students Welcome ==
== Students Welcome ==
If you are a student looking forward to participate the GSoC 2016 with Fedora, please feel free to browse the idea list which is still growing. Do not hesitate to contact the mentors or contributors as indicated in this page for any related clarification. You also should find some like-minded people on the <code>#fedora-summer-coding</code> IRC channel.


If you are a student looking forward to participate the GSoC 2016 with Fedora, please feel free to browse the idea list which is still growing. Do not hesitate to contact the mentors/ contributors as indicated in this page for any related clarification. You also should find some like-minded people on the <code>#fedora-summer-coding</code> IRC channel.
If you are new to the Fedora Project, the following material will help you to get started. Additionally, please register in the [[FAS|Fedora Account System (FAS)]] if you are willing to continue with the Fedora Project. For getting quick help, <code>#fedora-devel</code> can be used for getting help with programming problems.


If you are new to The Fedora project, following material would help you to get started. Further please sign-up with the [[FAS|Fedora Account System(FAS)]] if you are willing to continue with the Fedora project. <code>#fedora-devel</code>, IRC channel can be used to get instant support.
# [[Foundations|The Four Foundations of Fedora]]
# [https://developers.google.com/open-source/gsoc/resources/ Official GSoC Resources]
# [http://docs.fedoraproject.org/en-US/index.html Fedora Documentation]
# [[Communicate/IRCHowTo|IRC]]
# [[Development|Development]]


# [[Foundation|The Foundation]]
# [http://docs.fedoraproject.org/en-US/index.html Fedora Documentation (Users/ Contributors)]
# [[Communicate/IRCHowTo|How to work with IRC?]]
# [[FAS|Fedora Account System]]
# [[Development]]


== Supporting Mentors ==
The following contributors are available to provide general help and support for the GSoC 2016 program (existing contributors, feel free to add yourselves and your wiki page). If a specific project mentor is busy, you can contact one of the people below for short-term help on your project or task.


== Supporting Mentors ==
# [[User:Decause|Remy DeCausemaker]]
# [[User:Kushal|Kushal Das]]
# [[User:Hguemar|Haïkel Guémar]]
# [[User:Jberkus|Josh Berkus]]
# [[User:Lmacken|Luke Macken]]
# [[User:Lsd|Lali Devamanthri]]
<!-- # [[User:Jflory7|Justin W. Flory]] (non-programming questions) -->


Following contributors are also willing to support the GSoC 2016 program. (please feel free to add your self, attach the user page). Sometimes there should be some backing up mentors to mentor if the original mentor get busy with something for a short time period. In such case we need help.
=== Fedora Atomic Mentors ===
The following mentors are specifically available for projects related to [http://www.projectatomic.io/community/gsoc Fedora Atomic]:


#[[User:Sgallagh|Stephen Gallagher]]
# Giuseppe Scriviano
#[[User:Lsd|Lali Devamanthri]]
# [[User:Walters|Colin Walters]]
# [[User:Gscrivano|Giuseppe Scrivano]]
# [[User:Mbarnes|Matthew Barnes]]


==Draft of an idea==
<!-- NOT USED IN GSoC 2016, *PLEASE PLEASE PLEASE USE FOR LATER GSoC PROECTS
== Draft of an idea ==
Please add your idea as follows.
Please add your idea as follows.


=== Project name ===
=== Project Name ===
 
''Status:''


''Summary of idea:''
''Status'':


''Knowledge prerequisite:''
''Summary of idea'':


''Skill level:''
''Knowledge prerequisite'':


''Contacts:''  
''Skill level'':


''Mentor(s):''
''Contacts'':


''Notes:''
''Mentor(s)'':


'''!!!The draft was changed slightly, please add required field as required!!!'''
''Notes'':
-->


== Idea list for GSoC 2016 ==
== Idea list for GSoC 2016 ==


=== Implement Tinykdump ===
=== Implement Tinykdump ===


''Status:'' Proposed - draft
''Status'': Proposed - draft


''Summary of idea:''  Tinykdump is a minimal daemon to capture kernel-based crash dumping (kdump) memory image to usb storage. Compared to the traditional kdump solution, it is,
''Summary of idea'': Tinykdump is a minimal daemon to capture kernel-based crash dumping (kdump) memory image to usb storage. Compared to the traditional kdump solution, it is,


  * more reliable and scalable
  * more reliable and scalable
Line 60: Line 70:
More information here: https://fedorahosted.org/tinykdump/
More information here: https://fedorahosted.org/tinykdump/


''Knowledge prerequisite:'' Python, kernel programming (desired)
''Knowledge prerequisite'': Python, kernel programming (desired)


''Skill level:'' intermediate (programming)
''Skill level'': intermediate (programming)


''Contacts:'' [[User:caiqian|CAI Qian]]
''Contacts'': [[User:caiqian|CAI Qian]]


''Mentor(s):'' [[User:caiqian|CAI Qian]]
''Mentor(s)'': [[User:caiqian|CAI Qian]]


''Notes:''
''Notes'':
Rough roadmap:
Rough roadmap:
* Implement tinykdump daemon to be included in Fedora.
* Implement tinykdump daemon to be included in Fedora.
Line 74: Line 84:
* Currently, pstore only log kernel messages for panic and Oops. Patches are needed to support logging of kdump kernel and initramfs console output.
* Currently, pstore only log kernel messages for panic and Oops. Patches are needed to support logging of kdump kernel and initramfs console output.


=== Improve Fedora Review ===
=== Implement MIPS bits to packages ===
 
''Status'': Proposed
 
''Summary of idea'': Some packages are missing implementation bits for MIPS architecture. The goal of this project is implementing and posting them upstream.
 
''URL'': https://fedoraproject.org/wiki/Architectures/MIPS
 
''Knowledge prerequisite'': Packaging, Python, C
 
''Skill level'': intermediate
 
''Contacts'': [[User:mtoman|Michal Toman]]
 
''Mentor(s)'': [[User:mtoman|Michal Toman]]
 
''Notes'':
The following packages are in question:
* '''java''' - builds on 32-bit MIPS but does not work, dies with SIGILL
* '''redhat-lsb''' - misses assembly bits for MIPS
* '''anaconda/blivet''' - completely MIPS unaware
* '''valgrind''' - no FPXX support on 32-bit MIPS, builds on mips64el but does not work
* '''elfutils''' - unwinding is not supported on MIPS
* '''u-boot''' - build working MIPS images
* ... there are more but these are the most painful
 
This is obviously too much for a single project, we are going to agree on a reasonable subset.
 
''Expected outcome'':
* Better MIPS support in upstream projects and Fedora packages
* Learn about MIPS architecture
* Learn to communicate with upstreams
 
== Idea list for Fedora Community Operations and Infrastructure ==
 
=== Fedora Infrastructure Web Application Development: '''Community Operations (CommOps)'''===
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| '''Community Operations''' (CommOps) || #fedora-commops || [https://fedoraproject.org/wiki/CommOps CommOps Wiki]
||
* [[User:decause | Remy DeCausemaker]] (decause)
<!-- * [[User:Jflory7 | Justin W. Flory]] (jflory7) -->
* [[USER:corey84 | Corey Sheldon]] (linux-modder)
|| The rise of DevOps has been swift. Sysadmins are increasingly instrumenting and integrating automated systems to stand up and maintain their infrastructure. This same approach can be taken to support community infrastructure in a distributed and automated fashion, that doesn't force people to choose between using their precious volunteer time to "build things" or "build communities that build things." The community operations team works across numerous technologies, and interest areas in Fedora, including  Messaging, Storytelling, Fedora Badges, Fedora Hubs, Wiki, Culture, Metrics, Voting, and other miscellaneous topics. It is important to note that CommOps team members are generalists, and the strengths and interests of individual applicants will determine the precise nature of your work. Enthusiasm for FOSS culture and community organization, and effective communication skills are most important. Specific deliverables can include automated metrics gathering, real-time messaging integration with Fedora hubs, and other big-data analysis and visualization. Tools are primarily written in python, and utilize libraries such as fedmsg, numpy, pandas, pygals, flask, sqlalchemy. We also leverage other web technologies like HTML5 and Javascript, and frameworks such as bootstrap and handlebars to deliver these metrics.
 
Your internship with this project could also involve any or all of the following:
 
* Web testing and bug reporting / triaging
* Content development and syndication
* Writing for the web and print
* Collaboration with Fedora Council and Leadership on Project Objectives and Initiatives
* Volunteer Coordination and Organizing
* Campaign development and implementation
* Advocacy and Messaging
 
Required:
* Effective Communication Skills; written and verbal, synchronous and asynchronous.
* Passion for Free/Open Source Software and Free Culture
* Self-directed and Curious nature
* Experience writing for the web (Content only is ok, HTML/CSS even better)
* Experience publishing and/or syndicating content via Social Media
* Experience working in teams, or community organizing
* Basic Web development/design skills
 
Bonus Skills:
* Basic multimedia development skills
* Sysadmin/Devops skills
* programming/scripting skills
|-
|}
 
=== Fedora Infrastructure Web Application Development: '''Fedora Hubs''' ===
 
{|
| Fedora Infrastructure Web Application Development: '''Fedora Hubs''' || #fedora-hubs ||
* [[Infrastructure | Fedora Infrastructure Team]]
* [https://fedoraproject.org/wiki/Fedora_Hubs Fedora Hubs Wiki]
||
* [[User:lmacken | Luke Macken]] (lmacken)
* [[User:decause | Remy DeCausemaker]] (decause)
* [[USER:corey84 | Corey Sheldon]] (linux-modder)
||
Fedora has been in the process of creating a new web presence for all of the Fedora users, subprojects, and communities. We also plan to integrate some of the features of this system with the [https://developer-phracek.rhcloud.com prototype] of the Fedora Developer Portal, which is targeted at helping general developers use Fedora.  While the Hubs project itself is aimed at Fedora contributor circles, the reusable features will allow the Portal to use this work to speak to general developers who may not have an interest in working in the Fedora community, but want to connect with community members for advice, best practices, or to generate interest in ''their'' upstream project.


''Status:'' Proposed - draft
Several of the principal app developers in the Fedora Engineering team will be working together with you on this project during the GSoC term.  You'll participate directly with team members daily on core features of Hubs as well as integration with the Portal.  This is a great opportunity both for regular mentorship and for being deeply involved in an exciting and fast-moving project with the Fedora team.


''Summary of idea:'' Every package that is included into Fedora needs to go through a review to ensure it matches the [[Packaging:Guidelines]]. [https://fedorahosted.org/FedoraReview/ Fedora Review] is a tool to help with the review. It needs constant development to be updated for changes in the guidelines. Also there is currently no process to ensure that existing packages adhere to the packaging guidelines. This project is meant to improve this.
Working on this project could involve any of the following:
* Adding new features to the web frontend
* Adding new capabilities to the backend
* Writing and deploying new widgets
* Triaging and processing new widget ideas submitted by the community at large.
* Implementing existing (and thoroughly detailed) mockups from previous UI/UX interns and team members.


''Knowledge prerequisite:'' Python 2&3 programming skills
Skills:
* HTML/Javascript/CSS
* Basic Python a plus
* Bonus: Experience with Bootstrap, jinja templates, Fedmsg, datanommer/grepper, or other fedora infrastructure projects a HUGE plus.


''Skill level:'' intermediate (programming)
When applying to this project, it may be useful to review the designers' blogs about the projects' design here:


''Contacts:'' [[User:Leamas|Alec Leamas]], [[User:Till|Till Maas]]
Fedora Developer Portal
* http://blog.linuxgrrl.com/2015/09/15/fedora-developer-website-design/


''Mentor(s):'' [[User:Till|Till Maas]]
Fedora Hubs
* http://blog.linuxgrrl.com/category/fedora-hubs
* https://meghanrichardson.wordpress.com/


''Notes:''
A video overview of the Hubs project is available here:
Possible tasks:
http://blog.linuxgrrl.com/2015/07/01/fedora-hubs-update/
|-
|}


* Make Fedora Review PEP8 compliant, fix its current test cases
=== Fedora Infrastructure Web Application Development: '''Pagure'''===
* Help running Fedora Review regularly for existing packages e.g., updating the Jenkins continuous builds and/or integrate it into [[Taskotron]]
{| tableclass="t1" class="sortable"
* Add static code checker support to Fedora Review (e.g. with [https://git.fedorahosted.org/git/csmock.git csmock])
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
* Build a web service mockup supporting the review process [http://fedoraproject.org/wiki/Package_Review_Process] replacing current bugzilla workflow.
|-
| '''Pagure''' || #fedora-apps || [https://pagure.io Pagure project] ||  [[User:pingou | Pierre-Yves Chibon]] (pingou) || Pagure is a forge written in python and offering the possibility of self-hosting projects while still using the now well-know fork and pull-request contribution model. While being similar to other forge such as GitHub or GitLab it is also pretty different for example it does not namespace projects under usernames with the idea that projects should not belong to a single person but to a community.


=== Enhance Fedora build setup ===
Your internship with this project could also involve any or all of the following:
''Status:'' Proposed - draft


''Summary of idea:'' Fedora uses the [http://koji.fedoraproject.org Koji] build system with GIT as a source. Plugings/scripts are needed to allow package maintainer to be able to use own branches without accidently deleting the source of published RPMs.
* Web testing and bug reporting / triaging
* Content development and syndication
* Participating in the effort to make of pagure the official front-end to Fedora's packages git repositories (currently being the read-only cgit)
* Implementing private projects in pagure
* Figuring out how/if pagure can be a front-end for Fedora's git repo now that they are namespaced (to offer more than just rpms, for example docker containers)


''Knowledge prerequisite:'' Python programming skills, ideally some packaging knowledge
Required:
* Effective Communication Skills; written and verbal, synchronous and asynchronous.
* Passion for Free/Open Source Software and Free Culture
* Self-directed and Curious nature
* Experience with Flask, javascript and HTML
* Experience with git
* Sysadmin/Devops skills


''Skill level:''  intermediate (programming), high (understanding/analysing code, GNU/Linux)
Bonus Skills:
* Previous experience with Pagure
* Experience with developing APIs and CLIs using it
|-
|}


''Contacts:'' [[User:Till|Till Maas]], [[User:Ausil|Dennis Gilmore]], {{fpchat|#fedora-releng}}
== Idea list for Fedora Atomic GSoC 2016 ==


''Mentor(s):''[[User:Till|Till Maas]], [[User:Ausil|Dennis Gilmore]]
This idea list comes from the [http://www.projectatomic.io/community/gsoc Project Atomic] website. The most up-to-date version is there.


''Notes:''
Rough roadmap:
* Make select [https://fedorahosted.org/rel-eng/ releng scripts] PEP8 compliant/python3 ready
* Make other python tools PEP8 compliant, python3 ready:
** [https://fedorahosted.org/fedpkg/ fedpkg]
** [https://git.fedorahosted.org/cgit/mash/ mash]
** [https://fedorahosted.org/rpkg/ rpkg]
* Become familiar with the Fedora packaging workflow, maybe by packaging some software
* Learn how to interface koji and write a script to get a mapping of git commit ID to package build (name, version, release)
* Write a koji plugin to enforce that pkgs can be only built from the right GIT branch for each build target (might need improvements to koji's plugin interface as well): https://fedorahosted.org/rel-eng/ticket/5843
* Write a fedmsg service/cronjob to regularly tag sucessful builds in GIT: https://fedorahosted.org/rel-eng/ticket/5856
* Help with koji2


=== Improve Sigul Signing Server ===
=== Next-generation Super Privileged Container ===  
 
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io]
||
* [[User:walters | Colin Walters]] (walters)
* [[User:gscrivano | Giuseppe Scrivano]] (gscrivano)
|| Description


''Status:'' Proposed - draft


''Summary of idea:'' The [https://fedorahosted.org/sigul/ Sigul] signing server is used by release engineering to [[Release_package_signing|sign Fedora RPMs]] when [[pushing fedora updates]]. There are two major problems that make it hard to release updated packages in a timely manner: It crashes and it cannot be used simultaneously.
* [https://github.com/projectatomic/atomic/issues/298 Next generation super-privileged containers]: Improve building, managing, and updating these container images]


''Knowledge prerequisite:'' Python programming skills, ideally some background knowledge about GPG, security and networking
Difficulty: Advanced


''Skill level:'' intermediate (programming), high (understanding/analysing code, GNU/Linux)
Required skills:  
* C programming
* Python programming
* Docker and/or runC experience


''Contacts:'' [[User:Till|Till Maas]], [[User:Ausil|Dennis Gilmore]], [[User:ralph|Ralph Bean]], {{fpchat|#fedora-releng}}
Bonus Skills:
* Golang programming
* SELinux knowledge


''Mentor(s):'' [[User:Till|Till Maas]], [[User:Ausil|Dennis Gilmore]], [[User:ralph|Ralph Bean]]
Expected outcomes
* Implement ability for user to install flannel, etcd, and other bootstrap containers and manage them easily
* New super-priv containers are accepted into planned design of Atomic Host
* Learn how container security works
* Learn advanced SELinux hackery
* Learn how to manage container dependances
|}


''Notes:''
=== Atomic Host package layering ===
Rough roadmap:
* To test whether everything works, a test instance needs to be setup. This is rather complex because it requires interaction with [[koji]]. Maybe it is possible to add a test instance to [[Infrastructure]] that can use the koji staging system, but the latter is not fully functional right now.
* Debug why sigul hangs sometimes when using the [https://git.fedorahosted.org/cgit/sigul.git/tree/src/client.py#n1090 sign-rpms] command (called by <code>--batch-size</code> greater than one with <code>sigulsign_unsigned.py</code>
* Enable sigul to process multiple tasks at once, e.g. sign for multiple releases or architectures at once.
* Fix other bugs/issues, examples:
** Currently [http://linux.die.net/man/8/logrotate logrotate] does not make sigul properly re-open its logfiles, which is why sigul does not log to the new logfile after rotation. This needs to be fixed in sigul
** The GPG defaults in sigul might not be up-to-date, they should be reviewed and improved if necessary
** Add support for e.g. signing and revoking GPG keys, to build a local web of trust between [https://getfedora.org/keys/ Fedora release keys]


Ressources:
{| tableclass="t1" class="sortable"
* [https://git.fedorahosted.org/cgit/releng/tree/scripts/sigulsign_unsigned.py Script used by rel-eng to run sigul]
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
* [https://git.fedorahosted.org/cgit/sigul.git/tree/doc/protocol-design.txt Protocol description]
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io]
||
* [[User:walters | Colin Walters]] (walters)
* [[User:gscrivano | Giuseppe Scrivano]] (gscrivano)
|| Description


=== AskFedora UX/UI & Functionality Overhaul ===
* [https://github.com/projectatomic/rpm-ostree/pull/107 Atomic Host package layering]: Improve the package layering design, support more RPMs, ensure %post scripts are safe, etc.]


''Status:'' Proposed - draft
Required:
* C programming
* Fedora or other Linux


''Summary of idea:''
Bonus Skills:
* Knowledge of RPM packaging
* Experience working in Linux distributions


[https://ask.fedoraproject.org/  AskFedora] is a community knowledge base and support forum and designed to be the primary place for community support in Fedora. It is powered by Askbot, Django based web application. The UI and the UX for AskFedora needs overhaul to give it some uniformity with the current Fedora websites. There may also be changes to be done in Askbot itself and have possibility of being integrated upstream. We aim to achieve results similar to what [http://askubuntu.com/ Ask Ubuntu] has achieved, however Ask Ubuntu is not based on Askbot and similar theming techniques can't be applied. Discussions are open for this.
Libraries and Software:
* rpm-ostree, libhif


'' But why?: ''Over the years of its existence, AskFedora's popularity has increased and there are 11,000+ questions that have been asked on the website and has 12,500+ contributors as of today (out of which quite a few are active). We think, it really needs to 'look good' and 'provide a better user experience' now.
Difficulty Level:
* Advanced


''Status right now: '' Mockups during the last Design Fedora Activity Day (FAD) 2015 were done. Checkout [https://suchakra.wordpress.com/2015/01/20/ask-fedora-ux-redesign-updates-1/ this] and [https://suchakra.wordpress.com/2015/01/21/ask-fedora-ux-redesign-updates-2/ this] blogpost for latest updates on mockups. An [http://askbotstg-suchakra.rhcloud.com/questions/  openshift instance] has also been created and source for testing [https://github.com/fedoradesign/askbot-test repository] is available for setting up your own staging instance.
Expected outcomes
* Ability to layer debugging, bootstrap, and other packages
* Learn how OStree images work
* Learn packaging security practices and theory
|-
|}


''Knowledge prerequisites:'' Front-end (HTML/CSS/JS) development, UI/UX design experience, some knowledge of Django/Python
=== Bootstrap with gpgcheck in kickstart ===


''Skill level:'' Beginner/Intermediate
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io]
||
* [[User:jberkus | Josh Berkus]] (jberkus)
* [[User:gscrivano | Giuseppe Scrivano]] (gscrivano)
* [[User:corey84 | Corey Sheldon]] (linux-modder)
|| Description


''Contacts:'' kushal at fedoraproject dot org, suchakra at fedoraproject dot org
* [https://github.com/projectatomic/rpm-ostree/issues/190 Bootstrap with gpgcheck in kickstart]: Add a way for importing a GPG key from the kickstart `ostreesetup`  command before the download starts. [https://docs.fedoraproject.org/en-US/Fedora/23/html/Installation_Guide/appe-kickstart-syntax-reference.html "ostreesetup" is described here]


''Mentor(s):'' [[User:Kushal | Kushal Das]], [[User:Suchakra | Suchakra]]


''co-Mentor(s):'' [[User:Sarupbanskota | Sarup Banskota]]
Required:
* Ability to use kickstart images
* Experience with virt helpful
* Fedora or other Linux Experience


Libraries and Software:
* kickstart
* gpg
* virt
* RPM-OStree


TL;DR The infra and some ideas for testing is all ready, we need someone to improve AskFedora's UI/UX.
Difficulty Level:
* Intermediate


=== Glitter Gallery Improvements ===
Expected outcomes
* Ability to kickstart atomic images with full gpg support working
* Improved software supply chain hygiene for project atomic
* Learning how secure provisioning works
* Learning how to get code merged upstream
|-
|}


''Status:'' Proposed - draft
=== Improve ability to monitor running/canceled transactions ===


''Summary of idea:''  
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io]
||
* [[User:jberkus | Josh Berkus]] (jberkus)
* [[User:gscrivano | Giuseppe Scrivano]] (gscrivano)
|| Description


[[Design/GlitterGallery | GlitterGallery]] is  GitHub for designers - being developed by and for the Fedora design team, but hoping to be useful to all designers. It's a web app that allows designers and artists to create, share, and collaborate, backed by Git for version control, and intended to be part of a FLOSS design suite that includes
* [https://github.com/projectatomic/rpm-ostree/issues/210 Improve ability to monitor running/canceled transactions]: The rpm-ostree client termination doesn't block the command execution on the rpm-ostreed. This will cause new  rpm-ostree clients to fail immediately because there is a transaction in progress. Change rpm-ostree to be notified of the status of the current transaction and possibly attach to it.
* [http://sparkleshare.org Sparkleshare] - a git-backed, Dropbox like system that will automatically check in and push files in project directly to a shared git repo
* [https://github.com/garrett/magicmockup Magic Mockup] - a javascript library you can insert into an SVG of mockups to enable interactive, click-through mockups ([http://blog.linuxgrrl.com/2011/08/12/interactive-svg-mockups-with-inkscape-javascript/ see a demo here]
* [http://inkscape.org Inkscape] is our preferred design tool of choice


Last year, two GSoC students worked on a number of critical improvements to GlitterGallery, but there is still plenty of work to be done.
Required:
* Public gallery of works; currently the app requires a user to login and to follow other users before they can see work other than their own. They can also view direct links to works. A public gallery can be used to browse and explore works without having to be logged in.
* C programming experience
* Better design suite integration, which could mean better support for local editing with SparkleShare; Inkscape integration through an extension; and/or support for creating and sharing interactive SVGs with Magic Mockup
* Ability to create Virtual Machines (VMs) or have access to spare PC nearby for testing.
* Better commenting - the current commenting system is basic, and there's lots of ways it could be improved, including thread support, pingback support, the ability to reference a specific region of a design in a comment
* Fedora or other Linux Experience
* External issue tracking - Glitter Gallery has an integrated issue tracker, but it would be useful to also be able to integrate with external bug/issue trackers such as GitHub and Bugzilla.
* Enhanced history view - (see https://github.com/glittergallery/GlitterGallery/issues/187)
* Your own ideas


''Knowledge prerequisites:'' git, Ruby on Rails, front-end (HTML/CSS/JS) development, design experience would be great but optional
Bonus Skills:
* Experience with RPM packaging


''Skill level:'' Intermediate
Libraries and Software:
* rpm-ostree


''Contacts:'' emichan at fedoraproject dot org, sarupbanskota at fedoraproject dot org
Difficulty Level:
* Intermediate


''Mentor(s):'' [[User:Emichan | Emily Dirsh]], [[User:Sarupbanskota | Sarup Banskota]], [[User: Rohitpaulk | Rohit Paul Kuruvilla]]
Expected outcomes
* Ability for project to better understand transactions happening in the deamon
* Ability for project to re-attach and get transaction status
* Understand RPM-OSTree upgrade model and how tree transactions work
* Learn how to work with upstreams
|-
|}


''Notes:'' The [https://github.com/glittergallery/GlitterGallery GlitterGallery repository] is hosted on GitHub.
=== Support for end-of-life notification ===


=== Multimonitor wallpaper submission and download for Nuancier===
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io]  || [[User:jberkus | Josh Berkus]] (jberkus) || Description


''Status:'' Proposed
* [https://github.com/projectatomic/rpm-ostree/issues/142 Support for end-of-life notification]: Add support for having an `end-of-life` notification to inform users if a particular branch is not supported anymore.


''Summary of idea:'' Purpose for this project is to extend [https://apps.fedoraproject.org/nuancier/ Nuancier], Fedoras supplemental wallpaper submission application with an system that allow to submit and downlad wallpapers for multi-monitor setup.
Required:
* C programming experience
* Fedora or other GNU/Linux Experience


Knowledge prerequisite: some Python knowledge
Bonus Skills:
* Advanced C programming experience
* experience with RPM packaging


''Skill level:'' starter
Libraries and Software:
* rpm-ostree
* atomic CLI


''Contacts:'' Sirko Kemter gnokii@fedoraproject.org
Difficulty Level:
* Novice


''Mentor(s):'' [[User:Pingou | Pierre-Yves Chibon]], [[User:Gnokii  | Sirko Kemter]]
Expected outcomes
* rpm-ostree and atomic command output explaining when a version of an upgraded tree branch is end of life (EoL)
* feature merged into future releases, and packaged for distribution
* Learn how to work with upstreams and Linux distributions
* Understand how EOL policies and lifecycles work
|-
|}


=== Cockpit UI for Rolekit ===
=== rpm-ostree operation history support ===
''Status:'' Proposed
''Summary of idea:'' The [https://fedorahosted.org/rolekit Rolekit Project] provides a platform API for deploying Server Roles onto a system. Currently, it supports creating a Domain Controller (based on [http://freeipa.org FreeIPA]) or a Database Server (based on [http://www.postgresql.org/ PostgreSQL]). A major component of the Fedora Server is the [http://cockpit-project.org Cockpit Project], a web-based management console for servers. The goal of this effort would be to enhance the Cockpit UI so that an administrator could deploy these Roles using rolekit via the Cockpit web interface.


''Knowledge prerequisites:'' JavaScript (ideally jQuery). Preferred familiarity with D-BUS.
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| '''Fedora Atomic''' || #atomic || [https://projectatomic.io ProjectAtomic.io]  || [[User:jberkus | Josh Berkus]] (jberkus) || Description


''Skill Level:'' Beginner to intermediate
* [https://github.com/projectatomic/rpm-ostree/issues/85 rpm-ostree operation history support]: Add support for `atomic history` to display the transactions history. It should work in a similar way to `yum history`.


''Contacts:'' [[User:Sgallagh|Stephen Gallagher]]
Required:
* C programming experience
* Python Programming experience
* Fedora or other GNU/Linux experience


''Mentor(s):'' [[User:Sgallagh|Stephen Gallagher]]
Bonus Skills:
* Advanced C programming experience
* Advanced Python programming experience
* Ability to work with Upstreams


''Success Conditions:'' A user of the Cockpit UI must be able to deploy a Domain Controller while providing the minimum set of necessary information to the UI. The UI must optionally allow more advanced settings to be selected. The UI must also provide a link post-deployment that allows the user to browse to the Domain Controller administration UI. Providing the same functionality for the Database Server role would be bonus functionality for this project, provided that the Domain Controller is completed early.
Difficulty Level:
* Intermediate


=== Cockpit support for systemd timers ===
Expected outcomes
''Status'': Proposed Summary of idea: systemd provides timers for calendar time events and monotonic time events (http://www.freedesktop.org/software/systemd/man/systemd.timer.html, https://wiki.archlinux.org/index.php/Systemd/Timers). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. The goal of this effort would be to enhance the Cockpit UI so that an administrator could deploy these Roles using rolekit via the Cockpit web interface. Some preliminary designs for timers in Cockpit exist at https://trello.com/c/1B2lZViZ/74-timers-and-cron, although these are just intended as guidelines to get started.
* Duplication of support for history in the atomic command, similar to "yum history"
* Strong command history and output on the system, possibly in systemd journal
|-
|}


''Knowledge prerequisites'': JavaScript (ideally jQuery). Preferred familiarity with D-BUS.
=== Support Metalink for OSTree ===


''Skill Level'': Beginner to intermediate
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| '''Fedora Atomic''' || #atomic || [https://projectatomic.io ProjectAtomic.io] 
||
* [[User:jberkus | Josh Berkus]] (jberkus)
* [[User:gscrivano | Giuseppe Scrivano]] (giuseppe)
|| Description


''Contacts'': [[User:Sgallagh|Stephen Gallagher]]
* [https://bugzilla.gnome.org/show_bug.cgi?id=729388 Support metalink for OSTree]: Add support for metalink files and support downloads from a list of mirrors and fetch objects from multiple sources.


''Mentor(s)'': Dominik Perpeet, [[User:Sgallagh|Stephen Gallagher]]
Required:
* C programming experience
* Metalink experience
* Experience working with RPM packaging


''Success Conditions'': A user of the Cockpit UI must be able to view existing timers, edit existing ones or create new timers while providing the minimum set of necessary information to the UI. The UI must optionally allow more advanced settings to be selected.
Bonus Skills:
* Advanced C programming experience
* Ability to work with Upstreams


=== Docker Volume Support in Cockpit ===
Difficulty Level:
''Status'': Proposed Summary of idea: Docker (https://www.docker.com/) allows building, running, and sharing of software in containers. A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. Docker is already supported in Cockpit, including features such as downloading images, running/stopping/deleting containers, exposing additional ports, inspecting console output as well as linking containers. The goal of this effort would be to enhance the Cockpit UI so that an administrator can use Docker 'Data volumes' (http://docs.docker.com/userguide/dockervolumes/) via the Cockpit web interface. Some preliminary designs for Docker Volume Support in Cockpit exist at https://trello.com/c/4juwxCaE/94-docker-volume-support, although these are just intended as guidelines to get started.
* Intermediate


''Knowledge prerequisites'': JavaScript (ideally jQuery). Preferred familiarity with D-BUS.
Expected outcomes
* Ability to use a list of mirrors for OSTree upgrade
* Ability to fetch trees in parallel
|-
|}


''Skill Level'': Beginner to intermediate
=== Drop privileges for HTTP fetches ===


''Contacts'': [[User:Sgallagh|Stephen Gallagher]]
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| '''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io] 
||
* [[User:jberkus | Josh Berkus]] (jberkus)
* [[User:gscrivano | Giuseppe Scrivano]] (giuseppe)
|| Description


''Mentor(s)'': Dominik Perpeet, [[User:Sgallagh|Stephen Gallagher]]
* [https://bugzilla.gnome.org/show_bug.cgi?id=730037 Drop privileges for HTTP fetches]: The HTTP fetcher code is running in the same process of OSTree.  Move the HTTP fetcher code to another process with less privileges than the main process.


''Success Conditions'': A user of the Cockpit UI must be able to create, view and (to a sensible extent) edit Docker 'Data Volume Containers' while providing the minimum set of necessary information to the UI. It should also be possible to select host directories or host files as Data Volumes. The UI must optionally allow more advanced settings to be selected. Optionally this can be extended by further functionality, such as backup, restoration or migration of data volumes.
Required:
* C programming experience
* SELinux knowledge


=== Shumgrepper/summershum ===
Bonus Skills:
* Advanced C programming experience
* libsoup experience helpful
* Advanced SELinux Experience
* Ability to work with Upstreams


''Status:'' Proposed
Difficulty Level:
* Intermediate


''Summary of idea:'' Finish and deploy the shumgrepper project
Expected outcomes
* OSTree uses a different process for fetching data over HTTP
* Main OSTree process communicates through Inter Process Communication (IPC) with fetcher process
* Fetcher confined to write-only in a temporary file
|-
|}


''Knowledge prerequisite:'' python, flask, sqlalchemy and some system administration
=== Support kpatch ===


''Skill level:'' Intermediate
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io] 
||
* [[User:jberkus | Josh Berkus]] (jberkus)
* [[User:gscrivano | Giuseppe Scrivano]] (giuseppe)
* [[ User:corey84 | Corey Sheldon]] (linux-modder)
|| Description


''Contacts:'' [[User:pingou|Pierre-Yves Chibon]]
* [https://github.com/projectatomic/rpm-ostree/issues/118 Support kpatch]: Support live update for the kernel without rebooting or restarting any processes.


''Mentor(s):'' [[User:pingou|Pierre-Yves Chibon]] [[User:ralph|Ralph Bean]]


''Notes:'' shumgrepper was started last year and offers an API to query the data stored by summershum. This data corresponds to the md5, sha1, sh256 and sha512 of every files in every packages in Fedora, allowing to easily find out files duplicated in multiple packages.
Required:
* C programming experience
* Python programming experience
* Basic knowledge of D-Bus


Dev instance: http://209.132.184.120/
Bonus Skills:
* Advanced C programming experience
* Advanced Python programming experience
* Advanced knowledge of D-Bus
* Familiarity with kpatch


=== fresque ===
Difficulty Level:
* Intermediate


''Status:'' Proposed
Expected outcomes
* Partial live update feature integrated into Fedora Atomic Host
* Learn to implement live kernel update
* Learn to work with upstream project integration
* Understand RPM-OSTree packaging and images
|-
|}


''Summary of idea:'' Fedora Review Server: take package reviews off bugzilla
=== Automatic Atomic Host Updates ===


''Knowledge prerequisite:'' python, flask, sqlalchemy and some ideas about packaging
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Fedora Atomic'' || #atomic || [https://projectatomic.io ProjectAtomic.io] 
||
* [[User:walters| Colin Walters]] (walters)
* [[User:gscrivano | Giuseppe Scrivano]] (giuseppe)
|| Description


''Skill level:'' Intermediate
* [https://github.com/projectatomic/rpm-ostree/issues/177]: implement a service that automatically upgrades the system when a new  image is available. If the system is not restarting correctly, the  rollback to the previous working version.


''Contacts:'' [[User:abompard|Aurélien Bompard]]
Required:
* C programming experience
* Python programming experience
* Basic knowledge of systemd
* Ability to create and run VMs.


''Mentor(s):'' [[User:abompard|Aurélien Bompard]]
Bonus Skills:
* Advanced C programming experience
* Advanced Python programming experience
* Familiarity with RPM packaging


''Notes:'' fresque aims at providing a dedicated application for package (RPM) reviews. This would be integrate with a git backend and integrates the fedora-review tool for automatic testing of new reviews and changes.
Difficulty Level:
* Intermediate


=== Patch Tracker ===
Expected outcomes
''Status:'' Proposed
* Automated updates integrated into Fedora Atomic Host
* Learn how RPM-OStree packaging and images work
* Develop ability to contribute to Atomic Host
|-
|}


''Summary of idea:'' One of Fedoras goals as a distribution is [[staying close to upstream projects]]. However, sometimes it is necessary for Fedora packages to deviate from upstream, for example if upstream is dead or if a fix is backported to an older release. Also other distributions sometimes carry patches that are not submitted upstream but fix bugs also present in Fedora packages. Therefore it is interesting for Fedora packagers or packagers of other distributions to get easy access to information about patches. Fedora already contains a web app, that shows information about patches in Fedora, for example the [https://apps.fedoraproject.org/packages/ipython/sources/ patches for the ipython package]. However, this is not a designated app to make the patch information as useful as possible and does not contain support for other distros. Debian used to provide a [https://anonscm.debian.org/cgit/users/seanius/patch-tracker.git/tree/ patch tracker] that is currently offline due to a missing maintainer. For other distributions, there only [http://oss-security.openwall.org/wiki/distro-patches manual methods] to find out about patches. Therefore the idea is to create a web application with the purpose to make it easier for others to find patches in Fedora and to make it easier for Fedora maintainers to find patches in other distributions.
== Idea list for Cockpit ==
FedoraCreate/adjust a webapp to track patches that are used in Fedora and other distributions


''Knowledge prerequisite:'' Python programming, web application development


''Skill level:'' Intermediate
=== Cockpit support for systemd timers ===


''Contacts:'' [[User:till|Till Maas]]
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Cockpit'' || #cockpit || [http://cockpit-project.org] 
||
* Dominik Perpeet (dperpeet)
* Peter Volpe (petervo)
|| Description:


''Mentor(s):'' [[User:till|Till Maas]]
* Systemd provides timers for calendar time events and monotonic time events ([http://www.freedesktop.org/software/systemd/man/systemd.timer.html], [https://wiki.archlinux.org/index.php/Systemd/Timers]). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers.


''Notes:''
* Some designs for timers in Cockpit exist at [https://trello.com/c/1B2lZViZ/74-timers-and-cron].
Potential features:
* Show a clear overview for patches in Fedora for a certain package
** Link to bugs that were mentioned, extract key information from the bug
* Allow to get notifications for new patches, e.g. via fedmsg
* Allow to get information about patches for the package in other distros
* Try to figure out if patches are already upstream
* ...


Rough potential roadmap:
Required:
* Get the debian patch tracker running on a test system, maybe with some example debian packages
* JavaScript (ideally jQuery)
* Port it for one example Fedora package
* Fedora or other Linux
* Port it to a modern web framework such as Flask or Pyramid
* Make sure it is PEP8 compliant
* Make it generic to work for Fedora and Debian
* Add feature to patches that are present only in Fedora or Debian
* Add more distros, e.g. OpenSUSE, Arch, Ubuntu, Gentoo
* Add more features


Basic requirements:
Bonus Skills:
* Target platform is RHEL/CentOS7 with EPEL
* Familiarity with D-BUS
* All dependencies should be available on the target platform as RPM packages or possible to be packaged (e.g. requiring newer versions of packages already included in the target platform might not be easily possible)
* Familiarity with Python (2.7)
* It needs to be possible to package the final project for Fedora/EPEL, i.e. there may not be bundled libraries included
* Experience working in Linux distributions
* The code needs to be PEP8 compliant and contain proper docstrings
* Proper automtatic tests should be included to allow meaningful continuous integration


Recommended basic knowledge:
Libraries and Software:
* Know about PEP8, pylint, continuous integration,
* cockpit (http://cockpit-project.org/)
* Understand the different diff formats


=== Better OVAL development tools in OpenSCAP ===
Difficulty Level:
''Status:'' Proposed
* Beginner to intermediate


''Summary of idea:'' The [https://www.open-scap.org OpenSCAP] project implements the Security Content Automation Protocol standards. It provides users with a way to automatically audit their infrastructure. One of the standards is OVAL - Open Vulnerability and Assessment Language - it is the language in which the automated checks are written. Unfortunately the check authors have it tough right now. They have to edit XML files manually, there is no debugger, no static analysis of any sort (like pylint or cppcheck). To make matters worse the OVAL checks are hard to write and the learning curve is steep.
Expected outcomes
* A user of the Cockpit UI is able to view existing timers, edit existing ones or create new timers while providing the minimum set of necessary information to the UI
* The UI optionally allows more advanced settings to be selected
* Functionality of added features is tested via unit and/or integration tests
|-
|}


''Knowledge prerequisites:'' Intermediate C, familiarity with the OpenSCAP project
=== OStree Repositories in Cockpit ===


''Skill Level:'' Intermediate
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Cockpit'' || #cockpit || [http://cockpit-project.org] 
||
* Dominik Perpeet (dperpeet)
* Peter Volpe (petervo)
|| Description:


''Contacts:'' [[User:Mpreisle|Martin Preisler]]
* Cockpit provides an interface for updating the installed software on Atomic systems using rpm-ostree. Admins should be able to examine the OSTree repos enabled on a machine, and add/edit/remove them via Cockpit.


''Mentor(s):'' [[User:Mpreisle|Martin Preisler]]
Required:
* JavaScript (ideally angular)
* Fedora or other Linux


''Success Conditions:'' SCAP content developers are able to interactively debug their checks, they can browse the execution, looking at inputs and outputs of each step. They are able to analyze their OVAL content for common mistakes using the lint-like tool. Such common mistakes include ID mismatches, wrong usage of regexes, ...
Bonus Skills:
* Familiarity with D-BUS
* Familiarity with Python (2.7)
* Familiarity with OSTree
* Experience working in Linux distributions


=== Fix bugs in packages that break compiling as position independent executable ===
Libraries and Software:
* cockpit ([http://cockpit-project.org/])
* rpm-ostree ([https://github.com/projectatomic/rpm-ostree])


''Status:'' proposed
Difficulty Level:
* Beginner to intermediate


''Summary of idea:'' Starting with Fedora 23, Fedora will try to ship all binaries as [http://en.wikipedia.org/wiki/Position-independent_code position independent executable] to benefit from the [http://en.wikipedia.org/wiki/Address_space_layout_randomization address space layout randomization (ASLR)] of the Linux kernel to increase the security of Fedoras packages. However, not all code/packages are ready for this, therefore the [[Changes/Harden_all_packages_with_position-independent_code|current change proposal]] plans to handle these cases by just disabling this improvement for affected packages. Ideally all packages would be fixed to not require it to be disabled, this is where you can help.
Expected outcomes
* A user of the Cockpit UI is able to examine the OSTree repos enabled on a machine, and add/edit/remove them.
* Functionality of added features is tested via unit and/or integration tests
|-
|}


''Knowledge prerequisite:'' low-level programming skills, compiler development, build systems configuration, maybe python programming skills
=== OStree Rebases in Cockpit ===


''Skill level:'' intermediate to high, depending on the actual problem
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Cockpit'' || #cockpit || [http://cockpit-project.org] 
||
* Dominik Perpeet (dperpeet)
* Peter Volpe (petervo)
|| Description:


''Contacts:'' [[User:Orion|Orion Poplawski]], [[User:till|Till Maas]], [[User:halfie|Dhiru Kholia]], {{fpchat|#fedora-devel}}
* Cockpit provides an interface for updating the installed software on Atomic systems using rpm-ostree. Admins should be able to 'rebase' to a different operating system channel or timeline via Cockpit.


''Mentor(s):'' [[User:Orion|Orion Poplawski]], [[User:till|Till Maas]], [[User:halfie|Dhiru Kholia]]
Required:
* JavaScript (ideally angular)
* Fedora or other Linux


''Notes:''
Bonus Skills:
Currently not all Fedora packages were rebuilt with the new hardening flags, therefore it is not yet clear how many packages need to be fixed. However, it might be that there are also some languages that need to be adjusted in general to produce position-independent code (for example go), so adding support to (some) of these languages would be in the scope of this project as well, after all build failures were handled. Additionally Fedora tools like [https://fedorahosted.org/FedoraReview/ Fedora Review] and [[Taskotron]] should be adapted to properly report packages that are not built with the hardening flags for example by running <nowiki>checkseck</nowiki> on all created executables.
* Familiarity with D-BUS
* Familiarity with Python (2.7)
* Familiarity with OSTree
* Experience working in Linux distributions


Example problems that block some packages to be built with the right flags:
Libraries and Software:
* https://bugzilla.redhat.com/show_bug.cgi?id=1199775
* cockpit ([http://cockpit-project.org/])
* rpm-ostree ([https://github.com/projectatomic/rpm-ostree])


Helpful documentation:
Difficulty Level:
* [[Using Mock to test package builds]]
* Beginner to intermediate


=== Enhance PostgreSQL GSSAPI Support ===
Expected outcomes
* A user of the Cockpit UI is able to be able to 'rebase' to a different operating system channel or timeline via Cockpit.
* Functionality of added features is tested via unit and/or integration tests
|-
|}


''Status:'' proposed
=== Setup a FreeIPA server in Cockpit using Rolekit ===


''Summary of idea:'' The Fedora Server Edition includes a Database Server Role powered by a PostgreSQL database. In order to integrate it better with Fedora Server's Domain Controller, we want to enhance the GSSAPI authentication and communication in the server.
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| ''Cockpit'' || #cockpit || [http://cockpit-project.org] 
||
* Dominik Perpeet (dperpeet)
* Peter Volpe (petervo)
|| Description:


''Knowledge prerequisite:'' C Programming, Kerberos/GSSAPI
* FreeIPA is a domain and directory server. This task implements a UI for setting it up.


''Skill level:'' intermediate to high (probably grad-student level)
* The Rolekit Project provides a platform API for deploying Server Roles such as FreeIPA onto a system. Currently, it supports creating a Domain Controller (based on FreeIPA) or a Database Server (based on PostgreSQL). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. The goal of this effort would be to enhance the Cockpit UI so that an administrator could deploy the FreeIPA role.


''Contacts:'' [[User:Sgallagh|Stephen Gallagher]], [[User:Simo|Simo Sorce]]
* Some designs for rolekit integration into Cockpit exist at [https://trello.com/c/7CZqL9AQ/54-rolekit-integration-for-domain-controller].


''Mentor(s):'' [[User:Simo|Simo Sorce]]
Required:
* JavaScript (ideally jQuery)
* Fedora or other Linux


''Notes:'' This will require modifications to the authentication subsystem as well as the TCP/IP layer of PostgreSQL. It will likely be a very involved project.
Bonus Skills:
* Familiarity with D-BUS
* Familiarity with Python (2.7)
* Experience working in Linux distributions
* Domain or directory experience


=== Tweak specific packages to play well with MIPS architecture ===
Libraries and Software:
* cockpit ([http://cockpit-project.org/])
* FreeIPA ([https://www.freeipa.org/page/Main_Page])
* Rolekit ([https://fedorahosted.org/rolekit/])


''Status:'' proposed
Difficulty Level:
* Intermediate


''Summary of idea:'' We are planning to bootstrap Fedora for MIPS architecture. Even though the majority of packages should build with little to no modifications, there are some challenging packages that will need extra attention.
Expected outcomes
* A user of the Cockpit UI is able to deploy a Domain Controller while providing the minimum set of necessary information to the UI
* The UI allows more advanced settings to be selected
* The UI also provides a link post-deployment that allows the user to browse to the Domain Controller administration UI
|-
|}


''Knowledge prerequisite:'' C or Python Programming, packaging basics, some idea about non-x86 architectures
== Docs ==
=== Anerist ===
{| tableclass="t1" class="sortable"
! Project !! IRC Channel !! Web Page !! Mentor(s) !! Notes
|-
| Docs Project || #fedora-docs || [https://fedoraproject.org/wiki/Docs_Project] || [[User:zoglesby | Zach Oglesby]] (zoglesby) || The Fedora community produces a variety of content suitable for user reference.  Members of the Fedora Project produce documentation in a variety of ways - manpages and code comments from developers, system architecture design and best practices reference material from the infra team; application design, interface design, microservices, buildfarms and more.  All at work meeting the needs of a transparent organization built on open source technologies and open development practices.


''Skill level:'' intermediate to high
Anerist is intended to consume reference materials, in whatever format they are discovered in, and render them to produce a neatly indexed html site with a common style and theme.  To alleviate manual effort in this conversion process, and in the process of 'cycling' translations, the application is event driven, with content regenerated on each change of the sources using CICD technologies.  This design relies on modularized conversion tools, which also allows for programmatically generated content and drop-in custom views of technologies or infrastructure.


''Contacts:'' [[User:Mtoman|Michal Toman]], [[User:Anibal|Anibal Monsalve Salazar]], [[User:wzssyqa|YunQiang Su]] {{fpchat|#fedora-mips}}
We need your help to build this framework.  You'll use python, bootstrap, buildbot, fedmsg, git, and more.


''Mentor(s):'' [[User:Mtoman|Michal Toman]]
Your internship with this project could also involve any or all of the following:


''Notes:'' Possible work areas:
* Exposure to content development workflows.
* kernel
* Mentoring from seasoned sysadmins, veteran technical writers, and free software advocates.
* anaconda
* Learning the Open Source Way, the practice of transparent positive collaboration that forms bedrock of Fedora's Foundations.
* openjdk
*  
* ghc
* ocaml
* erlang
* fpc
* ...


Required:
* general python skills
* experience with generating and rendering ReStructuredText
* familiarity with DocBook, or other structured contextual XML.
* familiarity with Jenkins, buildbot, or similar buildsystems
Bonus Skills:
* UX Design experience
* Free software advocacy
* Extended community participation
* Ownership of amusing hats
|-
|}


== Open Ideas From GSoC 2015 ==
== Open Ideas From GSoC 2015 ==
In addition to the above list of ideas, you may want to check out ideas from previous years and contact the mentors for those projects to see if they're still interested in mentoring someone this year.
''Note'': Do not submit a proposal for an idea from a previous year without contacting the mentor to ensure they will be available to mentor you. '''Without a mentor, proposals will be rejected.'''


Despite the list of ideas, you may want to check out the ideas of the previous years and contact the admins to see if they are still interested in mentoring someone this year.


Previous years:
Previous years:
* [[Summer_coding_ideas_for_2015|2015]]
* [[Summer_coding_ideas_for_2014|2014]]
* [[Summer_coding_ideas_for_2014|2014]]
* [[Summer_coding_ideas_for_2013|2013]]
* [[Summer_coding_ideas_for_2013|2013]]
Line 428: Line 766:
* [[Summer_coding_ideas_for_2008|2008]]
* [[Summer_coding_ideas_for_2008|2008]]


Please: Do not submit a proposal for an idea from a previous year without previously contacting the admin to ensure their will to mentor someone this year. Without mentor, proposals will be rejected.
[[Category:Summer coding]]
 
[[Category:Summer coding 2016]]
[[Category:Summer coding 2016]]

Latest revision as of 18:26, 25 March 2016

Idea.png
Open For Ideas! - This page contains some ideas from last year. This does not mean that they are valid for this year too. We are in the process of cleaning up the page.

Find an idea you like? Want to propose your own? See the GSoC Getting Started Guide.


Students Welcome

If you are a student looking forward to participate the GSoC 2016 with Fedora, please feel free to browse the idea list which is still growing. Do not hesitate to contact the mentors or contributors as indicated in this page for any related clarification. You also should find some like-minded people on the #fedora-summer-coding IRC channel.

If you are new to the Fedora Project, the following material will help you to get started. Additionally, please register in the Fedora Account System (FAS) if you are willing to continue with the Fedora Project. For getting quick help, #fedora-devel can be used for getting help with programming problems.

  1. The Four Foundations of Fedora
  2. Official GSoC Resources
  3. Fedora Documentation
  4. IRC
  5. Development


Supporting Mentors

The following contributors are available to provide general help and support for the GSoC 2016 program (existing contributors, feel free to add yourselves and your wiki page). If a specific project mentor is busy, you can contact one of the people below for short-term help on your project or task.

  1. Remy DeCausemaker
  2. Kushal Das
  3. Haïkel Guémar
  4. Josh Berkus
  5. Luke Macken
  6. Lali Devamanthri

Fedora Atomic Mentors

The following mentors are specifically available for projects related to Fedora Atomic:

  1. Giuseppe Scriviano
  2. Colin Walters
  3. Giuseppe Scrivano
  4. Matthew Barnes


Idea list for GSoC 2016

Implement Tinykdump

Status: Proposed - draft

Summary of idea: Tinykdump is a minimal daemon to capture kernel-based crash dumping (kdump) memory image to usb storage. Compared to the traditional kdump solution, it is,

* more reliable and scalable
* has smaller memory foot-print
* more friendly to kernel developers 

More information here: https://fedorahosted.org/tinykdump/

Knowledge prerequisite: Python, kernel programming (desired)

Skill level: intermediate (programming)

Contacts: CAI Qian

Mentor(s): CAI Qian

Notes: Rough roadmap:

  • Implement tinykdump daemon to be included in Fedora.
  • Submit kernel patches for reserving kdump memory at run-time for community review and inclusion.
  • Currently, pstore only log kernel messages for panic and Oops. Patches are needed to support logging of kdump kernel and initramfs console output.

Implement MIPS bits to packages

Status: Proposed

Summary of idea: Some packages are missing implementation bits for MIPS architecture. The goal of this project is implementing and posting them upstream.

URL: https://fedoraproject.org/wiki/Architectures/MIPS

Knowledge prerequisite: Packaging, Python, C

Skill level: intermediate

Contacts: Michal Toman

Mentor(s): Michal Toman

Notes: The following packages are in question:

  • java - builds on 32-bit MIPS but does not work, dies with SIGILL
  • redhat-lsb - misses assembly bits for MIPS
  • anaconda/blivet - completely MIPS unaware
  • valgrind - no FPXX support on 32-bit MIPS, builds on mips64el but does not work
  • elfutils - unwinding is not supported on MIPS
  • u-boot - build working MIPS images
  • ... there are more but these are the most painful

This is obviously too much for a single project, we are going to agree on a reasonable subset.

Expected outcome:

  • Better MIPS support in upstream projects and Fedora packages
  • Learn about MIPS architecture
  • Learn to communicate with upstreams

Idea list for Fedora Community Operations and Infrastructure

Fedora Infrastructure Web Application Development: Community Operations (CommOps)

Project IRC Channel Web Page Mentor(s) Notes
Community Operations (CommOps) #fedora-commops CommOps Wiki The rise of DevOps has been swift. Sysadmins are increasingly instrumenting and integrating automated systems to stand up and maintain their infrastructure. This same approach can be taken to support community infrastructure in a distributed and automated fashion, that doesn't force people to choose between using their precious volunteer time to "build things" or "build communities that build things." The community operations team works across numerous technologies, and interest areas in Fedora, including Messaging, Storytelling, Fedora Badges, Fedora Hubs, Wiki, Culture, Metrics, Voting, and other miscellaneous topics. It is important to note that CommOps team members are generalists, and the strengths and interests of individual applicants will determine the precise nature of your work. Enthusiasm for FOSS culture and community organization, and effective communication skills are most important. Specific deliverables can include automated metrics gathering, real-time messaging integration with Fedora hubs, and other big-data analysis and visualization. Tools are primarily written in python, and utilize libraries such as fedmsg, numpy, pandas, pygals, flask, sqlalchemy. We also leverage other web technologies like HTML5 and Javascript, and frameworks such as bootstrap and handlebars to deliver these metrics.

Your internship with this project could also involve any or all of the following:

  • Web testing and bug reporting / triaging
  • Content development and syndication
  • Writing for the web and print
  • Collaboration with Fedora Council and Leadership on Project Objectives and Initiatives
  • Volunteer Coordination and Organizing
  • Campaign development and implementation
  • Advocacy and Messaging

Required:

  • Effective Communication Skills; written and verbal, synchronous and asynchronous.
  • Passion for Free/Open Source Software and Free Culture
  • Self-directed and Curious nature
  • Experience writing for the web (Content only is ok, HTML/CSS even better)
  • Experience publishing and/or syndicating content via Social Media
  • Experience working in teams, or community organizing
  • Basic Web development/design skills

Bonus Skills:

  • Basic multimedia development skills
  • Sysadmin/Devops skills
  • programming/scripting skills

Fedora Infrastructure Web Application Development: Fedora Hubs

Fedora Infrastructure Web Application Development: Fedora Hubs #fedora-hubs

Fedora has been in the process of creating a new web presence for all of the Fedora users, subprojects, and communities. We also plan to integrate some of the features of this system with the prototype of the Fedora Developer Portal, which is targeted at helping general developers use Fedora. While the Hubs project itself is aimed at Fedora contributor circles, the reusable features will allow the Portal to use this work to speak to general developers who may not have an interest in working in the Fedora community, but want to connect with community members for advice, best practices, or to generate interest in their upstream project.

Several of the principal app developers in the Fedora Engineering team will be working together with you on this project during the GSoC term. You'll participate directly with team members daily on core features of Hubs as well as integration with the Portal. This is a great opportunity both for regular mentorship and for being deeply involved in an exciting and fast-moving project with the Fedora team.

Working on this project could involve any of the following:

  • Adding new features to the web frontend
  • Adding new capabilities to the backend
  • Writing and deploying new widgets
  • Triaging and processing new widget ideas submitted by the community at large.
  • Implementing existing (and thoroughly detailed) mockups from previous UI/UX interns and team members.

Skills:

  • HTML/Javascript/CSS
  • Basic Python a plus
  • Bonus: Experience with Bootstrap, jinja templates, Fedmsg, datanommer/grepper, or other fedora infrastructure projects a HUGE plus.

When applying to this project, it may be useful to review the designers' blogs about the projects' design here:

Fedora Developer Portal

Fedora Hubs

A video overview of the Hubs project is available here: http://blog.linuxgrrl.com/2015/07/01/fedora-hubs-update/

Fedora Infrastructure Web Application Development: Pagure

Project IRC Channel Web Page Mentor(s) Notes
Pagure #fedora-apps Pagure project Pierre-Yves Chibon (pingou) Pagure is a forge written in python and offering the possibility of self-hosting projects while still using the now well-know fork and pull-request contribution model. While being similar to other forge such as GitHub or GitLab it is also pretty different for example it does not namespace projects under usernames with the idea that projects should not belong to a single person but to a community.

Your internship with this project could also involve any or all of the following:

  • Web testing and bug reporting / triaging
  • Content development and syndication
  • Participating in the effort to make of pagure the official front-end to Fedora's packages git repositories (currently being the read-only cgit)
  • Implementing private projects in pagure
  • Figuring out how/if pagure can be a front-end for Fedora's git repo now that they are namespaced (to offer more than just rpms, for example docker containers)

Required:

  • Effective Communication Skills; written and verbal, synchronous and asynchronous.
  • Passion for Free/Open Source Software and Free Culture
  • Self-directed and Curious nature
  • Experience with Flask, javascript and HTML
  • Experience with git
  • Sysadmin/Devops skills

Bonus Skills:

  • Previous experience with Pagure
  • Experience with developing APIs and CLIs using it

Idea list for Fedora Atomic GSoC 2016

This idea list comes from the Project Atomic website. The most up-to-date version is there.


Next-generation Super Privileged Container

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description


Difficulty: Advanced

Required skills:

  • C programming
  • Python programming
  • Docker and/or runC experience

Bonus Skills:

  • Golang programming
  • SELinux knowledge

Expected outcomes

  • Implement ability for user to install flannel, etcd, and other bootstrap containers and manage them easily
  • New super-priv containers are accepted into planned design of Atomic Host
  • Learn how container security works
  • Learn advanced SELinux hackery
  • Learn how to manage container dependances

Atomic Host package layering

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description

Required:

  • C programming
  • Fedora or other Linux

Bonus Skills:

  • Knowledge of RPM packaging
  • Experience working in Linux distributions

Libraries and Software:

  • rpm-ostree, libhif

Difficulty Level:

  • Advanced

Expected outcomes

  • Ability to layer debugging, bootstrap, and other packages
  • Learn how OStree images work
  • Learn packaging security practices and theory

Bootstrap with gpgcheck in kickstart

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description


Required:

  • Ability to use kickstart images
  • Experience with virt helpful
  • Fedora or other Linux Experience

Libraries and Software:

  • kickstart
  • gpg
  • virt
  • RPM-OStree

Difficulty Level:

  • Intermediate

Expected outcomes

  • Ability to kickstart atomic images with full gpg support working
  • Improved software supply chain hygiene for project atomic
  • Learning how secure provisioning works
  • Learning how to get code merged upstream

Improve ability to monitor running/canceled transactions

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description
  • Improve ability to monitor running/canceled transactions: The rpm-ostree client termination doesn't block the command execution on the rpm-ostreed. This will cause new rpm-ostree clients to fail immediately because there is a transaction in progress. Change rpm-ostree to be notified of the status of the current transaction and possibly attach to it.

Required:

  • C programming experience
  • Ability to create Virtual Machines (VMs) or have access to spare PC nearby for testing.
  • Fedora or other Linux Experience

Bonus Skills:

  • Experience with RPM packaging

Libraries and Software:

  • rpm-ostree

Difficulty Level:

  • Intermediate

Expected outcomes

  • Ability for project to better understand transactions happening in the deamon
  • Ability for project to re-attach and get transaction status
  • Understand RPM-OSTree upgrade model and how tree transactions work
  • Learn how to work with upstreams

Support for end-of-life notification

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Josh Berkus (jberkus) Description

Required:

  • C programming experience
  • Fedora or other GNU/Linux Experience

Bonus Skills:

  • Advanced C programming experience
  • experience with RPM packaging

Libraries and Software:

  • rpm-ostree
  • atomic CLI

Difficulty Level:

  • Novice

Expected outcomes

  • rpm-ostree and atomic command output explaining when a version of an upgraded tree branch is end of life (EoL)
  • feature merged into future releases, and packaged for distribution
  • Learn how to work with upstreams and Linux distributions
  • Understand how EOL policies and lifecycles work

rpm-ostree operation history support

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Josh Berkus (jberkus) Description

Required:

  • C programming experience
  • Python Programming experience
  • Fedora or other GNU/Linux experience

Bonus Skills:

  • Advanced C programming experience
  • Advanced Python programming experience
  • Ability to work with Upstreams

Difficulty Level:

  • Intermediate

Expected outcomes

  • Duplication of support for history in the atomic command, similar to "yum history"
  • Strong command history and output on the system, possibly in systemd journal

Support Metalink for OSTree

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description
  • Support metalink for OSTree: Add support for metalink files and support downloads from a list of mirrors and fetch objects from multiple sources.

Required:

  • C programming experience
  • Metalink experience
  • Experience working with RPM packaging

Bonus Skills:

  • Advanced C programming experience
  • Ability to work with Upstreams

Difficulty Level:

  • Intermediate

Expected outcomes

  • Ability to use a list of mirrors for OSTree upgrade
  • Ability to fetch trees in parallel

Drop privileges for HTTP fetches

Project IRC Channel Web Page Mentor(s) Notes
'Fedora Atomic #atomic ProjectAtomic.io Description
  • Drop privileges for HTTP fetches: The HTTP fetcher code is running in the same process of OSTree. Move the HTTP fetcher code to another process with less privileges than the main process.

Required:

  • C programming experience
  • SELinux knowledge

Bonus Skills:

  • Advanced C programming experience
  • libsoup experience helpful
  • Advanced SELinux Experience
  • Ability to work with Upstreams

Difficulty Level:

  • Intermediate

Expected outcomes

  • OSTree uses a different process for fetching data over HTTP
  • Main OSTree process communicates through Inter Process Communication (IPC) with fetcher process
  • Fetcher confined to write-only in a temporary file

Support kpatch

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description
  • Support kpatch: Support live update for the kernel without rebooting or restarting any processes.


Required:

  • C programming experience
  • Python programming experience
  • Basic knowledge of D-Bus

Bonus Skills:

  • Advanced C programming experience
  • Advanced Python programming experience
  • Advanced knowledge of D-Bus
  • Familiarity with kpatch

Difficulty Level:

  • Intermediate

Expected outcomes

  • Partial live update feature integrated into Fedora Atomic Host
  • Learn to implement live kernel update
  • Learn to work with upstream project integration
  • Understand RPM-OSTree packaging and images

Automatic Atomic Host Updates

Project IRC Channel Web Page Mentor(s) Notes
Fedora Atomic #atomic ProjectAtomic.io Description
  • [1]: implement a service that automatically upgrades the system when a new image is available. If the system is not restarting correctly, the rollback to the previous working version.

Required:

  • C programming experience
  • Python programming experience
  • Basic knowledge of systemd
  • Ability to create and run VMs.

Bonus Skills:

  • Advanced C programming experience
  • Advanced Python programming experience
  • Familiarity with RPM packaging

Difficulty Level:

  • Intermediate

Expected outcomes

  • Automated updates integrated into Fedora Atomic Host
  • Learn how RPM-OStree packaging and images work
  • Develop ability to contribute to Atomic Host

Idea list for Cockpit

Cockpit support for systemd timers

Project IRC Channel Web Page Mentor(s) Notes
Cockpit #cockpit [2]
  • Dominik Perpeet (dperpeet)
  • Peter Volpe (petervo)
Description:
  • Systemd provides timers for calendar time events and monotonic time events ([3], [4]). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers.
  • Some designs for timers in Cockpit exist at [5].

Required:

  • JavaScript (ideally jQuery)
  • Fedora or other Linux

Bonus Skills:

  • Familiarity with D-BUS
  • Familiarity with Python (2.7)
  • Experience working in Linux distributions

Libraries and Software:

Difficulty Level:

  • Beginner to intermediate

Expected outcomes

  • A user of the Cockpit UI is able to view existing timers, edit existing ones or create new timers while providing the minimum set of necessary information to the UI
  • The UI optionally allows more advanced settings to be selected
  • Functionality of added features is tested via unit and/or integration tests

OStree Repositories in Cockpit

Project IRC Channel Web Page Mentor(s) Notes
Cockpit #cockpit [6]
  • Dominik Perpeet (dperpeet)
  • Peter Volpe (petervo)
Description:
  • Cockpit provides an interface for updating the installed software on Atomic systems using rpm-ostree. Admins should be able to examine the OSTree repos enabled on a machine, and add/edit/remove them via Cockpit.

Required:

  • JavaScript (ideally angular)
  • Fedora or other Linux

Bonus Skills:

  • Familiarity with D-BUS
  • Familiarity with Python (2.7)
  • Familiarity with OSTree
  • Experience working in Linux distributions

Libraries and Software:

  • cockpit ([7])
  • rpm-ostree ([8])

Difficulty Level:

  • Beginner to intermediate

Expected outcomes

  • A user of the Cockpit UI is able to examine the OSTree repos enabled on a machine, and add/edit/remove them.
  • Functionality of added features is tested via unit and/or integration tests

OStree Rebases in Cockpit

Project IRC Channel Web Page Mentor(s) Notes
Cockpit #cockpit [9]
  • Dominik Perpeet (dperpeet)
  • Peter Volpe (petervo)
Description:
  • Cockpit provides an interface for updating the installed software on Atomic systems using rpm-ostree. Admins should be able to 'rebase' to a different operating system channel or timeline via Cockpit.

Required:

  • JavaScript (ideally angular)
  • Fedora or other Linux

Bonus Skills:

  • Familiarity with D-BUS
  • Familiarity with Python (2.7)
  • Familiarity with OSTree
  • Experience working in Linux distributions

Libraries and Software:

Difficulty Level:

  • Beginner to intermediate

Expected outcomes

  • A user of the Cockpit UI is able to be able to 'rebase' to a different operating system channel or timeline via Cockpit.
  • Functionality of added features is tested via unit and/or integration tests

Setup a FreeIPA server in Cockpit using Rolekit

Project IRC Channel Web Page Mentor(s) Notes
Cockpit #cockpit [12]
  • Dominik Perpeet (dperpeet)
  • Peter Volpe (petervo)
Description:
  • FreeIPA is a domain and directory server. This task implements a UI for setting it up.
  • The Rolekit Project provides a platform API for deploying Server Roles such as FreeIPA onto a system. Currently, it supports creating a Domain Controller (based on FreeIPA) or a Database Server (based on PostgreSQL). A major component of the Fedora Server is the Cockpit Project, a web-based management console for servers. The goal of this effort would be to enhance the Cockpit UI so that an administrator could deploy the FreeIPA role.
  • Some designs for rolekit integration into Cockpit exist at [13].

Required:

  • JavaScript (ideally jQuery)
  • Fedora or other Linux

Bonus Skills:

  • Familiarity with D-BUS
  • Familiarity with Python (2.7)
  • Experience working in Linux distributions
  • Domain or directory experience

Libraries and Software:

Difficulty Level:

  • Intermediate

Expected outcomes

  • A user of the Cockpit UI is able to deploy a Domain Controller while providing the minimum set of necessary information to the UI
  • The UI allows more advanced settings to be selected
  • The UI also provides a link post-deployment that allows the user to browse to the Domain Controller administration UI

Docs

Anerist

Project IRC Channel Web Page Mentor(s) Notes
Docs Project #fedora-docs [17] Zach Oglesby (zoglesby) The Fedora community produces a variety of content suitable for user reference. Members of the Fedora Project produce documentation in a variety of ways - manpages and code comments from developers, system architecture design and best practices reference material from the infra team; application design, interface design, microservices, buildfarms and more. All at work meeting the needs of a transparent organization built on open source technologies and open development practices.

Anerist is intended to consume reference materials, in whatever format they are discovered in, and render them to produce a neatly indexed html site with a common style and theme. To alleviate manual effort in this conversion process, and in the process of 'cycling' translations, the application is event driven, with content regenerated on each change of the sources using CICD technologies. This design relies on modularized conversion tools, which also allows for programmatically generated content and drop-in custom views of technologies or infrastructure.

We need your help to build this framework. You'll use python, bootstrap, buildbot, fedmsg, git, and more.

Your internship with this project could also involve any or all of the following:

  • Exposure to content development workflows.
  • Mentoring from seasoned sysadmins, veteran technical writers, and free software advocates.
  • Learning the Open Source Way, the practice of transparent positive collaboration that forms bedrock of Fedora's Foundations.

Required:

  • general python skills
  • experience with generating and rendering ReStructuredText
  • familiarity with DocBook, or other structured contextual XML.
  • familiarity with Jenkins, buildbot, or similar buildsystems

Bonus Skills:

  • UX Design experience
  • Free software advocacy
  • Extended community participation
  • Ownership of amusing hats

Open Ideas From GSoC 2015

In addition to the above list of ideas, you may want to check out ideas from previous years and contact the mentors for those projects to see if they're still interested in mentoring someone this year.

Note: Do not submit a proposal for an idea from a previous year without contacting the mentor to ensure they will be available to mentor you. Without a mentor, proposals will be rejected.


Previous years: