(file) Return to todo.txt CVS log (file) (dir) Up to [Pegasus] / pegasus / doc / Attic

Diff for /pegasus/doc/Attic/todo.txt between version 1.16 and 1.33

version 1.16, 2001/06/12 09:02:26 version 1.33, 2001/12/13 19:25:44
Line 1 
Line 1 
 Urgent  
 ======  
  
     -   Fix problem with cimserver not running properly when run without      -   Do we need strings to represent NULL and empty (what if the standard
         options.          adds something where a string parameter can be null distinguished from
           an empty value).
  
     -   Put cimserver back in the makefile.      -   Expose repository inheritance tree.
  
     -   Resolve whether the backslash should be permitted int namespaces.      -   Look at not passing HTTP header to CIM request decoder queue.
  
     -   Work on developer's guidlines document.      -   Propagate message key for all messages pertaining to a particular
           request.
  
             No STL (or other third party software).      -   Run Purify on all sources (port to Sun first).
             Indent by three.  
             Braces on the next line.  
             Always run regression tests before committing and do cvs -q update.  
  
     -   Add CIMOM handle to provider interface.      -   Rework Pegasus to use asynchronous I/O.
  
     -   Fix case sensitivity problems in repository (just add an _Open method      -   Finalize export client/server:
         that ignores the case of the file).  
  
     -   Add newly implemented repository operations to protocol and to              -   Covert GetClass operation to DeliverIndication operation.
         dispatcher.  
  
     -   Change INVALID_CLASS exceptions to NOT_FOUND (they're wrong in              -   Rework export-client to asynchronously process responses
         Repository).                  (instead of the RPC style used now).
  
     -   Add tracing of output HTTP messages.              -   Need meta-export-client (with connection management).
  
     -   Need CIMInstance::removeMethod() and CIMInstance::removeProperty().              -   Implement disconnect() logic.
     -   Add a exists namespace operation under the repository stuff.  Maybe we  
     need more than this.  
  
 Topical To-Do List      -   Remove keys from messages?
 ==================  
  
     -   Sun uses string message-ids. Pegasus uses integer.      -   Get rid of unused source code (dealing with channels and TCP).
         Sun uses 2000.5.12.... format. Changed Pegasus to  
         use string message-ids. DONE.  
  
     -   Some clients send '\n\n' to terminate HTTP headers.      -   Rethink the useage of queue-ids in messages and how requests and
         We were only accepted '\r\n\r\n'. DONE.          responses are matched up. Queue-ids are only used on the server
           side. Perhaps a more general mechanism can be found.
  
     -   Provide way of printing out command line options help from cimserver.      -   Fix bug in which the messageId is calculated inside the XmlWriter.
           It should be calculated by the caller.
  
     -   GetInstances() and GetClasses() need to use iterators on      -   Delete CIMOperations.h.
         provider and repository end. Otherwise, all classes or instance  
         to be enumerated, must be sucked into memory.  
  
     -   Template bloat reduction.      -   Get rid of message keys? They don't seem to be used.
  
     -   Use YACC on Linux.      -   Fix bug in src/Pegasus/Client/tests/Client in which associators()
           fails and says class does not exist (seems to happen in debug mode
           only). Disappears when I/O is enabled.
  
     -   Need a tool to say which features are supported by a compiler.      -   Replace old headers with new ones (co-ordinate with team).
  
     -   Support unloading of dynamic libraries (presently only load() is      -   Get rid of usage of System (use since it
         supported).  
  
 -   Instances:      -   Migrate to use of Linkage.h files.
  
     -   Implement CIMRepository::getProperty()      -   Document that lex and yacc are no longer a requirement to build
           Pegasus.
  
     -   Implement CIMRepository::setProperty()      -   Figure out how to handle very large CIM respones and possibly
           requests too.
  
     -   Implement CIMRepository::deleteInstance()      -   Integrate client/server tests into make system somehow.
  
     -   Implement CIMRepository::modifyInstance()      -   Note that it is possible to remove an class and still have association
           classes which refer to it.
  
     -   Implement CIMRepository::enumerateInstances()      -   Class inheritance not taken into consideration when resolving the
           AssocClass
  
     -   Implement CIMRepository::enumerateInstanceNames()      -   It seems that associatios() will fail when AssocClass is a super
           class of the class which is in the association instance table.
  
     -   Handle inheritance in all instance operations.      -   Should there be a single associations table for the entire repository
           or should there be one per namespace as there is now?
  
     -   Double check that all these operations work across protocol.      -   If it is the case that a reference may only refer to an instance,
           then we must derive new types for representing object paths.
  
     -   Check that they have keys during validation.      -   Many CIM operations interfaces are incorrect: GetInstance() for example
           takes a namespace and a CIMReference (which also may contain the
           namespace). According to the standard, it should take an "InstanceName".
  
 -   Associations:      -   Need way of signaling the cimserver so that it will reload the
           class inheritance table (after a MOF compile).
  
     -   Implement CIMRepository::referencesOf()      -   Revisit use of namespace v.s. objectName in all CIM operations.
  
     -   Implement CIMRepository::associatorsOf()      -   What do we do when getInstance() is called and the nameSpace is
           provided both as an argument and as part of the instance name?
  
     -   Implement protocol stubs for these operations.      -   ReferenceNames should return classes not just instances?
  
 -   Exceptions:      -   Remove final const from const methods in non-const CIM element classes.
  
     -   Force __FILE__ and __LINE__ argument on every usage of CIMException.      -   Null vs. empty CIM/HTTP parameters.
  
     -   Clean up and consolidate exception classes.      -   Resolve constness problems. (get rid or Const classes?)
  
     -   Propagate underlying error messages across the CIM protocol.      -   Change CIMReference to CIMObjectPath?
  
 -   References:      -   Finish associations.
  
     -   Validate arguments to CIMReference compound constructor and modifiers.      -   Provide CIMOM Context.
         (namespaces, hosts, classnames, and keybindings)  
  
     -   Be sure that escape sequences are handled inside of object names. For      -   Complete conventions document.
         example:  
  
             X.key1="Hello \"You\""      -   The CIMServer.exe program should probably create the logs directory
           under PEGASUS_HOME.
  
 -   Protocol:      -   Clean up exceptions.
  
     -   Improve protocol tracing to show messages in both directions.      -   Resolve redundancy in which the namespace is passed to certain methods
           (getClass) and the CIMReference itself may contain a namespace arguent.
  
     -   The TCPChannel::writeN() method blocks when the client and server      -   Implement consistency and constraint checking on classes and instances.
         are in the same process. That is because the client cannot read  
         anything as long as writeN() is blocked on a synchronous write.  
  
     -   Figure out how to handle getProperty() return type.      -   Implement filtering (using includeQualifiers, localOnly, etc.)
  
     -   Provide ACE Channel implementation (for porting purposes)?      -   Consider eliminating const CIM element classes.
  
     -   Handle PARAMETER.REFARRAY in Procotol?      -   Support for NULL property lists (in interface and protocol).
  
     -   Ignore extraneous XML elements (loosely valid).      -   Rename tests (prepend "Test" to each test).
  
 -   Porting:      -   Fix bug with cimserver.exe causing it to fail to start without te
           "-l" option.
  
     -   Replace "std::something" with "STD(something)"      -   Resolve whether the backslash should be permitted in namespaces.
  
     -   Replace "using namespace std" with "USING_NAMESPACE_PEGASUS"      -   Create CIMOMContext (interface to CIMOM used b the provider).
  
 -   Aesthetics/Consistency/Usability:      -   Define Encoding module interface.
  
     -   Change getLength() and getSize() to just size(): "Brevity is the soul      -   Develop XMLEncodings module.
         of genius and of Lingerie".  
  
     -   Add methods to get objects by their names, in addition to index. For      -   Develop BinaryEncodings module.
         example:  
  
             CIMProperty CIMClass::getProperty(const String& name);      -   Develop MOFEncodings module.
  
     -   Perform walkthrough to expose consistency problems.      -   Employ BinaryEncodings module in repository (reduce disk usage).
  
     -   Distinguish between private and public classes (otherwise, users may      -   Combine repository instances, classes, and qualifiers  into their
         come to depend on classes with unstable interfaces).          respective files (to reduce the number of files).
  
 -   Documentation:      -   Employ an efficient indexing scheme in repository (B-trees or hashing).
  
     -   Suggest newlines after methods.      -   Develop module manager: interface, lookup scheme, and loading scheme.
  
     -   Suggest use of "/** ... */" instead of "///"      -   Package Encodings classes as a module.
  
     -   Refine header file documentation.      -   Finalize repository assocations.
  
     -   Write Pegasus Architecture Paper.      -   Add association CIM/HTTP operations.
  
     -   Integrate DOC++ with make system (put all docs in doc tree):      -   Design association provider infrastructure.
  
 -   Namespaces:      -   Implement missing CIM protocol operations.
  
     -   Implement create and destroy namespace (according to the standard).      -   Implement good observer module interface which allows different levels:
  
 -   Providers          -   Observation of client/CIMMOM connections/disconnection.
  
     -   Add CIM-Server handles to provider interface.          -   Observation of client/CIMOM communication.
  
     -   Implement MOF provider registration scheme (according to the          -   Observation of CIMOM/repository communication.
     standard).  
  
 -   WBEM Query Language          -   Observation of CIMOM/provider communication.
  
     -   Find someone to work on standard.          -   Observation of CIMOM state transitions.
  
     -   Implement leve-1 parser.      -   Pegasus providers for Sun WBEM Services.
  
 -   MOF compiler:      -   Pegasus providers for WMI.
  
     -   Work with Bob to identify work items.      -   Sun WBEM Services providers for Pegasus.
  
 -   Threading      -   CIM/HTTP Proxy for WMI.
   
       -   Web Server/Pegasus Integration (use HTTP protocol capabilities of
           web server rather than Pegasus).
  
     -   Write thread queuing document (input and output thread queue per      -   Add CIMRepository::namespaceExists() method.
         provider).  
  
     -   Implement queuing.      -   Change HTTP message id's to this format: "YYYY.MM.DD.HH.MM.SS.NNNNN".
   
       -   GetInstances() and GetClasses() need to use iterators on
           provider and repository end. Otherwise, all classes or instance
           to be enumerated, must be sucked into memory.
  
     -   Make reference counted objects thread safe (Mutexing and atomic      -   Template bloat reduction.
         increments).  
  
 -   Connectors      -   Need a tool to say which features are supported by a compiler.
  
     -   Work out basic concepts (write paper).      -   Support unloading of dynamic libraries (presently only load() is
           supported).
  
     -   Package up pegasus in Install Shield application.      -   Clean up and consolidate exception classes.
  
       -   Asynchronous socket writes in the CIMOM (need write enabled flags).
  
 -   Install      -   Handle PARAMETER.REFARRAY in Procotol?
  
     -   Need install mechanism for Unix and Windows.      -   Implemented stream oriented XML parsing.
  
 -   Interoperability      -   Ignore extraneous XML elements (implement "loose validation" concept).
  
     -   Fix reported bugs.      -   Add methods to get objects by their names, in addition to index. For
           example:
  
 -   Internationalization              CIMProperty CIMClass::getProperty(const String& name);
  
     -   Handle UCS2 characters in XML (parsing and writing).      -   Distinguish between private and public classes (otherwise, users may
           come to depend on classes with unstable interfaces).
  
 -   Repository:      -   Walk through all code to expose consistency/aesthetic issues.
  
     -   Export to MOF.      -   Provide ACE Channel implementation (for porting purposes)?
  
 -   Miscellaneous      -   Expand datatime (setCurrentTime() and comparison and increment
           functions).
  
     -   Change CompareNoCase() to String::compareNoCase().      -   Write Pegasus Architecture Paper.
  
     -   Place configuration startup parameters in Repository (e.g., port).      -   Implement MOF provider registration scheme (according to the
           standard).
  
     -   Integrate logging      -   WBEM Query Language and integration.
  
     -   Figure out how to handle CIM null values.      -   Threading
  
     -   Generalize iteration.      -   Package up pegasus in Install Shield application.
  
     -   Figure out how inheritance of keys works.      -   Internationalization: Handle UCS2 characters in XML
           (parsing and writing).
  
     -   Investiage weak assocations.      -   Export of repository to MOF.
  
     -   Provide conversions between DateTime and time_t.      -   Change CompareNoCase() to String::compareNoCase().
  
 -   Constraint hanlding      -   Figure out how to handle CIM NULL values.
   
       -   Figure out how inheritance of keys works.
   
       -   Investigage weak associations.
  
     -   Enforce constraint qualifiers.     -   Enforce constraint qualifiers.
  
     -   Disallow resetting size of fixed length arrays.     -   Disallow resetting size of fixed length arrays.
  
 -   Optimization/Tuning  
   
     -   Shrink object sizes.     -   Shrink object sizes.
  
     -   Use lighter I/O system (than C++ streams).     -   Use lighter I/O system (than C++ streams).
  
     -   Run Purify on all sources (port to Sun first).  
   
     -   Optimize clear method on arrays (to not release memory).     -   Optimize clear method on arrays (to not release memory).
  
 -   Porting      -   Provide conversions between DateTime and time_t.
  
     -   Port to Solaris     -   Port to Solaris
  
     -   Port to HPUX      -   Support multiple providers of the extact same class.
           DiskController example and LanController.
     -   Port to AIX  
   
 -   Testing  
   
     -   Test case insensitivity of class names and qualifier names.  
   
     -   Run Purify on all sources (port to Sun first).  
   
     -   Run CIM/XML test suite.  
   
 -   Server  
   
     -   Use Service class in cimserver  
   
     -   Implement Service class on Unix (daemonization from Comer book).  
  
       -   SLP - Eliminate lib directory.


Legend:
Removed from v.1.16  
changed lines
  Added in v.1.33

No CVS admin address has been configured
Powered by
ViewCVS 0.9.2