Changes between Initial Version and Version 1 of 2014-09-25


Ignore:
Timestamp:
Sep 25, 2014, 4:48:43 PM (11 years ago)
Author:
Eric Pettersen
Comment:

--

Legend:

Unmodified
Added
Removed
Modified
  • 2014-09-25

    v1 v1  
     1= 24 September 2014 meeting =
     2
     3== Attendees ==
     4
     5TomG, Greg, Eric, Conrad
     6
     7== Agenda ==
     8
     9Discussion about how Chimera2 Tool and Session APIs.
     10
     11== Action Items ==
     12
     13None
     14
     15== Results ==
     16
     17Agreed to Conrad's ToolShed/ToolFactory/Tool API after some tweaks.  ToolShed is used to access list of all possible tools or all installed tools.  ToolFactories contain metadata about tools for use in tool menus, model panel, and command line.  ToolFactories can also be used to create Tool instances.  Tools offer access to the tool functionality and have methods for serializing and deserializing tool data to/from sessions and scenes.
     18
     19Greg discussed the separation between Session and Application objects.  It was agreed that it would be nice if logging functionality was accessible outside of session objects so that such objects would not have to be passed through to every function that might want to log information or errors.  This led into a long discussion of the costs and benefits of supporting multiple sessions in the same Chimera 2 process.  No conclusion was reached and it was agreed to table the discussion until Monday's meeting with the full group, to garner additional input and possibly see if someone had a compelling use case that required multiple separate sessions.
     20
     21Greg suggested that tools might simply put attributes into sessions and there would be a mechanism to prevent overwrites, but Conrad wanted to see more discipline in session attributes names, e.g. volume_data rather than mav391, the idea being would know to distribute their data into these well-known names so that other tools could find them if needed.  There would be some place for tools to put miscellaneous tool data.
     22
     23
     24
     25
     26After much discussion, we agreed to the following initialization sequence:
     27
     281. Command line parsing
     291. Preserve execution environment and monkey patch Python
     30 - Programs included with Chimera, eg al2co, will execute with the same environment as Chimera while system programs will execute with the preserved environment
     311. Setup paths
     32 - Chimera paths (where "system" files live)
     33 - Per-user paths (where user data and tools live)
     341. Initialize "stdio" or UI toolkit, eg splash screen
     35 - Establish presence and both status and error reporting channels
     361. Initialize preferences
     371. Initialize core, eg molecular data, surface, triggers, etc.
     381. Initialize tool shed
     39 - Tool shed should support "safe mode" where no tools are loaded
     40 - Tool shed can support, possibly in conjunction with preferences, disabling certain tools
     41 - Find list of "tool" (which can be Chimera-style tools, commands, data formats, libraries, shared objects, etc)
     42 - Each tool has attributes, eg commands, menus, buttons, that can be queried, eg by UI
     43 - Each tool has methods, eg "start" for creating an instance of the tool
     44  - This is how tools can communicate
     45  - "start" returns a !ToolInstance that implements the actual functionality
     46 - !ToolInstance has a different API than Tool
     47 - Some Tool's have a singleton !ToolInstance while others may be multi-instanced
     481. Initialize UI and OpenGL
     491. Add tool interfaces to UI
     50 - App queries tool shed for list of tools and then tells UI what to do
     511. Execute custom Tool initialization code
     52 - App queries tool shed for list of tools and use Tool API to check for init code
     531. Process command line requests
     54 - Open files
     55 - Run scripts
     56 - Start Tools
     57 - Restore sessions
     581. Enter event loop
     59
     60Eric described his approach to replacing Qt with wx in Hydra.  We decided that we need more information on the Hydra architecture in order to decide on how best to proceed with further development (eg continue Hydra code base, move components into core, etc.)