== * (This is in draft mode.) * ==
**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 =
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).
Include a brief, clear work breakdown structure with milestones and deadlines. Make sure to label deliverables as optional or required. It’s OK to include thinking time (“investigation”) in your work schedule. Deliverables should include investigation, coding, deploying, testing and documentation.
For the outreachy application, a small contribution to complete a microtask will be made for pywikibot. analysis to find features missing from each formatThe preparation task is design work for https://phabricator.wikimedia.org/T148161, so we can work out acceptable modes of degraded exportingand I plan to build a draft python class to demonstrate this.
A good preparation task, is starting on the design work for https://phabricator.wikimedia.org/T148161 , and you may build draft python class code to show how you would implement iThe 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 format.
50% time for core tasks. Minimum viable product developed at mid-term.
50% time for testing, bugfixing, documentation, and deployment.
Since the estimated time for an experience developer is 3 weeks, the estimated time for an intern is 9 weeks (assuming that includes development,The remainder of the time will be allocated for testing, bug fixing, documentation, and deployment)packaging for Pypi.
The biggest hurdle is the Quiz format used by the MediaWiki extension is not well documented, which is fairly easy to fix, however it is a risk as we cant yet do a gap analysis of MediaWiki Quiz format vs GIFT format - there could be some very large differences that cause the difficultly of this project to rise steeply,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.
One of the goals is that a new githubThe primary deliverable will be a GitHub repo and pypi package would be created for the generic and re-that is modular and can be reusable functionality . Thator various projects. This package would then be used by Pywikibot as required to performfor bot operations., However the package should also be usableand for other applications and purposes.
= 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. Write python classes to represent GIFT and Wikiversity Quiz formats.
| Dec 6 - Dec 23 | Develop conversion between formats
| 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 =
We don't just want to know what you plan to accomplish; we want to know how. Briefly describe your work style: how you plan to communicate progress, where you plan to publish your source code while you're working, how and where you plan to ask for help. (We will tend to favor applicants that demonstrate a clear vision for what it means to be an active participant in our development community.)
- 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 atin 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.
= Any other info =
Most of my development for my LBNL were in private repos, subject to IP agreements and such. [[ https://github.com/anna-liao/Misc/blob/master/Gridium-Go-clean.ipynb | Here ]] is an example of my code to implement a move in Go. I wrote this during a 3 hour flight.
= See also =
Add other links that might be relevant. (optional)