Reply To: Building collaboration around CODAP

#278
Anonymous
Inactive

 

1. “programmatic” control: Generally, there are three programmatic touch-points for CODAP: (a) the Data Interactive Plugin API, (b) the Cloud File Manager API, and (c) URL query parameters.

The Data Interactive Plugin API is useful for plugins, such as the Sampler. It allows plugins to participate in the CODAP environment, as nearly as possible, in the same way as a native CODAP component. A plugin can define and create data, query for data, select cases, find out what cases are selected, participate in Undo and Redo activities, and create or manage other components. It does not allow plugins to open different CODAP documents or save them. This API is documented here.

The Cloud File Manager (CFM) API is for document management. CODAP itself is designed to have no native interactions with servers. It cannot natively save or restore documents, nor authenticate users. It relies on the Cloud File Manager for all these services. It would be possible to extend the existing Cloud File Manager to integrate with a new cloud service or platform. It would also be possible to create a new from scratch implementation of the API. The code for the CFM is here.

URI Query parameters are for configuring CODAP at startup. You can specify the starting CODAP document or starting plugin in URL query parameters, as well as a number of other configuration parameters. I don’t have a document handy that describes these options in detail, but in most cases specifying the document should be sufficient.

2. CODAP document sharing: To be clear, this is a service of the CFM, not CODAP. (The menu items in the “hamburger menu” in the upper left hand corner of the CODAP screen are all CFM processes)

A shared document can be thought of as a snapshot of a “regular” CODAP document.

The “Share …” submenu of the “hamburger menu” provides the UI for creating or updating a shared document.

A user shares a document by creating it in the dialogs started from the above menu. He or she is gets a URL that they can send to other users, similarly to a Google Docs shared document.

Behind the scenes, the shared document is stored on a Concord Consortium-managed server. The original document could have been one saved in a user’s Google Drive account or saved in the user’s local file system. Or indeed, the original document does not need to be saved at all.

There is currently no way for a Data Interactive Plugin to manage sharing of documents.

3. How CODAP manages state Data Interactive Plugin’s state: Plugins communicate their state to the document in which they reside, and they get the state back if the document is saved and reinstantiated in another instance of CODAP. From CODAP’s point of view, a plugin’s state is simply a blob of data, though in practice it is usually a JSON object. There is no mechanism provided by CODAP for a plugin to be configured except in the context of a document and that configuration is merely an echo of what the plugin has previously told CODAP about its state. This being said, a plugin is just a web page, and there is no reason it could not communicate with a server to become configured. The solution that Bill proposed manages all these interactions by encapsulating the state of the plugin in the CODAP document. The initial state of the sampler would be in the CODAP document that the teacher shared with the student, and the student’s state would be in the document that the student shared with the teacher.

You mentioned MathNet. I am not familiar with this environment. You can probably appreciate that the original solution would work without any other infrastructure. It just works through the invocation of URLs. One hopes that, being technology neutral, it would work in the context of any technology, but it is a Black Box approach. Would a more active involvement by the surrounding environment be necessary?

BTW, are you familiar with the Concord Consortium Portal/Lara environment? This is a relatively simple curriculum sequencer with a teacher dashboard. CODAP can be run as an integrated tool in this environment, capable of all the items you outlined in the scenario in your original email.

Hope this helps. Please contact me if I can clarify anything.