Git transclusion in MediaWiki/Application

From mediawiki.org

Name: Teresa Cho


E-mail address: tcho708 AT gmail DOT com


IRC Nick: terrrydactyl


Web Page / Blog / Microblog: http://terrrydactyl.wordpress.com/


Location: Redwood City, CA. USA


Education completed or in progress (i.e., university, major/concentration, degree level, and graduation year): I graduated from the University of California, Davis in March 2012 as an undergraduate with a double major in computer science and economics.


How did you hear about this program? I went to a Women Who Code talk about Open Source. It was given by Cat Allman who manages Google's open source outreach program.


Please describe your experience with the organization's product as a user and as a contributor (include the information about the contribution you made to the project you are interested in here): Like many internet users, I've used Wikipedia and many other wikis that use Wikimedia's software. The wealth of information that Wikimedia manages to generate is mind boggling and I personally feel that the world is better for it. Wikis are a revolutionary method of exchanging information and it's amazing that a community of people can collaborate together to contribute to it. I've found the world of wikis to be an enriching and fulfilling tool, which is why I chose Wikimedia to be my organization. I want to support and contribute to a project that I'm passionate about and I've found it. I haven't officially contributed anything to the organization, but I feel that my initial contribution gives me a glimpse of what I'd be doing during this internship and I've been very excited to work on the project.


Please describe your experience with any other FOSS projects as a user and as a contributor: FOSS has always been an intimidating concept for me so I haven't contributed to a project. If accepted, this internship will be my first foray into the world of FOSS. I've always wanted to contribute to open source, but I've always felt that it was overwhelming to get started; there are just so many projects out there and I didn't have the resources to narrow down my choices. I think this program is an amazing opportunity to contribute to the wonderful world of FOSS.


Please describe any relevant projects that you have worked on previously and what knowledge you gained from working on them: As a computer science student, I've created many programs and have been indoctrinated to the fundamentals of computer science. One notable project is a iPhone app that I created with two teammates during my senior year. We created it from scratch with a fully interactive backend. During the project, we had to learn new languages and frameworks, Objective C and Ruby on Rails, and dipped our feet in the world of real life applications. After graduating, I decided to work on learning new languages and expanding my programming skill set. I've been actively learning Python and Ruby and I've really been enjoying working in those languages. I find that learning new languages is an interesting challenge because it keeps my programming skills sharp. For my project, I'm going to be learning PHP and I've always wanted to learn it. This would be a wonderful opportunity to delve into the language. With the support of my mentor/s and the structure of this internship, I feel that not only will I be learning PHP in a great environment, I'll also learn a lot on how to contribute to FOSS.


What project(s) are you interested in (these can be in the same or different organizations)? I'm interested in the git Repository Extension, EtherEditor, and UploadWizard from Wikimedia's project list.


Please describe the details and the timeline of the work you plan to accomplish on the project you are most interested in (discuss these first with the mentor of the project): The project that I'm most interested in working on is the git Repository Extension (https://www.mediawiki.org/wiki/Talk:Outreach_Program_for_Women#Write_an_extension_for_pulling_files_from_a_git_repository). Currently, I've written a Python script to pull git repositories and return a range of lines from a specific file as my application contribution. Eventually, I will be converting the Python script to PHP. I've discussed our proposed timeline with my mentor, Mark, and this is the proposed timeline:

- Week 1: Mark will help me navigate through the main structure of the git extension project, and how it will mesh with Wikimedia's products. - Week 2-3: With the help of my mentor, I will be writing the base functionality of the extension. I will be updating my initial script to PHP and polishing it. Since I'm not familiar with PHP, I'll be spending time learning PHP as well. Currently, the script deletes the repository when it's done, but ideally, we'd like to keep a working copy and updating periodically. - Week 4-End: Once I've completed the base program, I'll be researching the best ways to store and update git repositories along with things like clearing out unused repositories and ensuring that disk space doesn't exceed a certain quota. Then the rest of the time will be devoted to improving the extension with more features or optimizations, I've considered a few options such as extending this to work with Mercurial, and adding in an option to update the wiki's git repositories whenever there's a change. There will probably be extensive testing done during this time as well.


Will you have any other time commitments, such as school work, another job, planned vacation, etc., between January 2 and April 2? I currently don't have any commitments that would interfere with this internship.