From Fedora Project Wiki

Contact Information

  • Email Address: wanzuhao AT gmail DOT com
  • Freenode IRC Nick: zuhao

Why do you want to work with the Fedora Project?

I have always been a huge fan of FOSS. In fact, it was Linux that brought me to the wonderland of programming when I was much younger. Fedora is one of the best FOSS communities and countless people have contributed to make it great. I would love to work with the Fedora Project because I want to be more than just a user; I want to be a developer. Although I have not yet contributed much to the Fedora community, participating in GSoC 2012 and working with the Fedora Project will definitely be an amazing opportunity for me to get involved and better prepared for future projects.

Do you have any past involvement with the Fedora project or with any another open source project as a contributor (if possible please add some references as well)?

No, I have not yet had past involvement with the Fedora Project.

Did you participate with the past GSoC programs, if so which years, which organizations?

No, I have not participated in the past GSoC programs.

Will you continue contributing/ supporting the Fedora project after the GSoC 2012 program, if yes, which team(s)/area(s), you are interested with?

Yes, I definitely will continue contributing to the Fedora Project after he GSoC 2012 program, especially to the Ruby Special Interest Group. I would like to contribute in packaging Ruby libraries and applications, setting and improving standards for packaging them as rpms and maintaining Ruby packages for Fedora. This project is still in its infancy; a lot can be done to improve the current state of Ruby/Fedora integration and promote Fedora as the de-facto platform for Ruby development.

Why should we choose you over the other applicants?

First and foremost, I have a great passion and desire to contribute to the FOSS community, especially Fedora. The project I am going to do will bring benefits not only to Fedora, but also to the Ruby community as well as the general users of FOSS.

In addition, I have six months' working experience of web development and database management in a big organization, Bank of America Merrill Lynch Global Technology and Operations Division. I worked as an intern in the Electronic Trading Data team and developed web portals for the users to access all kinds of data they need. I have a good understanding of how to design a website that achieves its purpose most effectively. Moreover, I have been a Linux user for over six years, and I am very comfortable with Ruby, Python and Java programming, as well as shell scripting and system administration.

Therefore, I believe I am the most suitable applicant for this project.

Proposal Description

An overview of your proposal

This project is part of the effort to reduce the overhead in supporting Ruby on Fedora and to promote Fedora as the de-facto platform for Ruby development. The Fedora/Ruby community works hard to convert the Ruby gems into rpms for inclusion in the Fedora stack. I will develop a website ( to promote such effort, highlight success stories, use cases, ways to help, etc.

The need you believe it fulfills

Although there are many brilliant developers in Ruby SIG working hard to promote the Fedora/Ruby integration, it is not enough to rely on their efforts solely, because of the scale of the project and the large amount of gems need to be converted. Therefore, it is very important to make more people aware of the project, so that more attention, and thus help and contribution, will go to this project.

The website fulfills the needs of both the users and the developers. It serves as the main repository that keeps track of the progress of all the gems that need to be converted into rpms.

On one hand, the users will be able to see if their favorite gems have already been converted into rpms successfully. If not, they will be able to vote for the gems that they want the most. The website also serves as a place for the users to comment on the already-converted gems. After they try the rpms, they will be able to leave comments, suggestions or even bug reports.

On the other hand, the developers can track the progress for each gem. The votes from the users will help a lot in prioritizing tasks. Developers can easily decide, among thousands of gems, which ones to spend the most resources on, as they are wanted by most people. Besides that, other developers who want to contribute can also find documentation on ways to help.

In addition, there will be pages showcasing success stories and projects such as Aeolus, BoxGrinder and Puppet. These will help to publicize and promote the fruitful achievements and the promising future of the Fedora/Ruby integration project.

Any relevant experience you have

I am a CS Major sophomore in National University of Singapore. I have six months' working experience in Bank of America Merrill Lynch Global Technology and Operations Division. I was in the Electronic Trading Data team and my job dealt with huge amount of data ranging from clients' every single transaction to quotes of securities traded in exchanges all over the world. I spent quite some time developing web portals to organize and present the data to different users such as analysts and sales traders. I learned the importance of designing a web site that achieves its purpose most effectively. I also gained a lot database management skills.

The most important purpose of the website is to promote the Fedora/Ruby integration. In order for it to appeal to more users and developers, the features of the website, as well as the organization of the related data, have to be well designed and managed. Therefore, my experience is very relevant and useful to the project.

How do you intend to implement your proposal

I will use Ruby on Rails to implement the website for this project. The list of all gems will be grabbed from, together with relevant information such as authors, links, licenses and summaries. This will be stored in the database which will update periodically.

The following describes the design of the main pages, which include most of the website's features.

Users can search for their favorite gems, or browse all gems listed on this website. This feature is universal to all pages. There is no need to go back to homepage in order to browse or search for gems.
There are three lists, namely "What's New", "What's Hot", and "Most Wanted". "What's New" list displays the latest work of gem/rpm conversion. Users are able to see what gems have just been converted into rpms recently.
"What's Hot" displays the most downloaded/commented rpms. When a user finds and downloads an rpm, he or she will be able to comment it and indicate if the rpm works for him or her. The more downloads and comments of an rpm, the higher it will be in the "What's Hot" list.
"Most Wanted" displays the gems wanted by the most users. Since the Fedora/Ruby project is still in its infancy, there are a lot of gems which have not been converted into rpms yet. Therefore it is very important to prioritize them and best utilize resources and manpower. The "Most Wanted" list fulfills such needs. This also improves the efficiency of the whole Fedora/Ruby project development because most wanted (thus important) gems will have highest priority; as a result, the conversion will hopefully be done faster. This is a effective way to engage both the users and the developers.
Below the three lists, there is a panel for showcasing success stories such as BoxGrinder, Aeplus, Puppet and other projects. This is the place to publicize the efforts and achievements of the project.
For those who are interested in helping the Fedora/Ruby project, there are useful links such as introductions, tutorials and examples. Of course, there is a link to the full "Most Wanted" list.
When a user searches for a particular gem which has been converted into rpm already, he or she will be able to see the information about the gem/rpm, such as the authors, the links, and the summary.
The user can leave a comment about the converted rpm, indicating if it works or (unlikely) it does not. Other users will be able to see the comment, and it will affect the ranking of the rpm in the "What's Hot" list.
On the right side, there are tags of the rpm, and a list of related rpms based on the tags or categorization.
When a user searches for a particular gem that has not yet been converted, he or she will be able to vote for the gem, and thus improves its ranking in "Most Wanted" list. The user will be notified via email once the conversion of the gem has been done.
Browse All
This page will list all gems grabbed from, as well as the progress of their conversions. Users can click on each gem and be re-directed to either Search_Found or Search_NotFound depending on its current status.
Most Wanted
This page will list all unconverted gems sorted by their "votes". This page is particularly useful for developers and whoever wants to help, as they can easily decide which gem deserves the highest priority.
This page contains several useful links to the information that will help a new contributor to get started. Such links include introduction, tutorials, how-to's, success stories and examples.

These are my thoughts about the main features, however since the website is still in its initial design stage, none of the above is finalized. I believe implementation details can be ironed out as I go along, but it is very important to have a thorough discussion with my mentor regarding the use cases, features and design of the website. The use of Rails framework makes it easy to add new modules and features when need arises in the future.

Final deliverable of the proposal at the end of the period

At the end of the summer, the deliverable of this project will be a fully functional website that serves as the main repository to keep track of the progress of Fedora/Ruby integration. Users will be able to see the gems already converted into rpms, vote for gems that have not been converted, and comment on each gem. Developers will be able to track the progress of each gem's conversion to rpm. There will also be showcases of success stories and documentation on ways to contribute.

A rough timeline for your progress

  • Before April 23, continue to brainstorm possible features and use cases of the website. The feasibility of each feature also needs to be carefully reviewed as some might take considerably more effort to implement.
  • April 23 to May 14, I will start discussing and try to finalize the features and use cases of the website with my mentor. It is a good time to get to know other developers in the community and very likely I will have new ideas from the discussions with different people.
  • May 15 to May 21, study the design and source code of Before the actual coding starts, I will try to figure out how to get all the gems and related information from, as it is the core component of this project.
  • May 21 or possibly earlier if design and features are finalized, I will start coding for the project.
  • May 21 to June 10, finish modules that get, organize, and store the information of all (2000+) gems from in the database.
  • June 11 to June 25, finish modules that poll and refresh all converted rpms from Fedora package database.
  • June 26 to July 9, integrate the above modules for managing the underlying gem/rpm database of the project.
  • July 9 to July 13, write and submit mid-term evaluation.
  • July 13 to July 20, finish comments module that allows user to indicate if the rpm works and leave comments.
  • July 21 to July 31, finish voting module that allows user to vote for unconverted gems, and ranking module that calculates the ranking of each gem/rpm in What's Hot and Most Wanted lists.
  • August 1 to August 10, create static contents, i.e. success stories and pages for developers such as documentations, tutorials, examples, and other links.
  • August 10 to August 20, test and further polish the website. Add minor features if needs arise and time permits.
  • August 20 to August 24, write and submit final evaluation.
  • August 24 onwards, continue to maintain and improve the website.

I will report the progress of the project to my mentor on a (bi)weekly basis via e-mail. Meanwhile, I will not hesitate to raise any questions in IRC if I can't solve them in a reasonable amount of time. Active communication with my mentor and other developers is very important for us to see if the progress is on track. In addition, throughout the entire project I will maintain a development blog to keep track of everything related to the project such as progress, obstacles, and things I have learned.

Any other details you feel we should consider


Have you communicated with a potential mentor? If so, who?

Yes. I have communicated with User:Mmorsi. We discussed a few ideas about the possible features of that are not mentioned in the idea summary.