MohdIzharFirdaus/GSOC2008

= About Me =

My name is Mohd Izhar Firdaus, an existing Fedora contributor in the Ambassador project and also a maintainer to some packages. I am a 21 years old, 3rd year undergraduate student in PETRONAS University of Technology, Malaysia (http://www.utp.edu.my/). I know basic C and Java, but more comfortable with Python.

I know how to use Django and have some basic understanding of TurboGears. My visual artistic skill is not good but I appreciate well designed and written modular code. My current skills mostly are in sysadmin related functions (automation scripts, deployment, infrastructure) and would like to have some experience in development for a change.

Blog: http://blog.kagesenshi.org

!LinkedIn: http://www.linkedin.com/in/kagesenshi

= GSOC Application - PackageWebUI =

Title
Package WebUI

Abstract
Fedora lacks of an integrated interface for users and contributors to quickly keep track of software packages. The current Fedora PkgDB was close to solve this issue, however, it is mostly focused for package maintainers rather than for users.

This idea mostly is to add more value to PkgDB by adding more user-centric or for-convenient features and add better integration with Koji and Bodhi.

Possible improvements:
 * View list of bugzilla entries related to package
 * Show a list of updates-testing package which need testing - perhaps allow users to subscribe for updates-testing notification.
 * detailed description of packages - perhaps similar to Fedora Daily Package's elaboration
 * link to upstream { site, source, etc }
 * link to install package
 * view/add/edit contributed howto/documentations
 * reports of latest packages built on koji
 * new version nagging

http://fedoraproject.org/wiki/SummerCoding/2008/Ideas#head-fc035207c713afb64340dc9c1fdfcda3ae963f53

Background
My primary motivation is to provide a place to users to start participating and contributing in fedora packages. The WebUI should be able to become a one stop place for these users to get information of the progress of the package they are interested in. Fedora infrastructure, especially koji and bodhi, are not quite known by people outside the community itself, and the interfaces is more focused for existing contributors. This WebUI will be a bridge for users to link users to the 2 technologies.

Use Cases
John is a fedora user. He want to know a good drawing software on linux. He goes to pkgwebui.fp.o, searched through the tags and found inkscape. He clicked link to inkscape's page in the webui, and there he can see detailed description about inkscape, a screenshot, and links related to inkscape.

Ryan is a contributor. He is interested to help testing and triaging several packages in fedora. He open the pkgwebui's page of the package he is interested in, and he can view bugzilla links and subscribe ATOM/RSS of bugzilla entries of the packages. He can also subscribe to any notification for updates-testing of the package.

Gerald is an upstream. A user asked for more details on how to install/use the upstream's software in Fedora. Gerald points the user to pkgwebui url of the package, and the users can get the details there.

Benefits to Fedora

 * Users can acquire information about packages more easily
 * A comfortable one-stop place for package maintainers to view and manage their packages
 * help encourage contribution through making bodhi and bugzilla details easily accessible

Technical Details
Feature: Bugzilla entries listing
 * python-bugzilla should be able to provide an API to communicate with bugzilla

Feature: Bodhi Integration
 * I have no idea (yet) on what API bodhi provides for 3rd party applications
 * Will require investigation on how to query Bodhi for per-package, recently pushed, updates-testing packages

Feature: Detailed description of packages
 * This should be trivial, a new class in TurboGears to store these details

Feature: Link to upstream
 * automated method would be querying the rpm package for URL and SOURCE tags.
 * manual method -> just add a field in the description class

Feature: Contributed Documentations
 * A minimal TurboGears wiki perhaps?

Feature: WebInstall button
 * will be depending whether somebody actually going to develop the clients for webinstall or not
 * pkgWebUI will only link to the WebInstall metadata

Feature: Koji integration
 * Koji provide API for querying it, should be possible to query for latest builds listing

Why Me
As a package maintainer i feel the features above would help me, and possibly others to better provide information for users of my packages and allow them to give better feedback and help out. I am familiar with some of the common processes involved in koji and bodhi.

I am passionate about Fedora and would love to see more people easily contribute to FP.O

= GSOC Application - PackageKit WebInstall =

Title
PackageKit WebInstall

Abstract
Several distros such as Ubuntu and OpenSuSE have an infrastructure for automated package installation through a web page. Fedora however, does not have this. This project will design an implementation of WebInstall for Fedora and integrate it with Fedora package management app, possibly PackageKit so that it can be used across distributions.

Background
This project will aim to provide an easy way for users to download Fedora packages through the web. Other possibilities is to also integrate automatic repository installation.

http://fedoraproject.org/wiki/SummerCoding/2008/Ideas#head-840acbe959ff6d0b1ba2e5e6901cc92da75c6090

Use Cases
John searches the Internet for a drawing software. He found about Inkscape and visited the site. Inkscape upstream provided a link to the WebInstall URL for Fedora. John clicks the link, and he get Inkscape automatically installed from Fedora Collections repository.

Ryan want to install a software from a 3rd party repository. The 3rd party repository provides a link to WebInstall the software from its repository. Ryan clicked the link, and WebInstall warns about compatibility of the repository and explain the problem of mixing repositories. Ryan understand the problem but chooses to continue anyway. WebInstall automatically installs the repository's RPM and fetch the software from the 3rd party repository.

Benefits to Fedora

 * A good way for upstream to point users to packages which already in Fedora's repository
 * Allows 3rd party providers to easily provide their fedora-compatible packages to users

Caveats

 * Mixing repositories is bad. WebInstall might indirectly encourage mixing of repositories. So, a mechanism need to be figured out to limit repository installation to a list of trusted and compatible repository.

Components
There will be at least 3 main components for this feature: XML metadata format, URL Handler, Browser Integration.

XML Metadata Format
The XML metadata will provide information about the basic details about the package location and other related fields. Possible hierarchy:


 * Generic Name
 * Generic Description
 * Distribution
 * package name
 * repository name/id
 * repo url
 * repo desc
 * repo package

URL Handler
The URL Handler will be a command which will invoke PackageKit, check for repository compatibility, install repository and install the packages. It can be called normally through command line, through any "Open With" menu, or through a browser plugin.

Browser Integration
This feature will be integrated to some extend to the default webbrowsers of the distribution. Perhaps through a specially assigned URL prefix for it. Another option is to register the metadata format as a mimetype and let browsers display the Open With the URL handler when people tries to open the XML metadata

Why Me
I've done a similar hack for this using bash and system-config-packages just for fun. Therefore, I have have a good idea on how this would be implemented.

I have been with using Fedora for more than 3 years and understand my way around RPM and YUM.

= GSOC Application - PackageKit Offline Packs =

Abstract
Fedora Collections is a large repository of FOSS softwares. However, not everyone have enough bandwidth to download packages directly through yum. The fast update cycle of Fedora stable release also is hard for these users to keep up especially for large packages like OpenOffice.Org or Eclipse.

There have been an approach of creation of YumPacks by the previous GSoC student, Debarashi Ray, through a utility he named, Opyum. As Fedora is moving away from Pirut/Pup to PackageKit, the implementation could be modified to be more generic, plugins-based, and distro independent implementation.

This project will focus on adding Generate YumPacks support into PackageKit and provide plugin hooks for others distro to also implement similar feature and benefit through PackageKit. Another focus point is the implementation of automatically importing YumPack media for use.

Core Functionalities

 * Export Profile
 * Create Packs from Profile
 * Install Packs
 * Allow others to develop plugins for other package manager

Internal Details

 * Export Profile
 * Pre
 * ensure no transaction is running
 * Build
 * copy out rpm database
 * insert metadata XML
 * zip package
 * Create Packs from Profile
 * Pre
 * extract profile
 * parse and verify metadata with distro
 * Build
 * yumdownloader --resolve --root=/path/to/profile packagename
 * createrepo with comps.xml?
 * Post
 * Allow several mode of output, zip file, folder, ISO
 * Install Packs
 * Pre
 * install repository
 * disable other repositories
 * Run
 * run pk-applications, allow users to select what to install/update
 * Post
 * revert repository settings to normal
 * Allow others to develop plugins for other package manager
 * Provide the core hooks for creating and installing packs
 * create.pre, create.build, create.post
 * install.pre, install.run, install.post

Why Me
During the early development of Opyum (formerly known as Rum), I used to use Debarashi's prototype script of Opyum and understand the base idea surrounding Opyum pack generation. I understand quite well on how to generate Packs for Fedora as I have been manually creating my own manually for my friends in our limited university network and utilized system-cdinstall-helper as the Pack's GUI browser.

= GSOC Application - Func Modules =

Func might be useful for sysadmins .. but what should I write for func?



= GSOC Application - Template =