Morpho Refactoring Discussion
---------------------------------------------
Participants: Matt Jones, Ben Leinfelder, Jing Tao, Dave Vieglais

Design diagrams
http://chico1.dyndns.org/morpho/

Goal: Users should be able to use Morpho with Metacat repositories that are not registered DataONE nodes


Here is a proposal for implementing Morpho in the different phases:

Phase 1:  Work with multiple MNs, but choose one as active MN for create(). Morpho still uses Metacat API to search
               User selects 'Active' Member node from dropdown list in settings; list generated from Node service; or enter baseurl
                 If MN is metacat, use metacat API to search
                        ** Metacat search API only returns metacat docids (scope.docid.rev) not the DataONE PIDs
                        ** Issue: how to get ahold of the PID rather than the localID so get()/create()/update() can be called
                 If MN is not metacat, disable network search, only allow local open
                 For create
                       Create on the active MN, set authMN to the active node id
                 For update/delete                        
                    If a user has rights to call update()/delete() on the AUthoritative node, and a write permission on an object, they can update/delete on the AuthNode
                          -- 3 checks have to pass: userHasWrite on object, user has execute on service, and authMN is available for object
                           If authMN is not available, don't do update()

Phase 2: Use dataone API to search
             Some issues need to be addressed:
                 Will Morpho search CN, MN or both? If search MN, we need an optional search API for MN.
                 If we only search CN, we need to deal with the variable sync lag times on CNs
                 Need a search mechanism to include metadata fields in CN/MN
                 
Issues to be addressed:
-----------------------------------
* {filename (Morpho creates it), PID/DOCID}

Query stuff
-----------------
09 Aug 2012 Additional discussion
-------------------------------------------------