Name: Anna Liao
IRC or IM networks/handle(s): aliao
Web Page: http://anna-liao.github.io/
Location: Calgary, Alberta, Canada
Typical working hours: M-F start 8-9am, end 5pm (Mountain Time Zone, UTC-7 during internship period). 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.
Outreachy proposal on outreachy.gnome.org
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.
- Design work for 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 T148315.
- Manually convert complex Wikiversity quiz into other standard quiz formats T148314.
- Analysis to find features missing from each format, so we can work out acceptable modes of degraded exporting.
- Evaluation of existing Python packages that implement standard quiz formats.
- The functionality is to be able to serialise and deserialise between quiz formats. The data model should be generic, but it needs to retain style/token information so that the round trip has very few dirty diffs.
- 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.
- Goal is general python library that loads any standardized quiz format.
- This package would be used by Pywikibot for bot operations, and for other applications and purposes.
- Use cases:
- Import quiz from other systems into Wikiversity, usually to back up their materials due to other mooc/quiz systems going offline, or being upgraded and they are told they will need to rebuild all their quizzes, etc.
- Generate custom/personalized quiz (in Python) and push to Wikiversity user page
- Gamification of Wikimedia, using Python web apps deployed on the tool labs.
Midterm: Minimum viable product of Python library for round-trip conversions between
Wikimedia Quiz format and GIFT or other standard format. Bi-directional support tool to parse and update Quiz data on Wikiversity.
Testing and Documentation: The remainder of the time will be allocated for testing, bug fixing, documentation, and packaging for Pypi. Testing will include serialise and deserialise the same quiz content to check that the conversion doesn't alter the content.
Final: Adding Wikiversity Quiz support to existing Pypi package, or new Pypi package for Wikiversity Quiz format extension.
- 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.
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.
|Before Dec 6||Community bonding. Investigate existing Python libraries to convert between Wikiversity Quiz and other 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. (Applied to attend Wikimedia Dev Summit Jan 9-11)|
|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|
- Project updates and progress will be documented at this project page: Python Library to serialize Wikimedia Quiz format.
- Discussion with mentors of preferred communication modes via email, irc, or slack. During proposal preparation, discussion with mentors will be via conpherence.
- Source code will be published on GitHub and packaged in pypi.
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 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 on this Outreachy project 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.
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 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.