Summer coding ideas for 2011

From FedoraProject

(Difference between revisions)
Jump to: navigation, search
(Fedora Medical)
 
(13 intermediate revisions by 8 users not shown)
Line 1: Line 1:
Other ideas that were incomplete or worth considering are found at [[Summer coding ideas for 2009]].
 
 
 
Find an idea you like?  Want to propose your own?  See our Getting Started Guide:
 
Find an idea you like?  Want to propose your own?  See our Getting Started Guide:
  
 
http://groups.google.com/group/redhat-summer/web/gsoc-getting-started
 
http://groups.google.com/group/redhat-summer/web/gsoc-getting-started
  
Ideas for the JBoss community can be found [http://community.jboss.org/wiki/GSoC here]. We will be participating with JBoss this summer.
+
You may be interested in ideas from previous years, such as [[Category:Summer Coding 2010 ideas|2010]] and [[Summer coding ideas for 2009|2009]].
  
== Turn smock into a real program ==
+
== Applications for desktop end users ==
 +
 
 +
These are coding projects that benefit end users of the Linux desktop.
 +
 
 +
=== Wubi like application for Fedora ===
  
 
''Status:''  
 
''Status:''  
  
''Summary of idea:'' [http://git.annexia.org/?p=fedora-mingw.git;a=tree;f=smock;hb=HEAD smock] is a hack that Dan and I wrote a few years ago that lets you build a chain of RPMs in mock. It works out all the dependencies and builds the packages in the right order, using the result from an earlier build to satisfy dependencies in a later build, and being almost completely automated.  What really needs to happen is that [http://fedoraproject.org/wiki/Projects/Mock mock] is extended to support this as a native feature.
+
''Summary of idea:'' [https://launchpad.net/wubi https://launchpad.net/wubi] is a great tool that lets one install Linux from a windows OS. It would be nice to have something like this for Fedora as well.  
  
 
''Contacts:''
 
''Contacts:''
Line 19: Line 21:
 
''Notes:''
 
''Notes:''
  
== Port Infrastructure TurboGears apps to TG2 ==
+
=== Integrate Proxy Settings and Network Locations ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of idea:'' Several Fedora Infrastructure applications are written in TurboGears 1.0, and for longevity need to be ported to TG2. These include bodhi, mirrormanager, packagedb, elections, fas, smolt.
+
''Summary of Idea:'' The system should use an appropriate networking profile (e.g. Proxy settings) for each network location.
  
''Contacts:'' [[User:mdomsch|Matt Domsch]], [[User:toshio|Toshio Kuratomi]]
+
Currently, Gnome does have a concept of network locations in its Network Proxy configuration window. However, user should select the appropriate location whenever he moves between networks. This idea is about providing an integration between NetworkManager and Desktop environments so that a user can create network profiles for each network location providing appropriate settings like proxy settings which is the main proposed setting here. NetworkManager can have a "Network Location" concept: for wireless networks, usually the name of the network (ESSID) is usually enough. For wired connections, DHCP servers can and usually do provide network's domain name, which can be used as the name of the location. It is nice if a user can associate each network location with a network settings profile which will be used whenever the user is connected to that network automatically. So, when you connect to a network, a corresponding network settings profile is activated automatically.
  
''Mentor(s):'' [[User:mdomsch|mdomsch]]
+
''Contacts:'' [[User:Hedayat|Hedayat Vatankhah]]
  
 +
''Mentor(s):''
  
== MirrorManager enhancements ==
+
=== Fill in some of the Missing nVidia and Radeon API pieces ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of idea:'' MirrorManager provides the mirror lists to all Fedora systemsIn addition to porting to TG2 (see above), several enhancements would be welcome:
+
''Summary of idea:'' Add some of the missing 3d APIs for at least one of the major card types, considerably helping out the beleagured Radeon and Nvidia reverse-engineering effortsThere is enough currently (F14) missing that most 3d games do not function correctly, many of the underpinnings of FireFox 4 acceleration are blacklisted under Linux, and many other visual and other components cannot make correct use of the gpu(s) under Linux. Progress is abysmal for many reasons.
* Simplify creation of new MirrorManager instances (non-Fedora users, such as CentOS)
+
* Simplify selection of mirrors within Cloud Providers on granularity other than netblocks and ASNs
+
* Other items on the [http://git.fedorahosted.org/git/mirrormanager?p=mirrormanager;a=blob;f=TODO;hb=HEAD TODO list]
+
  
''Contacts:'' [[User:mdomsch|Matt Domsch]]
+
''Contacts:''
  
''Mentor(s):'' [[User:mdomsch|mdomsch]]
+
''Mentor(s):''
  
== <code>mw</code> enhancements ==
+
''Notes:'' Requires good integration with the existing Radeon and nVidia teams and their testsuites
 +
 
 +
=== SPICE as a replacement for VNC and LTSP ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of idea:'' [ mw] is a command-line program that pretends to be a version control system. It should eventually help people who are console nuts (like me) edit MediaWiki-based wikis without having to shout at their web browser.
+
''Summary of Idea:'' SPICE is a virtual desktop interaction protocol that would be an ideal replacement for VNC and current X based LTSP implementations. Using SPICE would improve the user experience by implementing some missing capabilities such as sound in VNC, and making LTSP more efficient than using raw X.  A common protocol for all types of remote displays would also simplify the client setup.  More information on SPICE can be found here:
  
''Contacts:'' [[User:Ianweller|Ian Weller]]
+
http://www.spicespace.org/
  
''Mentor(s):'' [[User:Ianweller|Ian Weller]]
+
''Contacts:''
  
''Notes:'' This is also a proposed hackfest at [[FUDCon:Tempe 2011|FUDCon Tempe]] but I doubt we'll get as much as I'd like done there.
+
''Mentor(s):''
  
== <code>NIS support in SSSD</code> ==
+
''Notes:''
* ''Status:'' Proposed
+
* ''Summary of idea:'' Currently, the System Security Services Daemon supports only LDAP for network user identity. Support for NIS identities has been requested several times by end-users.
+
* ''Contacts:'' [[User:Sgallagh|Stephen Gallagher]]
+
* ''Mentor(s):'' [[User:Sgallagh|Stephen Gallagher]]
+
  
== <code>SUDO support in SSSD</code> ==
+
== Applications for programmers ==
* ''Status:'' Proposed
+
* ''Summary of idea:'' Sudo 1.8.0 will support a plugin interface for sudo authorization decisions. It would be excellent for SSSD to provide such a plugin to provide cached access to sudo information stored in the sudo LDAP schema. This would make it easier to maintain centralized sudo rules that also function while offline.
+
* ''Contacts:'' [[User:Sgallagh|Stephen Gallagher]]
+
* ''Mentor(s):'' [[User:Sgallagh|Stephen Gallagher]]
+
* ''Notes:'' http://www.sudo.ws/sudo_plugin.man.html
+
  
== Maven and PackageKit integration ==
+
Other programmers benefit most from these coding project ideas.
 +
 
 +
=== Better Erlang support ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of idea:'' Currently when building with maven locally, all spec files need to specify build dependencies manually. Java libraries and maven plugins should have something like "Provide(groupId:artifactId:version:format)" so that "yum install org.apache.velocity:velocity" will correctly find and install velocity package. Second part of this project can be creating maven plugin asking you to install via PackageKit the package that provides the dependency.
+
''Summary of Idea:'' There is one major issue with Erlang RPM packaging now. A dependencies between Erlang packages still must be calculated by hand. There was an initial attempt to create list of Provides and Requires automatically during build stage but it wasn't finished. Another interesting task is to tightly integrate Erlang/OTP essential feature of live application upgrades with RPM upgrade process thus allowing really smooth upgrades of running Erlang applications.
  
''Contacts:'' [[User:Sochotni|Stanislav Ochotnicky]] or [[User:Akurtakov|Alexander Kurtakov]]
+
''Contacts:'' [[User:Peter|Peter Lemenkov]]
  
''Mentor(s):''
+
''Mentor(s):'' [[User:Peter|Peter Lemenkov]]
  
''Notes:'' Basic knowledge of maven and rpm is required.
+
''Notes:'' Requires average knowledge of RPM building process and installation procedure. Also basic Erlang knowledge is required.
  
== KDE Plasma and PackageKit integration ==
+
== Infrastructure for Fedora contributors and users ==
  
''Status:'' Proposed
+
Other contributors and users of the Fedora Project's infrastructure benefit most from these coding projects.
  
''Summary of idea:''  Add automatically-generated rpm dependencies for kde/plasma related services (see also [http://rdieter.livejournal.com/14897.html blog entry on the topic]), and add packagekit hooks to use them (one concrete example would be for plasma dataengines (see also [http://rdieter.livejournal.com/14897.html blog entry on the topic]).
+
=== Port Infrastructure TurboGears apps to TG2 ===
  
''Contacts:'' [[User:Rdieter|Rex Dieter]]
+
''Status:'' Proposed
  
''Mentor(s):''
+
''Summary of idea:'' Several Fedora Infrastructure applications are written in TurboGears 1.0, and for longevity need to be ported to TG2.  These include bodhi, mirrormanager, packagedb, elections, fas, smolt.
  
''Notes:'' Intermediate knowledge of rpm and/or kde plasma coding
+
''Contacts:'' [[User:mdomsch|Matt Domsch]], [[User:toshio|Toshio Kuratomi]]
  
 +
''Mentor(s):'' [[User:mdomsch|mdomsch]]
  
== Avahi yum repositories ==
+
=== MirrorManager enhancements ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of idea:'' Add a yum plugin that will use avahi to find local mirrors of canonical repositories, and tools/scripts for local http/nfs servers to advertise what they haveIt would also be nice to include proper nfs repository support in yum or a plugin, so the advertised repositories can be on NFS filesystems that are not already mounted locally on clients.  The use on the clients should be transparent without any local yum repo config changes except perhaps for installing/enabling the plugin. Later anaconda could also be taught to use avahi to find repositories for installation.
+
''Summary of idea:'' MirrorManager provides the mirror lists to all Fedora systemsIn addition to porting to TG2 (see above), several enhancements would be welcome:
 +
* Simplify creation of new MirrorManager instances (non-Fedora users, such as CentOS)
 +
* Simplify selection of mirrors within Cloud Providers on granularity other than netblocks and ASNs
 +
* Other items on the [http://git.fedorahosted.org/git/mirrormanager?p=mirrormanager;a=blob;f=TODO;hb=HEAD TODO list]
  
''Contacts:'' [[User:roland|Roland McGrath]]
+
''Contacts:'' [[User:mdomsch|Matt Domsch]]
  
''Mentor(s):''
+
''Mentor(s):'' [[User:mdomsch|mdomsch]]
  
''Notes:'' Divisible into various separate pieces that are worthwhile on their own.
+
=== Create a Fedora Events System ===
 
+
 
+
== Fill in some of the Missing nVidia and Radeon API pieces ==
+
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of idea:'' Add some of the missing 3d APIs for at least one of the major card types, considerably helping out the beleagured Radeon and Nvidia reverse-engineering efforts.  There is enough currently (F14) missing that most 3d games do not function correctly, many of the underpinnings of FireFox 4 acceleration are blacklisted under Linux, and many other visual and other components cannot make correct use of the gpu(s) under Linux. Progress is abysmal for many reasons.
+
''Summary of Idea:'' The idea is to create a website which would allow displaying events, divided by region, list attendance, topics discussed and other points. For reference, see [http://loco.ubuntu.com/events/ Ubuntu Loco Events].
 +
 
 +
[http://nushio.fedorapeople.org/fes/roadmap.html Roadmap] (Work in progress. Tasks are defined, but dates aren't yet)
  
 
''Contacts:''
 
''Contacts:''
  
''Mentor(s):''
+
''Mentor(s):'' [[User:Nushio|Nushio]] develops webapps as a dayjob and wouldn't mind making it a summer job too.
  
''Notes:'' Requires good integration with the existing Radeon and nVidia teams and their testsuites
+
''Notes:'' [[User:Giallu|giallu]] the Ubuntu site is a django application, code available as GPLv3 http://bazaar.launchpad.net/~loco-directory-dev/loco-directory
 +
If they do not require copyright assignment I'd consider using it
  
 
+
=== Self Manage Buildroot overrides ===
== Fedora Medical ==
+
 
+
''Status:''  In progress.
+
 
+
''Summary of idea:'' Here, we are looking for a couple students who have some experience in RPM packaging, python, and bash. This would be a good opportunity to learn in depth packaging and
+
fedora contributor ecosystem.
+
 
+
This is a work in progress and details can be found here: http://fedoraproject.org/wiki/SIGs/FedoraMedical
+
 
+
We are looking forward to do mainly packaging and getting them published to fedora repo. However, we will also be doing some tooling and associated works. So, python and bash will be required.
+
 
+
Understanding fedora package maintainer guideline is required. Having existing packages in fedora will be a plus. Also, the student should be interested in maintaining some of those packages after SOC.
+
 
+
''Contacts:'' Susmit Shannigrahi <susmit at fedoraproject.org>
+
 
+
''Mentor(s):'' [[User:Susmit|Susmit]] and [[User:Mrceresa|Mario Ceresa ]]
+
 
+
''Notes:''
+
 
+
== Improve critical dependency management in Yum ==
+
 
+
''Status:'' Proposed (please review)
+
 
+
''Summary of idea:'' The idea (roughly) is that Yum could detect when a package update is going to break some important functionality of the system because is a dependency of another package that won't be updated (for example: Yum is not detecting that when a kernel is updated, because the previous kernel is not deleted, and the dependency isn't broken). This happens once in a while with kernel and third party packages that provide support for devices that aren't supported by Fedora directly because of licensing restrictions: ie. Fedora updates the kernel, and RPM Fusion packages related to Broadcom wireless usually need 2-4 days to be updated, resulting in a non working wireless.
+
 
+
''Contacts:''
+
 
+
''Mentor(s):''
+
 
+
''Notes:'' I don't feel qualified to be mentor.
+
 
+
== Create a spin to aid students in education and to help them understand Linux and Fedora better ==
+
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of Idea:'' The idea is to create a spin which would be more student friendly. It should have some graph plotting tools, some circuit simulator, maybe an equation solving application, IDE for some basic coding and a few compilers which are taught in colleges and other relevant stuff. It should consist of extensive documentation to help students use these tools and Linux in general. A few interesting games and music player would be a plus.
+
''Summary of Idea:'' when users need a buildroot override they can manage it all themselves.  
  
Additionally, if possible, one can imagine to throw up a screen during install which would help in picking the age group of the student. The applications can be installed accordingly. For example, I would like to have a scrabble game for a small kid then a circuit simulator.
+
For this I see 2 parts:  cli integration into fedpkg i.e. "fedpkg override"  and a server to talk to, track overrides, and do the actual tagging and untagging
 +
-possible work flow:
 +
allow developer to specify a life for the override, defaulting to 24 hours:
 +
the server would then do the tag in koji and at the end  of its life untag it
 +
I could see having a web app to see the current overrides, allow requests, extensions etc
  
''Contacts:'' [[User:Rrix | Ryan Rix]]
+
''Contacts:'' [[User:Ausil|Dennis Gilmore]]
  
''Mentor(s):'' [[User:Rrix | Ryan Rix]] (Maybe)
+
''Mentor(s):'' [[User:Ausil|Dennis Gilmore]]
  
== Create a Fedora Events System ==
+
=== <code>mw</code> enhancements ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of Idea:'' The idea is to create a website which would allow displaying events, divided by region, list attendance, topics discussed and other points. For reference, see [http://loco.ubuntu.com/events/ Ubuntu Loco Events].  
+
''Summary of idea:'' mw is a command-line program that pretends to be a version control system. It should eventually help people who are console nuts (like me) edit MediaWiki-based wikis without having to shout at their web browser.
  
''Contacts:''
+
''Contacts:'' [[User:Ianweller|Ian Weller]]
  
''Mentor(s):'' [[User:Nushio|Nushio]] develops webapps as a dayjob and wouldn't mind making it a summer job too.
+
''Mentor(s):'' [[User:Ianweller|Ian Weller]]
  
''Notes:'' [[User:Giallu|giallu]] the Ubuntu site is a django application, code available as GPLv3 http://bazaar.launchpad.net/~loco-directory-dev/loco-directory
+
''Notes:'' Here are some ideas for students: [[User:Ianweller/mw thoughts]]
If they do not require copyright assignment I'd consider using it
+
  
== Smarter Yum Metadata ==
+
=== Complete implementation and deployment of Copr ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of Idea:'' Share yum metadata among users of a system and also fetch them faster instead of downloading the whole chunk each time.
+
''Summary of Idea:'' Finalize and deploy the personal repositories concept initiated by http://repos.fedorapeople.org
  
A git-based metadata store was [http://log.amitshah.net/2010/12/idea-faster-metadata-downloads-with-yum.html proposed] but [https://bugzilla.redhat.com/show_bug.cgi?id=664356 objected] to by yum maintainers. There could be other ways of doing this, as suggested in the bug report or by going ahead with the git idea -- I believe it can be done.
+
[http://fedoraproject.org/wiki/Category:Copr Copr (Cool Other Package Repo)] is a Fedora project to help make building and managing third party package repositories easy. The instance to be installed within Fedora Infrastructure provides Fedora maintainers with the ability to create repos of packages to build against and share with others.
 +
 
 +
As a Fedora user and Ambassador, I'm asked a lot about this feature in Fedora.
  
 
''Contacts:''
 
''Contacts:''
Line 187: Line 159:
 
''Mentor(s):''
 
''Mentor(s):''
  
== Integrating Fuzzing-based instruments in quality assurance tools ==
+
=== Integrating Fuzzing-based instruments in quality assurance tools ===
  
 
''Summary of idea:'' Generate fuzzing testcases from the existing "make test", which is
 
''Summary of idea:'' Generate fuzzing testcases from the existing "make test", which is
Line 222: Line 194:
 
''Mentor(s):'' Marc Schoenefeld , mschoene@redhat.com
 
''Mentor(s):'' Marc Schoenefeld , mschoene@redhat.com
  
 +
== Linux system services ==
  
== Masking packages ==
+
These coding projects are lower-level services that benefit Fedora and other Linux distributions.
Mixing stable and unstable packages (ie from different repositories) is quite tiresome and hardly manageable for more than a few packets. What is missing is something like the Gentoo approach where you can unmask (or mask) certain unstable packages so that they will be pulled and installed into your otherwise stable-only environment. The user has to resolve any conflicts that may arise.
+
  
Apart from the luxury of more bleeding-edge packages available, this could also really get more people into testing of unstable packages. With changed policies regarding only stable updates / backports to a stable Fedora release, this would make Fedora still attractive for users that like to work with latest packages but refrain from rawhide for whatever reasons.
+
=== <code>NIS</code> support in <code>SSSD</code> ===
 +
* ''Status:'' Proposed
 +
* ''Summary of idea:'' Currently, the System Security Services Daemon supports only LDAP for network user identity. Support for NIS identities has been requested several times by end-users.
 +
* ''Contacts:'' [[User:Sgallagh|Stephen Gallagher]]
 +
* ''Mentor(s):'' [[User:Sgallagh|Stephen Gallagher]]
 +
 
 +
=== <code>SUDO</code> support in <code>SSSD</code> ===
 +
* ''Status:'' Proposed
 +
* ''Summary of idea:'' Sudo 1.8.0 will support a plugin interface for sudo authorization decisions. It would be excellent for SSSD to provide such a plugin to provide cached access to sudo information stored in the sudo LDAP schema. This would make it easier to maintain centralized sudo rules that also function while offline.
 +
* ''Contacts:'' [[User:Sgallagh|Stephen Gallagher]]
 +
* ''Mentor(s):'' [[User:Sgallagh|Stephen Gallagher]]
 +
* ''Notes:'' http://www.sudo.ws/sudo_plugin.man.html
 +
 
 +
== Improving Fedora packaging ==
 +
 
 +
The heart of Fedora are the packages and the applications that manage them; these coding projects help improve the package experience for users and contributors.
  
== Self Manage Buildroot overrides ==
+
=== Maven and PackageKit integration ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of Idea:'' when users need a buildroot override they can manage it all themselves.  
+
''Summary of idea:'' Currently when building with maven locally, all spec files need to specify build dependencies manually. Java libraries and maven plugins should have something like "Provide(groupId:artifactId:version:format)" so that "yum install org.apache.velocity:velocity" will correctly find and install velocity package. Second part of this project can be creating maven plugin asking you to install via PackageKit the package that provides the dependency.
  
For this I see 2 parts: cli integration into fedpkg i.e. "fedpkg override"  and a server to talk to, track overrides, and do the actual tagging and untagging
+
''Contacts:'' [[User:Sochotni|Stanislav Ochotnicky]] or [[User:Akurtakov|Alexander Kurtakov]]
-possible work flow:
+
allow developer to specify a life for the override, defaulting to 24 hours:
+
the server would then do the tag in koji and at the end  of its life untag it
+
I could see having a web app to see the current overrides, allow requests, extensions etc
+
  
''Contacts:'' [[User:Ausil|Dennis Gilmore]]
+
''Mentor(s):''
  
''Mentor(s):'' [[User:Ausil|Dennis Gilmore]]
+
''Notes:'' Basic knowledge of maven and rpm is required.
  
== Integrate Proxy Settings and Network Locations ==
+
=== KDE Plasma and PackageKit integration ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of Idea:'' The system should use an appropriate networking profile (e.g. Proxy settings) for each network location.
+
''Summary of idea:'' Add automatically-generated rpm dependencies for kde/plasma related services (see also [http://rdieter.livejournal.com/14897.html blog entry on the topic]), and add packagekit hooks to use them (one concrete example would be for plasma dataengines (see also [http://rdieter.livejournal.com/14897.html blog entry on the topic]).
  
Currently, Gnome does have a concept of network locations in its Network Proxy configuration window. However, user should select the appropriate location whenever he moves between networks. This idea is about providing an integration between NetworkManager and Desktop environments so that a user can create network profiles for each network location providing appropriate settings like proxy settings which is the main proposed setting here. NetworkManager can have a "Network Location" concept: for wireless networks, usually the name of the network (ESSID) is usually enough. For wired connections, DHCP servers can and usually do provide network's domain name, which can be used as the name of the location. It is nice if a user can associate each network location with a network settings profile which will be used whenever the user is connected to that network automatically. So, when you connect to a network, a corresponding network settings profile is activated automatically.
+
''Contacts:'' [[User:Rdieter|Rex Dieter]]
 
+
''Contacts:'' [[User:Hedayat|Hedayat Vatankhah]]
+
  
 
''Mentor(s):''
 
''Mentor(s):''
  
== Complete implementation and deployment of Copr ==
+
''Notes:'' Intermediate knowledge of rpm and/or kde plasma coding
 +
 
 +
 
 +
=== Avahi yum repositories ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
  
''Summary of Idea:'' Finalize and deploy the personal repositories concept initiated by http://repos.fedorapeople.org
+
''Summary of idea:'' Add a yum plugin that will use avahi to find local mirrors of canonical repositories, and tools/scripts for local http/nfs servers to advertise what they have.  It would also be nice to include proper nfs repository support in yum or a plugin, so the advertised repositories can be on NFS filesystems that are not already mounted locally on clients.  The use on the clients should be transparent without any local yum repo config changes except perhaps for installing/enabling the plugin. Later anaconda could also be taught to use avahi to find repositories for installation.
  
[http://fedoraproject.org/wiki/Category:Copr Copr (Cool Other Package Repo)] is a Fedora project to help make building and managing third party package repositories easy. The instance to be installed within Fedora Infrastructure provides Fedora maintainers with the ability to create repos of packages to build against and share with others.
+
''Contacts:'' [[User:roland|Roland McGrath]]
  
As a Fedora user and Ambassador, I'm asked a lot about this feature in Fedora.
+
''Mentor(s):''
  
''Contacts:''
+
''Notes:'' Divisible into various separate pieces that are worthwhile on their own.
 +
 
 +
=== Improve critical dependency management in Yum ===
 +
 
 +
''Status:'' Proposed (please review)
 +
 
 +
''Summary of idea:'' The idea (roughly) is that Yum could detect when a package update is going to break some important functionality of the system because is a dependency of another package that won't be updated (for example: Yum is not detecting that when a kernel is updated, because the previous kernel is not deleted, and the dependency isn't broken). This happens once in a while with kernel and third party packages that provide support for devices that aren't supported by Fedora directly because of licensing restrictions: ie. Fedora updates the kernel, and RPM Fusion packages related to Broadcom wireless usually need 2-4 days to be updated, resulting in a non working wireless.
 +
 
 +
''Contacts:''  
  
 
''Mentor(s):''
 
''Mentor(s):''
  
== Educational Application for Fedora Robotics Suite ==
+
''Notes:'' I don't feel qualified to be mentor.
  
''Status:'' Proposed
+
=== Masking packages ===
 +
Mixing stable and unstable packages (ie from different repositories) is quite tiresome and hardly manageable for more than a few packets. What is missing is something like the Gentoo approach where you can unmask (or mask) certain unstable packages so that they will be pulled and installed into your otherwise stable-only environment. The user has to resolve any conflicts that may arise.
  
''Summary of Idea:'' Create an educational app introducing software from Fedora Robotics Suite
+
Apart from the luxury of more bleeding-edge packages available, this could also really get more people into testing of unstable packages. With changed policies regarding only stable updates / backports to a stable Fedora release, this would make Fedora still attractive for users that like to work with latest packages but refrain from rawhide for whatever reasons.
  
The [[SIGs/Robotics|Fedora Robotics SIG]] is creating a [[Features/RoboticsSuite|Robotics Suite]] consisting of many packages useful in robotics. We want to develop a demonstration application introducing new users step by step to core packages like [http://www.fawkesrobotics.org Fawkes] and [http://playerstage.sourceforge.net Player/Stage]. It would feature multiple game-like levels with increasing complexity. The general task would be to instruct the robot to fulfill a specific task in a simulation environment.
+
=== Smarter Yum Metadata ===
  
Developing this requires a strong background in C++, a background in robotics is preferred but not necessary. You should be able to familiarize yourself with new software quickly. User visible parts will require GUI programming using Gtkmm.
+
''Status:'' Proposed
  
''Contacts:'' [[User:Timn|Tim Niemueller]]
+
''Summary of Idea:'' Share yum metadata among users of a system and also fetch them faster instead of downloading the whole chunk each time.
  
''Mentor(s):'' [[User:Timn|Tim Niemueller]]
+
A git-based metadata store was [http://log.amitshah.net/2010/12/idea-faster-metadata-downloads-with-yum.html proposed] but [https://bugzilla.redhat.com/show_bug.cgi?id=664356 objected] to by yum maintainers.  There could be other ways of doing this, as suggested in the bug report or by going ahead with the git idea -- I believe it can be done.
 +
 
 +
''Contacts:''
 +
 
 +
''Mentor(s):''
  
== Wubi like application for Fedora ==
+
=== Turn smock into a real program ===
  
 
''Status:''  
 
''Status:''  
  
''Summary of idea:'' [https://launchpad.net/wubi https://launchpad.net/wubi] is a great tool that lets one install Linux from a windows OS. It would be nice to have something like this for Fedora as well.  
+
''Summary of idea:'' [http://git.annexia.org/?p=fedora-mingw.git;a=tree;f=smock;hb=HEAD smock] is a hack that Dan and I wrote a few years ago that lets you build a chain of RPMs in mock. It works out all the dependencies and builds the packages in the right order, using the result from an earlier build to satisfy dependencies in a later build, and being almost completely automated.  What really needs to happen is that [http://fedoraproject.org/wiki/Projects/Mock mock] is extended to support this as a native feature.
  
 
''Contacts:''
 
''Contacts:''
Line 296: Line 293:
 
''Notes:''
 
''Notes:''
  
== Dorrie - A Web interface to create Fedora Remixes ==
+
== Fedora Spins and remixes ==
 +
 
 +
Remixing and making new Fedora Spins is an important part of the community's freedoms, and these coding projects support that.
 +
 
 +
=== Fedora Medical ===
 +
 
 +
''Status:''  In progress.
 +
 
 +
''Summary of idea:'' Here, we are looking for a couple students who have some experience in RPM packaging, python, and bash. This would be a good opportunity to learn in depth packaging and
 +
fedora contributor ecosystem.
 +
 
 +
This is a work in progress and details can be found here: http://fedoraproject.org/wiki/SIGs/FedoraMedical
 +
 
 +
We are looking forward to do mainly packaging and getting them published to fedora repo. However, we will also be doing some tooling and associated works. So, python and bash will be required.
 +
 
 +
Understanding fedora package maintainer guideline is required. Having existing packages in fedora will be a plus. Also, the student should be interested in maintaining some of those packages after SOC.
 +
 
 +
''Contacts:'' Susmit Shannigrahi <susmit at fedoraproject.org>
 +
 
 +
''Mentor(s):'' [[User:Susmit|Susmit]] and [[User:Mrceresa|Mario Ceresa ]]
 +
 
 +
''Notes:''
 +
 
 +
=== Create a spin to aid students in education and to help them understand Linux and Fedora better ===
 +
 
 +
''Status:'' Proposed
 +
 
 +
''Summary of Idea:'' The idea is to create a spin which would be more student friendly. It should have some graph plotting tools, some circuit simulator, maybe an equation solving application, IDE for some basic coding and a few compilers which are taught in colleges and other relevant stuff. It should consist of extensive documentation to help students use these tools and Linux in general. A few interesting games and music player would be a plus.
 +
 
 +
Additionally, if possible, one can imagine to throw up a screen during install which would help in picking the age group of the student. The applications can be installed accordingly. For example, I would like to have a scrabble game for a small kid then a circuit simulator.
 +
 
 +
''Contacts:'' [[User:Rrix | Ryan Rix]]
 +
 
 +
''Mentor(s):'' [[User:Rrix | Ryan Rix]] (Maybe)
 +
 
 +
=== Educational Application for Fedora Robotics Suite ===
 +
 
 +
''Status:'' Proposed
 +
 
 +
''Summary of Idea:'' Create an educational app introducing software from Fedora Robotics Suite
 +
 
 +
The [[SIGs/Robotics|Fedora Robotics SIG]] is creating a [[Features/RoboticsSuite|Robotics Suite]] consisting of many packages useful in robotics. We want to develop a demonstration application introducing new users step by step to core packages like [http://www.fawkesrobotics.org Fawkes] and [http://playerstage.sourceforge.net Player/Stage]. It would feature multiple game-like levels with increasing complexity. The general task would be to instruct the robot to fulfill a specific task in a simulation environment.
 +
 
 +
Developing this requires a strong background in C++, a background in robotics is preferred but not necessary. You should be able to familiarize yourself with new software quickly. User visible parts will require GUI programming using Gtkmm.
 +
 
 +
''Contacts:'' [[User:Timn|Tim Niemueller]]
 +
 
 +
''Mentor(s):'' [[User:Timn|Tim Niemueller]]
 +
 
 +
=== Dorrie - A Web interface to create Fedora Remixes ===
  
 
''Status:'' Proposed
 
''Status:'' Proposed
Line 302: Line 348:
 
''Summary of Idea:'' Contribute to Dorrie, and make it more usable, tested and deployable.
 
''Summary of Idea:'' Contribute to Dorrie, and make it more usable, tested and deployable.
  
More at [[Remixes_Web_Interface|Dorrie]], code at https://fedorahosted.org/dorrie/
+
More at [[Remixes_Web_Interface|Dorrie]], code at https://github.com/shreyankg/Dorrie, fork and send pull request, if you are interested to contribute.
  
 
''Contacts:'' [[User:Shreyankg|Shreyank Gupta]]
 
''Contacts:'' [[User:Shreyankg|Shreyank Gupta]]
  
 
''Mentor(s):'' [[User:Shreyankg|Shreyank Gupta]]
 
''Mentor(s):'' [[User:Shreyankg|Shreyank Gupta]]
 +
 +
[[Category:GSoC 2011]]
 +
[[Category:Summer coding 2011]]
 +
 +
=== Aeolus Packaging ===
 +
 +
''Status:'' Proposed
 +
 +
''Summary of Idea:'' Contribute to the Aeolus family of projects (http://aeolusproject.org), starting with packaging of dependencies not yet in Fedora (http://www.aeolusproject.org/page/Packages_Missing_From_Fedora)
 +
 +
''Contacts:'' [[User:clalance | Chris Lalancette <clalance@redhat.com>]]
 +
 +
''Mentor(s):'' [[User:clalance | Chris Lalancette <clalance@redhat.com>]]

Latest revision as of 14:01, 27 April 2011

Find an idea you like? Want to propose your own? See our Getting Started Guide:

http://groups.google.com/group/redhat-summer/web/gsoc-getting-started

You may be interested in ideas from previous years, such as and 2009.

Contents

[edit] Applications for desktop end users

These are coding projects that benefit end users of the Linux desktop.

[edit] Wubi like application for Fedora

Status:

Summary of idea: https://launchpad.net/wubi is a great tool that lets one install Linux from a windows OS. It would be nice to have something like this for Fedora as well.

Contacts:

Mentor(s):

Notes:

[edit] Integrate Proxy Settings and Network Locations

Status: Proposed

Summary of Idea: The system should use an appropriate networking profile (e.g. Proxy settings) for each network location.

Currently, Gnome does have a concept of network locations in its Network Proxy configuration window. However, user should select the appropriate location whenever he moves between networks. This idea is about providing an integration between NetworkManager and Desktop environments so that a user can create network profiles for each network location providing appropriate settings like proxy settings which is the main proposed setting here. NetworkManager can have a "Network Location" concept: for wireless networks, usually the name of the network (ESSID) is usually enough. For wired connections, DHCP servers can and usually do provide network's domain name, which can be used as the name of the location. It is nice if a user can associate each network location with a network settings profile which will be used whenever the user is connected to that network automatically. So, when you connect to a network, a corresponding network settings profile is activated automatically.

Contacts: Hedayat Vatankhah

Mentor(s):

[edit] Fill in some of the Missing nVidia and Radeon API pieces

Status: Proposed

Summary of idea: Add some of the missing 3d APIs for at least one of the major card types, considerably helping out the beleagured Radeon and Nvidia reverse-engineering efforts. There is enough currently (F14) missing that most 3d games do not function correctly, many of the underpinnings of FireFox 4 acceleration are blacklisted under Linux, and many other visual and other components cannot make correct use of the gpu(s) under Linux. Progress is abysmal for many reasons.

Contacts:

Mentor(s):

Notes: Requires good integration with the existing Radeon and nVidia teams and their testsuites

[edit] SPICE as a replacement for VNC and LTSP

Status: Proposed

Summary of Idea: SPICE is a virtual desktop interaction protocol that would be an ideal replacement for VNC and current X based LTSP implementations. Using SPICE would improve the user experience by implementing some missing capabilities such as sound in VNC, and making LTSP more efficient than using raw X. A common protocol for all types of remote displays would also simplify the client setup. More information on SPICE can be found here:

http://www.spicespace.org/

Contacts:

Mentor(s):

Notes:

[edit] Applications for programmers

Other programmers benefit most from these coding project ideas.

[edit] Better Erlang support

Status: Proposed

Summary of Idea: There is one major issue with Erlang RPM packaging now. A dependencies between Erlang packages still must be calculated by hand. There was an initial attempt to create list of Provides and Requires automatically during build stage but it wasn't finished. Another interesting task is to tightly integrate Erlang/OTP essential feature of live application upgrades with RPM upgrade process thus allowing really smooth upgrades of running Erlang applications.

Contacts: Peter Lemenkov

Mentor(s): Peter Lemenkov

Notes: Requires average knowledge of RPM building process and installation procedure. Also basic Erlang knowledge is required.

[edit] Infrastructure for Fedora contributors and users

Other contributors and users of the Fedora Project's infrastructure benefit most from these coding projects.

[edit] Port Infrastructure TurboGears apps to TG2

Status: Proposed

Summary of idea: Several Fedora Infrastructure applications are written in TurboGears 1.0, and for longevity need to be ported to TG2. These include bodhi, mirrormanager, packagedb, elections, fas, smolt.

Contacts: Matt Domsch, Toshio Kuratomi

Mentor(s): mdomsch

[edit] MirrorManager enhancements

Status: Proposed

Summary of idea: MirrorManager provides the mirror lists to all Fedora systems. In addition to porting to TG2 (see above), several enhancements would be welcome:

  • Simplify creation of new MirrorManager instances (non-Fedora users, such as CentOS)
  • Simplify selection of mirrors within Cloud Providers on granularity other than netblocks and ASNs
  • Other items on the TODO list

Contacts: Matt Domsch

Mentor(s): mdomsch

[edit] Create a Fedora Events System

Status: Proposed

Summary of Idea: The idea is to create a website which would allow displaying events, divided by region, list attendance, topics discussed and other points. For reference, see Ubuntu Loco Events.

Roadmap (Work in progress. Tasks are defined, but dates aren't yet)

Contacts:

Mentor(s): Nushio develops webapps as a dayjob and wouldn't mind making it a summer job too.

Notes: giallu the Ubuntu site is a django application, code available as GPLv3 http://bazaar.launchpad.net/~loco-directory-dev/loco-directory If they do not require copyright assignment I'd consider using it

[edit] Self Manage Buildroot overrides

Status: Proposed

Summary of Idea: when users need a buildroot override they can manage it all themselves.

For this I see 2 parts: cli integration into fedpkg i.e. "fedpkg override" and a server to talk to, track overrides, and do the actual tagging and untagging -possible work flow: allow developer to specify a life for the override, defaulting to 24 hours: the server would then do the tag in koji and at the end of its life untag it I could see having a web app to see the current overrides, allow requests, extensions etc

Contacts: Dennis Gilmore

Mentor(s): Dennis Gilmore

[edit] mw enhancements

Status: Proposed

Summary of idea: mw is a command-line program that pretends to be a version control system. It should eventually help people who are console nuts (like me) edit MediaWiki-based wikis without having to shout at their web browser.

Contacts: Ian Weller

Mentor(s): Ian Weller

Notes: Here are some ideas for students: User:Ianweller/mw thoughts

[edit] Complete implementation and deployment of Copr

Status: Proposed

Summary of Idea: Finalize and deploy the personal repositories concept initiated by http://repos.fedorapeople.org

Copr (Cool Other Package Repo) is a Fedora project to help make building and managing third party package repositories easy. The instance to be installed within Fedora Infrastructure provides Fedora maintainers with the ability to create repos of packages to build against and share with others.

As a Fedora user and Ambassador, I'm asked a lot about this feature in Fedora.

Contacts:

Mentor(s):

[edit] Integrating Fuzzing-based instruments in quality assurance tools

Summary of idea: Generate fuzzing testcases from the existing "make test", which is generally only as good as the package maintainer placed effort into this Extending the range of testcases in a generic way contributes to an enhanced scope of quality and security testing of software. Key implementation technique is providing mock "fuzzing" devices and transparent in-process instrumentation (fuzzing loops) the turn-around time and bug discovery rate will improve. Transparent integration in build tools (like rpm-build macros) lower the entry hurdle for developers and maintainers.

Key components:

-Fuzzing devices: By this we mean user space devices that manipulate given original data based on a given fuzzing strategy, the strategy chosen depends on the nature of the file type, implemented by plugins (for a start provide comprehensive plugin source for image types, gif png, multimedia, midi).

-Package QA process: We think that a prototypical integration in rpm-build (macro, pre-waive certain results ) will help (Fedora) developers package maintainers to transparently gain from these functionality during package build.

Target: It is expected that all posix variants can benefit from wrapping fuzzing algorithms behind devices, however due to the rpm-build macro support, we expect most benefit for rpm-based distros.


Contacts: Marc Schoenefeld , mschoene@redhat.com

Mentor(s): Marc Schoenefeld , mschoene@redhat.com

[edit] Linux system services

These coding projects are lower-level services that benefit Fedora and other Linux distributions.

[edit] NIS support in SSSD

  • Status: Proposed
  • Summary of idea: Currently, the System Security Services Daemon supports only LDAP for network user identity. Support for NIS identities has been requested several times by end-users.
  • Contacts: Stephen Gallagher
  • Mentor(s): Stephen Gallagher

[edit] SUDO support in SSSD

  • Status: Proposed
  • Summary of idea: Sudo 1.8.0 will support a plugin interface for sudo authorization decisions. It would be excellent for SSSD to provide such a plugin to provide cached access to sudo information stored in the sudo LDAP schema. This would make it easier to maintain centralized sudo rules that also function while offline.
  • Contacts: Stephen Gallagher
  • Mentor(s): Stephen Gallagher
  • Notes: http://www.sudo.ws/sudo_plugin.man.html

[edit] Improving Fedora packaging

The heart of Fedora are the packages and the applications that manage them; these coding projects help improve the package experience for users and contributors.

[edit] Maven and PackageKit integration

Status: Proposed

Summary of idea: Currently when building with maven locally, all spec files need to specify build dependencies manually. Java libraries and maven plugins should have something like "Provide(groupId:artifactId:version:format)" so that "yum install org.apache.velocity:velocity" will correctly find and install velocity package. Second part of this project can be creating maven plugin asking you to install via PackageKit the package that provides the dependency.

Contacts: Stanislav Ochotnicky or Alexander Kurtakov

Mentor(s):

Notes: Basic knowledge of maven and rpm is required.

[edit] KDE Plasma and PackageKit integration

Status: Proposed

Summary of idea: Add automatically-generated rpm dependencies for kde/plasma related services (see also blog entry on the topic), and add packagekit hooks to use them (one concrete example would be for plasma dataengines (see also blog entry on the topic).

Contacts: Rex Dieter

Mentor(s):

Notes: Intermediate knowledge of rpm and/or kde plasma coding


[edit] Avahi yum repositories

Status: Proposed

Summary of idea: Add a yum plugin that will use avahi to find local mirrors of canonical repositories, and tools/scripts for local http/nfs servers to advertise what they have. It would also be nice to include proper nfs repository support in yum or a plugin, so the advertised repositories can be on NFS filesystems that are not already mounted locally on clients. The use on the clients should be transparent without any local yum repo config changes except perhaps for installing/enabling the plugin. Later anaconda could also be taught to use avahi to find repositories for installation.

Contacts: Roland McGrath

Mentor(s):

Notes: Divisible into various separate pieces that are worthwhile on their own.

[edit] Improve critical dependency management in Yum

Status: Proposed (please review)

Summary of idea: The idea (roughly) is that Yum could detect when a package update is going to break some important functionality of the system because is a dependency of another package that won't be updated (for example: Yum is not detecting that when a kernel is updated, because the previous kernel is not deleted, and the dependency isn't broken). This happens once in a while with kernel and third party packages that provide support for devices that aren't supported by Fedora directly because of licensing restrictions: ie. Fedora updates the kernel, and RPM Fusion packages related to Broadcom wireless usually need 2-4 days to be updated, resulting in a non working wireless.

Contacts:

Mentor(s):

Notes: I don't feel qualified to be mentor.

[edit] Masking packages

Mixing stable and unstable packages (ie from different repositories) is quite tiresome and hardly manageable for more than a few packets. What is missing is something like the Gentoo approach where you can unmask (or mask) certain unstable packages so that they will be pulled and installed into your otherwise stable-only environment. The user has to resolve any conflicts that may arise.

Apart from the luxury of more bleeding-edge packages available, this could also really get more people into testing of unstable packages. With changed policies regarding only stable updates / backports to a stable Fedora release, this would make Fedora still attractive for users that like to work with latest packages but refrain from rawhide for whatever reasons.

[edit] Smarter Yum Metadata

Status: Proposed

Summary of Idea: Share yum metadata among users of a system and also fetch them faster instead of downloading the whole chunk each time.

A git-based metadata store was proposed but objected to by yum maintainers. There could be other ways of doing this, as suggested in the bug report or by going ahead with the git idea -- I believe it can be done.

Contacts:

Mentor(s):

[edit] Turn smock into a real program

Status:

Summary of idea: smock is a hack that Dan and I wrote a few years ago that lets you build a chain of RPMs in mock. It works out all the dependencies and builds the packages in the right order, using the result from an earlier build to satisfy dependencies in a later build, and being almost completely automated. What really needs to happen is that mock is extended to support this as a native feature.

Contacts:

Mentor(s):

Notes:

[edit] Fedora Spins and remixes

Remixing and making new Fedora Spins is an important part of the community's freedoms, and these coding projects support that.

[edit] Fedora Medical

Status: In progress.

Summary of idea: Here, we are looking for a couple students who have some experience in RPM packaging, python, and bash. This would be a good opportunity to learn in depth packaging and fedora contributor ecosystem.

This is a work in progress and details can be found here: http://fedoraproject.org/wiki/SIGs/FedoraMedical

We are looking forward to do mainly packaging and getting them published to fedora repo. However, we will also be doing some tooling and associated works. So, python and bash will be required.

Understanding fedora package maintainer guideline is required. Having existing packages in fedora will be a plus. Also, the student should be interested in maintaining some of those packages after SOC.

Contacts: Susmit Shannigrahi <susmit at fedoraproject.org>

Mentor(s): Susmit and Mario Ceresa

Notes:

[edit] Create a spin to aid students in education and to help them understand Linux and Fedora better

Status: Proposed

Summary of Idea: The idea is to create a spin which would be more student friendly. It should have some graph plotting tools, some circuit simulator, maybe an equation solving application, IDE for some basic coding and a few compilers which are taught in colleges and other relevant stuff. It should consist of extensive documentation to help students use these tools and Linux in general. A few interesting games and music player would be a plus.

Additionally, if possible, one can imagine to throw up a screen during install which would help in picking the age group of the student. The applications can be installed accordingly. For example, I would like to have a scrabble game for a small kid then a circuit simulator.

Contacts: Ryan Rix

Mentor(s): Ryan Rix (Maybe)

[edit] Educational Application for Fedora Robotics Suite

Status: Proposed

Summary of Idea: Create an educational app introducing software from Fedora Robotics Suite

The Fedora Robotics SIG is creating a Robotics Suite consisting of many packages useful in robotics. We want to develop a demonstration application introducing new users step by step to core packages like Fawkes and Player/Stage. It would feature multiple game-like levels with increasing complexity. The general task would be to instruct the robot to fulfill a specific task in a simulation environment.

Developing this requires a strong background in C++, a background in robotics is preferred but not necessary. You should be able to familiarize yourself with new software quickly. User visible parts will require GUI programming using Gtkmm.

Contacts: Tim Niemueller

Mentor(s): Tim Niemueller

[edit] Dorrie - A Web interface to create Fedora Remixes

Status: Proposed

Summary of Idea: Contribute to Dorrie, and make it more usable, tested and deployable.

More at Dorrie, code at https://github.com/shreyankg/Dorrie, fork and send pull request, if you are interested to contribute.

Contacts: Shreyank Gupta

Mentor(s): Shreyank Gupta

[edit] Aeolus Packaging

Status: Proposed

Summary of Idea: Contribute to the Aeolus family of projects (http://aeolusproject.org), starting with packaging of dependencies not yet in Fedora (http://www.aeolusproject.org/page/Packages_Missing_From_Fedora)

Contacts: Chris Lalancette <clalance@redhat.com>

Mentor(s): Chris Lalancette <clalance@redhat.com>