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

edit


Name and contact information

edit

Name: Connor Schlesiger
Email: connor schlesiger.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

edit

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

edit

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

edit

Confused? Rough diagrams are coming...

Problem Addressed

edit

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

edit
  • 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

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


Examples

edit


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:


Questions

edit

What About Wikiversity?

edit

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.

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

Summary

edit

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

The hard work is being done by the vast contributors to Wikipedia. Wikidata has begun digesting that content into accessible data. With Wiki Curriculum, we can begin aggregating content not only from WikiMedia sources, but from any source, into a collaborative, interactive, accessible educational format.

Mentors

edit

None so far. I am late to the party.

Deliverables

edit

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

Required Deliverables

edit
  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

edit
  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

edit

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

Schedule

edit


Before May 27

edit

Learn more about MediaWiki infrastructure and the Wikidata project.

May 27 - June 17

edit

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

edit

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

edit

Produce Preliminary Documentation:

  • Requirements Specification
  • Design Documentation

Begin coding

  • 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)

Deliverables: Design
Deliverables: Functionality

July 15 - August 4

edit

Start pulling data from Wikidata

  • 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

Deliverables: Semantic Retrieval

Mid-term evaluation

edit

Count the sheep

August 5 - August 30

edit

Complete navigation.

  • Navigate via dragging screen, bookmarking nodes. Perhaps search?
  • Begin checking off deliverables and bug fixing.
  • More Unit Testing

September 1 - September 10

edit

Final cleanup of code and documentation. Fix any outstanding bugs and document those unfixed. Final merge.

September 11 - September 15

edit

Complete Documentation
Deliverables: Documentation

September 16 - September 22

edit

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

About Me

edit

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

edit

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

edit

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.

See also

edit


My 4th year software engineering project

Wikipedia page for Semantic Wikipedia

Wikipedia page for Wikidata

Thank You

edit

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