wiki:SocialPlatform

Version 21 (modified by mitar, 3 years ago) (diff)

Social Platform

Orange's visual programming environment can incorporate any of its over a 100 widgets into schemas that do clustering, classification, visualization-based analysis, PCA, and many others.

Orange Social Platform will provide users of Orange with a way to share and collaborate on those schemas. It will provide a repository of typical schemas:

  • the novice users will be able to choose from the already defined schemas and analyze their own data with them,
  • the intermediate users will be able to use the library to improve/augment their own schemas,
  • and experienced users will be able to store their inventions into a repository for others to use.

This repository will feature tagging, liking, commenting, and everything that a social platform can provide. It will be possible to describe schemas in the repository both text and/or video.

It will also provide users a way to upload their datasets and scripts/code-snippets. The later in a similar way as  Gist, but probably based on Mercurial.

Users will be able to follow each other and their contributions (similar to  Project Noah), use OpenID to login, have their profiles and so on.

Orange Social Platform will be a virtual society for Orange users. Users will not only learn from the platform but also express their opinions and preferences. It will also be possible to export data and events to other social platforms/networks, like blogs, Facebook, Twitter ...

In summary, the project will develop a new social platform for data mining solutions, possibly relying on existing solution (e.g.  myExperiment) or crafting something new (and simpler?). The repository will feature web access, but schemas from it will also be available in Orange (browsing, uploading and downloading). Seamless integration of repository and Orange is crucial to the success of this project. So Orange should be integrated with the well-defined and simple HTTP-based API/protocol implemented on a server/platform side.

Typical Use Cases

Orange

An user is using Orange Canvas, wants to share the schema she has just made with others. With a press of a button she gets a small dialog where she enters the name of the schema, description, tags and this is it. Orange uploads it to the platform, automatically creating a screenshot of the schema and extracts other meta-data (like witch widgets are used, which datasets and so on). In the case that dataset is not one of bundled with the Orange, it asks the user for a permission to also upload the dataset itself. User can also add additional screenshots to the uploaded schemas (of current status of widget dialogs and so on), by pressing some button available in all widgets or something similar.

Social Platform

An user can browse the platform, navigate around schemas by tags, widgets used there, datasets used, author or even users who liked the schemas. Also the user can search it by name or description. Once she finds a schema, she can download it and open it in Orange, comment about it, like it, share it on other social platforms/networks, also edit meta data (updating tags, link it to some other, similar/related schema).

User can also follow the author and receive notifications when the author publishes a new schema, updates existing schemas and so on. So schemas or users she likes, for those she gets notifications (like new comments and so on). (This could also be disabled on per-schema basis.)

User can also browse based on widgets and find all schemas this widget is used in, tags related to the widget and so on.

If the user develops a Python script for data mining she can uploads it to the Mercurial repository hosted inside the platform. Other can follow its changes, also propose changes (through an web editor directly, by cloning the script into their account and do changes there and then inviting the original author to take them in).

User can also browse/search for uploaded datasets.

Milestones

0.1

  • User registration and login, user profiles, a way to send users private message, which would be then send to its e-mail address.
  • Uploading schemas to the platform, parsing of their meta data, screenshots of schemas.
  • Browsing uploaded schemas, searching for them.
  • Downloading schemas.

0.2

  • Commenting on schemas.
  • Tagging by users.
  • Browsing by widgets.
  • Browsing by users.

0.3

  • Uploading datasets. Relating them to widgets and schemas.
  • Commenting on widgets, datasets. Integration with tagging (tags should propagate around).
  • Adding links to widgets description/documentation.

0.4

  • Uploading of additional screenshots (of widgets).
  • Possibility to make a description of those screenshots (by also drawing dots to particular part of the screenshot and describing it and its purpose).

0.5

  • Liking of all different things around the platform. Schemas, users, datasets, widgets ...
  • Notifications/events when something liked changes.

0.6

  • Exporting/sharing data to other social platforms/networks.

0.7

  • Possibility to embed video for schemas next to the text comments and screenshots.

0.8

  • Give users their own script repositories. They can create new one, commit/push to them, fork them. They can follow each other scripts (changes).
  • It should also be possible to tag scripts, like them, share them on other social platforms/networks.
  • Comment scripts should also be possible, also inline (in code). Based on the version of the script currently viewing.
  • Browsing of old versions of the script, diffing between version should also be possible.

0.9

  • Give users way to fork each other script repositories and push the changes they made to the parent repository.
  • Users should have a simple web editor to change their scripts. For users to change their own. And to change forked scripts.

1.0

  • Final version after everything really works.

All code should be documented, all development steps and decisions should be documented in tickets or wiki. For code there should be tests.

Terminology

schema
Combination of widgets and connections between them. Created in Orange Canvas. It is a visual program for data mining.
script
A Python script using Orange Python modules directly, without the graphical user interface. It is possible to do much more power data mining things this way, as widgets only provide some common features. In scripting, you can do much more.

Ideas for the Future

Orange could also use a widget recommendation system from those schemas in the repository. It would learn based on existing schemas and when users would be creating new schemas it would propose probable widgets they want.