Technical Design Document 1

This document has been superceded by the more recent version:

http://docs.google.com/Present?docid=dcwg9z28_376dsvwhwmc

Introduction

The modelling4all system aims to support classes, research groups and individuals in constructing, disseminating and discussing models. The process and concepts behind modelling will be discussed within the system e.g. in the teaching and learning resources and the 'Tour' pages. Here are some resources to start off with:

  1. http://www.ist.ucf.edu/background.htm#modeling
  2. http://www.psychstat.missouristate.edu/introbook/sbk04m.htm
  3. http://en.wikipedia.org/wiki/Model_%28abstract%29

This document will be revised throughout the project as we refine our understanding of the needs of the target modelling community, and learn more about the technology that we can use to provide this functionality. Below is a description of the main 'areas' of the system, and notes on interoperability between the system and other tools.

System design

Below is a description of the main 'areas' of the system. These 'areas' do not relate directly to the implementation at a technical level e.g. web pages, they provide a conceptual overview of the system as a whole.

Home page (public)

Purpose
The main purpose of this page is to advertise the system, and describe the main services it provides.

User actions

  • Link to main areas of the site e.g. explore and experiment, construct and …
  • Create account
  • Take a tour

Annotated screen design

Home1.jpg

Functionality

  1. A model profile including movie and description minimum. This area can be clicked to go to the Construction area of system
  2. e.g. The art and science of constructing models
  3. Create account
  4. Take a tour will provide an overview of what teachers, researchers and community-aided students can do with the system
  5. Take the user to Explore and Experiment area of site
  6. Take the user to Construct area of website
  7. Will take the user to a Create Account screen since they will not be able to discuss, rate, tag, or save models without an account
  8. System brand
  9. Sign in screen
  10. This is a blog owned by the people at the top of the 'engagement pyramid'
  11. About system
  12. Terms of use
  13. Privacy statement
  14. Copyright policy
  15. Community guidelines
  16. Choose language to change language on all screens
  17. Eduserv logo + link to site
  18. University of Oxford logo + link to the site

Open questions

  • What will constitute the model profile.

Home page (when logged in)

Purpose

To provide quick access to the models the user is working on, and see at a glance the models other members of the system are working on.

User actions

  • See models user is working on
  • See models that 'friends' are working on
  • See models that the whole 'community' is working on e.g. browse
  • Search for models
  • Read news about the system and from the community

Annotated screen design

Home2.jpg

Functionality

  1. Always takes user back to this page (with warnings where they have not saved)
  2. Provides links to:
    1. Models user has created
    2. Models user's friends have created
    3. Recent comments on users models
    4. User's micro-behaviors
    5. Micro-behaviors user has created
  3. Information relating to actions on friends network e.g. all contacts, invite friend
  4. Information relating to actions on groups network e.g. all groups, create group
  5. Links to main Explore and Experiment page, Search page, My Collections, Collections user is a member of
  6. Search box and take use to main Search Page (with results)
  7. Users models (sortable by creation date, title, popularity, etc., shows first N and a button to see the rest, default most recent)
  8. Users friends models (sortable by creation date, title, popularity, etc., shows first N and a button to see the rest, default most recent)
  9. All public models (sortable by creation date, title, popularity, etc., shows first N and a button to see the rest, default most recent)
  10. News from development community in form of a blog, top tips, competitions and prizes

Open questions

  • Will the system store account details or abstract this service by using OpenId or Shibboleth?

My Account

Purpose

  • Allow users to store information about themselves in the system and control how this personal information is shared with other users e.g. their profile

User actions

Annotated screen design

Functionality

Open questions

  • Do we want to go the Shibboleth/ OpenID route and not store personal information?

Explore

Purpose

The purpose of this screen is to provide an overview of the types of models, reports, behaviours, and learning designs that have been created within the system.

Main user actions

  • View featured models
  • Browse models based on categories that are driven by usage statistics (e.g. most viewed models)
  • Search for models, micro-behaviours, and groups.
  • Find models by tag

Annotated screen design

Explore3.jpg

Functionality

  • The predominant image (around B4 above) will highlight a model. The model will be within an applet or iFrame. It will include controls, graphs and buttons. It will also include an abstract/ hypothesis/ descriptive text about the model. The user will be able to click the model to go to the complete model page which will include all the user-generated information pertaining to the model e.g. comments.
  • The system backend will also ensure event driven data can be used to collate information for this page automatically, this will include:
    • Most commented models
    • Most downloaded
    • Highest rated
    • Most recently downloaded

Open questions

  • We might not be able to get working models into this page on those clients that don't support Java applets properly. In such cases we may need to fall back up a movie file served from the system or a movie sharing site such as YouTube
  • Do we want to provide a bulk upload so teachers can create a class of accounts easily e.g. through uploading a spreadsheet aka LAMS approach

Search

Purpose

  • Enable users to search for models, reports with embedded models, learning designs, micro-behavious and groups

User actions

  • Search for models, micro-behavious, reports, learning designs and groups
  • Browse based on categories

Annotated screen design

Search2.jpg

Functionality

1. Allows users to define set objects over which to do the search
2. Allows user to define what type of object they want to search for e.g. models, micro-behaviours, groups
3. Allows user to do a full text or tag based search
4. Allows user to see search results in a structured form to make visual scanning as easy as possible and re-ordering the results based upon various criteria

Open questions

  • What metadata to support
  • How to implement tagging
  • How to implement indexing (probably rely upon Google customised search or the like)

Construct

Purpose
This is the heart of the system -the user is able to assemble micro-behaviours to construct their model.

User actions

  • Read about micro-behaviours
  • Browse between MBs
  • Add MBs to prototypes or agents
  • Edit MBs
  • Delete MBs that have been added to agents
  • Group MBs together
  • Select to run individual MB, groups of MBs, agents or the whole model
  • Drag MBs from Explore tab onto agents within this tab
  • Open models
  • Save models

Annotated screen design
Construct2.jpg

Functionality

Open questions

  • Allow for idea that the MB library should be multi-language, so that models can be run in multiple tools e.g. SecondLife, Starlogo etc?
  • What will be process for segregating system code library from all MBs created by user i.e. do we need a publishing process to help constrain the system for novice users? Will there be a 'published' MB library that is distinct from user generated library (and how will this be dealt with in search?

Experiment

Purpose

Allow user to experiment or 'play' with models.

User actions

  • Use sliders and graphs to experiment with model parameters
  • Export model to external tool e.g. Netlogo, Scratch, MoPiX, eXpresser

Annotated screen design

Experiment.jpg

Functionality

  • Start and stop model
  • Change clock
  • Change sliders and input boxes
  • View Graphs
  • View 'simulation'

Open questions

  • How will construct and experiment functionality be implemented within the browser - we want them to feel as close as possible e.g. couple code with experiment interface? (Possibility of implementing a tab that moves sideways to display MBs relating to the model).

Projects

Purpose

  • Allow user(s) to group together models so that a defined group can collaborate e.g. in building models, discussing, annotating etc.

User actions

  • Create, read, update and delete collections based on permissions
  • Describe a collection
  • Add models to collection
  • Configure which tools are available within the collection e.g. forums, rating, exercises
  • Bulk create accounts (e.g. class cohort) that can access collection
  • Invite users to join a collection
  • Add endorsements to collections
  • Comment on collection as a whole and models within collection
  • Rate collection as a whole and models within the collection
  • Export models to presentation tools such as PowerPoint

Annotated screen design

Collections1.jpg

Functionality

  1. CRUD and search for groups
  2. Name of group
  3. See member profiles
  4. Go to collection discussion
  5. See models that have been associated with the collection
  6. Go to email invitation form
  7. Go to Wiki associated with the collection
  8. Text introduction to collection (filled out by collection owners when collection created)
  9. Model profiles
  10. Tags associated with models in the collection

Open questions

  • Should we rename 'projects' to 'collections', 'groups', 'galleries' or have all types that have different form creation processes e.g. galleries geared towards exhibiting work and projects more geared towards construction
  • Should we be doing cohort management in the system (e.g. authentication, authorisation, group management) or abstract this to other systems e.g. google groups, facebook, moodle, sakai etc. Its not clear how we could abstract this out of the system except through Shibboleth/ OpenId (when specifications revised and Shibb implementations mature).
  • Should we allow collection owners to configure a collection so that they can control the layout and facilities exposed within the collection
  • Should we develop role based configuration where for instance users with accounts tagged as 'beginner' would see a different collection to those with 'advanced' status.
  • Similar in design to 'Customise' option in Blogger?
  • Big question at this stage (Nov 2007): will users be adding links to external tools (e.g. google groups) or widgets to system tools (system forum)?

The Tour

Purpose

  • To introduce the main user groups to the system:
    • Teachers
    • Learners
    • Researchers e.g. un-guided by a teacher

User actions

  • Read how different types of user can take advantage of the system e.g. teachers, researchers/ learners
  • Navigate reading lists segregated by year and subject where obvious distinctions can be made e.g.
  • Understand how the modelling4all system relates to other modelling tools e.g. Netlogo, SecondLife
  • Essay about modelling in general including various forms of modelling, "3rd way of doing science" e.g. in silico experimentation

Annotated screen design

Functionality

Open questions

Teaching resources

Purpose
Provide teachers with learning activities that can be used with classroom cohorts

User actions

  1. Use communication channels to support discussion
  2. Use on-line resources e.g. tutorials and essays
  3. Download printable resources e.g. tutorials and essays
  4. Read news feeds about events related to modelling
  5. Listen to podcasts by teachers who have given modelling classes e.g. Robert B and include evaluation materials

Annotated screen design

Functionality

Open questions

Learning resources

Purpose
Provide individual learners with information so that they can learn by themselves and join up with their peers.

User actions

  1. Use communication channels to support discussion
  2. Use on-line resources e.g. tutorials and essays
  3. Download printable resources e.g. tutorials and essays
  4. Read news feeds about events related to modelling
  5. Listen to podcast by modelling experts e.g. Felix

Annotated screen design

Functionality

Open questions

Interoperability

The project needs to design a system that either:

  1. Integrates open source code that is managed by the project team
  2. Interacting with web services

Put more concretely the implementation team can:

  • Write custom code (that will always be released under an open source licence)
  • Take existing open source code and modify it
  • Call external APIs

The approach taken will made according to:

  1. Effort involved in writing custom code
  2. Quality of existing code and ease of integration with core system
  3. Reliability and scalability of using external web service

These interoperability decisions will also depend on the needs of the user community:

  1. People who want to use a single environment because they are not used to using other services e.g. teachers wanting a complete solution for a set of classroom (and homework) activities
  2. People who are using others tools to communicate with an established community e.g. google/ yahoo groups, facebook

** External links (to aid research): **

Using a Blog

The system should make it easy for users to create personal blogs about models. This can be achieved by:

  1. Cut and paste links to models
  2. Cut and paste scripts that embed models
  3. Fully automated authenticated integration between the system and different blog services

Blogger

Using Wiki

The system should make it easy for users to create wiki pages about models. This can be achieved by:

  1. Cut and paste links to models
  2. Cut and paste scripts that embed models e.g. text and images (iFrames, Applets, Links to movies).
  3. Fully automated authenticated integration between the system and different wiki services e.g. to create wiki pages with embeded text and images

Using tagging

  • It should be easy for all logged-in users to add tags to models and projects.
  • The tags should be visible from each model and project pages
  • It should be possible to search for models and projects within the system based on tags

Del.icio.us

Methods:

  • Get a list of all our bookmarks and to filter that list by tag or date or limit by number
  • Get the number of bookmarks created on different dates
  • Get the last time we updated our bookmarks
  • Get a list of all our tags
  • Add a bookmark
  • Edit a bookmark
  • Delete a bookmark
  • Rename a tag

Example on using the API: http://www.peej.co.uk/articles/restfully-delicious.html

Current thinking

  • Create a modelling4all user account in delicious
  • Embed script or 'badge' in home page to show all tags over site or run RPC to Java Servlet to create tag cloud/ list through making a call to bookmarking service (delicious)
  • Embed tag in project and model pages to show how these entities have been tagged. The tagging here would be nested through tagging: modelling4all -> tag code (system generated) -> tag user generated so that tags that pertain to specific model/ project can be requested through servlet
  • Clicking on a tag (in a tag cloud for instance) will take user to a page that displays links to pages within the site that are tagged with this tag
  • This means all projects and models need to have unique and static URL (for tagging service)

Issues

From delicious developers:

  • Please wait AT LEAST ONE SECOND between queries, or you are likely to get automatically throttled. If you are releasing a library to access the API, you MUST do this.
  • Please watch for 503 errors and back-off appropriately. It means that you have been throttled.
  • Please let us know if you are going to release software that uses this publicly, so that we can at least have a heads-up and hopefully test things out beforehand.
  • Please set your User-Agent to something identifiable. The default identifiers like "Java/1.4.3" or "lwp-perl" etc tend to get banned from time to time.
  • If you are releasing software or a service for other people to use, your software or service MUST NOT add any links without a user's explicit direction. Likewise, you MUST NOT modify any urls except under the user's explicit direction.

We'd essentially be logging in on behalf of users (system account) - how does this work with Delicious?

Other tools to investigate:

  • CiteULike
  • Digg
  • Furl
  • Connotea
  • Reddit
  • Simply
  • Stumbleupon
  • Slynkr (Java Open Source Code Library)

Using Rating

  • Relates to models and projects
  • Rating should be displayed in search results

Using a forum

Users may want to use forum tools (both dedicated and those that are part of other systems such as Facebook) to discuss models. It should be easy to embed information about models within these tools. This is likely to simply be along the lines of providing a link to a model.

Search

Indexing

e.g. Google custom search: http://www.google.com/coop/cse?cx=005557860042287684230%3Alnj2ifwy5g4

Metadata filestore

e.g. Google Base: http://base.google.com/

Integration with news gateways (RSS and 'Portals')

It should be easy for users to embed news feeds within their model pages/ collections/ projects
It should be possible to create news feeds from system e.g. triggered when models are published or get a high enough rating.

Implementation

In this section we bring together notes on technical activities associated with the build of the system.

Phase 1

Please visit the Phase 1 page.

Ideas

Technical

  1. special widget for specifying the scheduling/ netlogo e.g. structured editing of micro-behaviours…
  2. use the 'badge' idea, seen in flickr and blogger to allow users to customise their websites with content from this tool
  3. blog this! wiki this! functionality. Basically provides facility to go to a users personal blog or a groups wiki and possibly embed text and images about an object in the system e.g. screen shot of a model, graph within the blog post
  4. write a book about modelling using the system and other tools
  5. provide paid-for support for modelling e.g. access to system collections by school classes or MBA. support steps through
  6. Top 10 Ajax Rich Internet Applications:
    1. Google Maps
    2. Similie projects e.g. TimePlot: http://simile.mit.edu/timeplot/
  7. What is the potential for using Google Gears to implement off-line interaction with the system?

Sustainability

The project team needs to ensure that the system can be maintained beyond the end of its current funding by the Eduserv foundation. Here we will start listing ideas as to how this can be achieved:

  1. Implementing context sensitive advertising e.g. using Adsense as per the Blogger model to generate revenue for the system
  2. Having system of donation e.g. using PayPal as per the Wikipedia model
  3. Securing ongoing maintenance and development support e.g. through government funding bodies
  4. Value-add services e.g. teaching resources such as books, lesson plans and support
  5. Get commercial support e.g. define constitution that is acceptable to educational institutions and see if commercial organisations will fund and adhere to this
  6. Note: we need to start estimating ongoing maintenance, research and development costs

To investigate

  1. Whether we can use a Web 2.0 platform to provide the networking:
    1. Open Source:
      1. ScratchR: http://llk.media.mit.edu/projects.php?id=2115
      2. Elgg: http://elgg.org/
    2. Free hosting
      1. http://www.ning.com/ or http://creatingmodels.ning.com/
  2. Whether there is scope to implement the system as a series of components within the open social framework
  3. Whether there is scope to simply implement loose integration between the core of system e.g. "explore", "experiment" and "construct" with communication-type tools e.g. forum, wiki, blog, annotation.
    1. this could be the initial approach and we could gradually build tighter integration through GWT/ Ajax construction
  4. Streaming video from homepage or embed script to stream from external service
  5. How to use indexing service e.g. Google Custom Search
  6. Syntax highlighting when writing code
  7. Linking to netlogo primitive glossary
  8. Design inspiration:
    1. Flickr: http://www.flickr.com/about/
    2. ScratchR: http://scratch.mit.edu/scratchr
    3. Bamzooki: http://www.bbc.co.uk/cbbc/bamzooki/
    4. Active Essay: http://llk.media.mit.edu/projects/emergence/active-essay.html
  9. Flash vs. Java vs. JavaScript
  10. HTML Filtering in Weblearn: http://weblearn.ox.ac.uk/site/admin/docs/filtering/htmlfilters/
    1. See also http://en.wikipedia.org/wiki/Cross_site_scripting
    2. Basically with an iframe you can make it look like you're at one URL but be serving content from another URL: <iframe width="100%" height="100%" src="http://slashdot.org"/> Not a huge issue. Maybe we should change to allowing iframes through?
    3. The issue is generally applicable to websites where you can upload HTML, eg, a weblearn EasyWriter page. Moreover, if one has to login before entering HTML then the perp (or indeed unsub) can easily be caught. In weblearn there could be a problem in that, given appropriate rights, a non-logged in user can post HTML; they could post something that renders just like a webauth screen and then catch passwords.
  11. SQL/ database abstraction layer e.g. http://en.wikipedia.org/wiki/Hibernate_(Java) or Spring
  12. How Google Gears can be used within the technical design
Unless otherwise stated, the content of this page is licensed under Creative Commons Attribution-ShareAlike 3.0 License