User:Connorschlesiger/GSoC 2013 Proposal

My name is Connor Schlesiger and I am applying for the Google Summer of Code 2013. Constructive feedback is greatly appreciated. You may contact me by email, IRC, or via the talk page.

Curriculum Wiki

 * Public URL: https://www.mediawiki.org/wiki/User:Connorschlesiger/GSoC_2013_Proposal
 * Bugzilla report: Link
 * Announcement: Link

Name and contact information
Name: Connor Schlesiger Email: connor@undefinedschlesiger.ca Timezone: EDT Typical working hours: I am very flexible about my working hours, but I would prefer a steady routine. IRC: wallzero (freenode)

Synopsis
Educational resources are growing online at increasing rate. From encyclopedia's, textbooks, syllabi, courses, quizzes and exams; these resources have become digital and public. Availability online, however, does not equal accessibility.

How do you learn what you need to know? How do you know what you don't know? Curriculum and syllabi forge a path of knowledge and map a sensible learning strategy. Today, the content is available online, but a clear path to knowledge can be incomplete or difficult to discover.

I call my proposal the "Curriculum Wiki". The wiki aspect of the project would focus on the ability for all users manipulate the relations between educational materials. Wikidata would serve the initial foundation of content, and a new interface would be designed.

Interface
A clean, uncluttered interface would be used, and minimal data would be initially represented. Data would be contained by nodes. Straight lines would connect nodes. The lines would contain arrows representing the path of content. Nodes would contain very little text, to keep them as non-intrusive as possible - and to save on window real estate. The nodes expand as the user selects or hovers on them. Nodes move out of each others way and can also be dragged. A small node would only contain a title, while a focused node would also contain content links. Browsing through nodes would be like reading a map. The nodes would continue off-screen, and the user will bring them into view by dragging the background of the screen (similar to Google Maps).

Content links would point to encyclopedia's, textbooks, articles, and applicable quizzes and exams. Users can add content links to each node or create new nodes. Users can also create there own semantic network from scratch or copy sections of others. Users can edit node connections by dragging an edge of the focus node to the edge of another node. With user editable connections, this starts to become a true Wiki. The URL would be used to focus on profiles and focus nodes.

Diagrams
''Confused? Rough diagrams are coming...''

Problem Addressed
With the completion of this project, curriculum's can be collaboratively developed. Content and quizzes from educational institutions abroad can be incorporated in easily navigable lists. Users can create and share profiles of syllabi, courses, readings, and quizzes. Educational resources everywhere become much more accessible.

Technology Involved

 * PHP
 * MySQL

I would also be interested* in testing:
 * Node.js
 * NoSQL with HyperDex.

\*Note, I that I have no objection to PHP and MySQL if required.

For the user interface, I suggest using HTML5 and CSS3. Modern browsers will initially be a requirement.

A draggable interface would require Javascript and JQuery. AJAX will pull data and nodes as the user moves across the page.

Key Features

 * Navigable semantic network initially derived from Wikidata
 * Easy to build, collaborative curriculum/syllabi
 * Collection and organization of educational materials

Examples
A great collaborative effort in the Reddit community to compile a list of many educational resources: Draggable divs and other elements are possible Here is a similar interface to what I am proposing: Note the above creator has also used this concept with books and movies as well... Another example - also with music artists - but uses flash:
 * Reddit, let's compile a list of the best online learning centers.
 * Draggable div Tag
 * Music Map
 * Tune Glue Music Map

What About Wikiversity?
Wikiversity is a terrific site among many great learning tools. However, the content does not reference any outside lessons or quizzes. Also, it falls short in design and aesthetics. Perhaps one day all educational content will be located on one site, but that is unlikely. For example, many wiki-esque sites already exist for special cases; such as Star Trek or Pokemon.

What I am proposing would serve as a collaborative curriculum and as aggregator of educational links. Content can be produced by others and Curriculum Wiki users can link those lessons and quizzes to the appropriate nodes. By delegating out the content, the focus is on the semantic network, links, and interactivity.

What about Semantic Wiki?
On IRC I was told not to use Semantic Wiki, for it's development has slowed and Wikidata is taking over.

Summary
I don't believe Curriculum Wiki is a very good name. I am open to suggestions. Semantic Network Wiki is too scary.

I feel the really hard work is done, by the creation of the content by the vast contributors to Wikipedia. Wikidata has also begun digesting that content into accessible data. Let's begin aggregating content not only from Wiki sources, but around the world, into digestible, accessible, educational tools. Let's organize that content into collaborative, interactive data.

Also, folks are already collecting great sources of educational tools. Here is a wonderful list compiled on reddit.

Mentors
None so far. I am late to the party.

Deliverables
This proposal is likely out of scope. The initial project should focus on design, and content and semantic retrieval.

Required Deliverables

 * 1) Curriculum Wiki Design: How and where information is represented will be complete;
 * 2) Curriculum Wiki Functionality: The basic interaction of the site - dragging nodes, navigating across the page, populating nodes - must work;
 * 3) Curriculum Wiki Semantic Retrieval: The project will need to retrieve data from Wikidata and represent it in the semantic network;
 * 4) Curriculum Wiki Navigation: Navigation via dragging the page and bookmarks;
 * 5) Curriculum Wiki Documentation: Proper documentation of completed works;

Potential or Future Deliverables

 * 1) Curriculum Wiki Aesthetic Design: This project will need to work around the functionalities and navigation, while maintaining the feel of MediaWiki;
 * 2) Curriculum Wiki Search: Searchable nodes, subjects, curriculum, user profile;
 * 3) Curriculum Wiki Modifications: Node modifications, adding additional data;
 * 4) Curriculum Wiki Creations: User created semantic networks, with ability to copy or partially copy other networks;
 * 5) Curriculum Wiki Profile: Tie user accounts to MediaWiki;
 * 6) Curriculum Wiki Languages: Integrate translational functions;
 * 7) Curriculum Wiki Export: Some form of export;
 * 8) Curriculum Wiki Accessibility: Incorporate accessible and empowering tools for those with disabilities and special needs;

Resources
I have the ability to host the project myself. I manage personal Debian VPS's that I am comfortable using for early prototyping.

Before May 27
Learn more about MediaWiki infrastructure and the Wikidata project.

May 27 - June 17
Community bonding period I have recently been lurking the MediaWiki IRC channel. I will be participating in the community before and during this period.
 * Study the Wikidata or MediaWiki API. Determine primary technologies;

June 17 - June 23
Communicate with mentor. Develop a concrete plan and schedule.
 * Setup prototyping machine.
 * Setup Nginx, MySQL, possibly Node.js and HyperDex
 * Setup Github page
 * Install relevant API's from MediaWiki
 * Begin early testing; learn the API

June 24 - July 14
Produce Preliminary Documentation: Begin coding Deliverables: Design Deliverables: Functionality
 * Requirements Specification
 * Design Documentation
 * First develop rough HTML model and corrosponding CSS
 * Develop scripts for interactivity
 * Develop PHP to generate page, with AJAX (or Javascript?) repopulation
 * Follow best practices for future updates (ex. additional languages)

July 15 - August 4
Start pulling data from Wikidata Deliverables: Semantic Retrieval
 * Figure out how to only store changes of Wikidata data, not all of Wikidata or MediaWiki (No users profiles or changes at this stage)
 * Finally show off some form of a semantic network
 * What!? No bugs whatsoever? ...sure to be bugs at this point.
 * Unit Testing

Mid-term evaluation
Count the sheep

August 5 - August 30
Complete navigation.
 * Navigate via dragging screen, bookmarking nodes. Perhaps search?
 * Begin checking off deliverables and bug fixing.
 * More Unit Testing

September 1 - September 10
Final cleanup of code and documentation. Fix any outstanding bugs and document those unfixed. Final merge.

September 11 - September 15
Complete Documentation Deliverables: Documentation

September 16 - September 22
Submit project. Continue tinkering, bug fixing, etc. Perhaps begin fixing and merging extra deliverables which were too buggy for launch.

About Me
I recently completed the 5th year of my computing systems undergrad. I enjoy programming and systems administration as a profession and hobby. I do my best to be security conscious in my work. I enjoy reading about industrial and functional design. Please visit my profile for further information, contact info, and links to my website and blog.

Participation
I hope to capture much of my experience on my blog. I will be posting weekly on my progress and issues. Github will be used for version control.

I use IRC for communication. I have an IRC bouncer to record and relay my messages when I am away. I have subscribed to the #mediawiki and #wikimedia-wikidata channels. I am also aware of the Wikidata-I and Wikitech-I mailing lists for further assistance.

I setup a Murmur server for voice communication. I also can be reached anytime by email.

Past open source experience
I have not contributed significant code to open source communities. The first project open source project I participated in would be XBMC starting around 2004. The last contribution I can recall was submitting a patch to Squid to allow authentication using Dovecot's password hashing scheme. I have not kept records of my participation. I have previously participated in forums assisting others with technical difficulties, along with IRC. I recognize that my participation in open source communities is something which needs to be improved.

Thank You
I appreciate your interest. I look forward to further discussion. Connor Schlesiger (talk)