**Name**: Anna Liao
**Email**: aliao22@gmail.com
**IRC or IM networks/handle(s)**: aliao
**Web Page**: http://anna-liao.github.io/
**Resume**: http://anna-liao.github.io/images/gh-resume-2016.pdf
**Location**: Calgary, Alberta, Canada
**Typical working hours**: M-F start 8-9am, end 5pm (Mountain Time Zone). I'm an early to bed, early to rise person. I'm usually up at 4:30am, but I do a morning swim workout to start my day.
---
= = *Synopsis =* =
This project will be to develop a Python library to serialize Wikimedia Quiz format, GIFT quiz format, and perhaps other quiz formats. This library will take a Wikiversity quiz and allow export to other quiz formats.
**Possible Mentors**: John Vandenberg, Mvolz
= = *Deliverables =* =
__**Preparation tasks:**__
- Design work for [[ https://phabricator.wikimedia.org/T148161 | T148161 ]], and build a draft python class to demonstrate this.
- Become familiar with existing Python packages that implements other standard quiz formats, as detailed for pyslet in [[ https://phabricator.wikimedia.org/T148315 | T148315 ]].
- Manually convert complex Wikiversity quiz into other standard quiz formats [[ https://phabricator.wikimedia.org/T148314 | T148314 ]].
The goal is a minimum viable product developed at mid-term. The minimum viable product is a Python library that allows for round-trip conversions between the Wikimedia Quiz format and GIFT or other standard format__**Objectives**__
- Evaluation of existing Python packages that implement standard quiz formats.
- Work with the developers of these existing Python packages to contribute Wikiversity Quiz support.
- If we can't get an existing package to take the code for Wikiversity Quiz support, then we will release a new pypi packaged library that extends the existing pypi packaged library to add Wikiversity Quiz format.
- This package would be used by Pywikibot for bot operations, and for other applications and purposes.
__**Milestones**__
!!**Midterm**!!: Minimum viable product of Python library for round-trip conversions between
Wikimedia Quiz format and GIFT or other standard format.
!!**Testing and Documentation**!!: The remainder of the time will be allocated for testing, bug fixing, documentation, and packaging for Pypi.
The biggest obstacle is that the Wikimedia Quiz format is not well documented. There could be large differences or gaps that could cause difficulty in this project and/or require a scope change!!**Final**!!: Adding Wikiversity Quiz support to existing Pypi package, or new Pypi package for Wikiversity Quiz format extension.
The primary deliverable will be a GitHub repo and pypi package that is modular and can be reusable for various projects. It would be preferable and ideal to add this code (support for Wikiversity Quiz format) to an existing standard quiz format library. This package would be used by Pywikibot for bot operations, and for other applications and purposes__**Obstacles**__
The biggest obstacle is that the Wikimedia Quiz format is not well documented. There could be large differences or gaps that could cause difficulty in this project and/or require a scope change.
= = *Proposed Schedule =* =
The internship period is from Dec. 6, 2016 to March 6, 2016. Weekly progress reports will be posted on Friday of each week. Midterm and Final reports will be posted as specified in timeline.
| **Period** | **Task**
| ------------ | ----------
| Before Dec 6 | Community bonding. Investigate existing Python libraries to convert between GIFTWikiversity Quiz and Wikiversity Qother standard quiz formats.
| Dec 6 - Dec 23 | Develop Python library, ideally contributing to existing Python conversion library.
| Dec 26 - Jan 27 | Testing and bug fixing. Refactoring code. Packaging in Pypi.
| Jan 27 | Midterm evaluation due
| Jan 30 - Feb 17 | Testing PyPi package with Pywikibot.
| Feb 20 - Mar 3 | Documentation and wrap up any loose ends.
| Mar 6 | Final evaluation due
= = *Participation =* =
- Project updates and progress will be documented [[ https://www.mediawiki.org/wiki/User:Miriya52/PythonLibrary_serialize_Wikimedia_Quiz_format | here ]].
- Discussion with mentors of preferred communication modes via email, irc, or slack. During proposal preparation, discussion with mentors will be via [[ https://phabricator.wikimedia.org/conpherence/ | conpherence ]].
- Source code will be published on GitHub and packaged in pypi.
= = *About me =* =
**Education and Work Experience**
I have a M.S. degree in Robotics from Carnegie Mellon University and B.S. degree in Electrical Engineering and Computer Sciences from University of California, Berkeley. After graduate school, I worked as a Microdevices Engineer for 4.5 years at NASA Jet Propulsion Laboratory supporting research on extreme environment sensors. I then decided I wanted to apply my tech skills to benefit the environment (on Earth) and worked as a general purpose hardware/software engineer at Lawrence Berkeley National Laboratory (U.S. Dept. of Energy) supporting energy policy research, specifically in the areas of energy efficiency in buildings and impacts of increased penetration of renewables and distributed energy resources on the distribution grid.
**How did I learn about Outreachy?**
I heard about the Outreachy program through social media, and thought this was an excellent opportunity to work on an open source project with guidance from mentors. I am only applying for Outreachy (not eligible for GSoC).
**Time commitment during internship period**
I plan to work full-time from Dec 6, 2016 to March 6, 2017. I do not have any planned vacations during that time. I also volunteer (5 hrs per week) as a project manager for a non-profit called Code for Community (Code4C) to build a software enhancement or feature for other non-profits. The time I spend on Code4C will be outside of the (at least) 40 hours per week that I have planned for Outreachy.
**Open source community**
I am excited to be giving back to open source since I have been able to use many open source libraries and packages for my projects. I also like the community aspect of open source. Just this past year, I really enjoyed the experience of attending PyCon, and also looking forward to attending PyCon Canada in November 2016. I like building systems that are useful, and writing code for open source and MediaWiki will be a benefit to many users. The feature I would be building for this project is an enhancement for Wikiversity. I have taken MOOCs and it would be an honor to be able to contribute to an open online educational site.
= Past experience =
I developed in Python, mostly on Linux, for our projects at LBNL to understand energy use in buildings and on the distribution grid. I used several FOSS python modules and libraries to build these systems.
At LBNL, I built systems that used open source systems created by graduate students in the UC Berkeley [[ https://github.com/SoftwareDefinedBuildings | Software Defined Buildings ]] group. I also used many Python modules including requests, jupyter, matplotlib, django, flask, etc. During these years of using these open source packages, I was amazed at what was available for free, built by people around the world. It was also fun to explore different possibilities and features, and since it was all free, I could try building many things just with a basic Linux platform.