a2b51a75b0d19ef7b28a9a217aa296003470f2c2
[tpot/pegasus/.git] / doc / TODO
1
2                                 TO-DO List
3                                 ==========
4
5 -   Instances:
6
7     -   Implement CIMRepository::getProperty()
8
9     -   Implement CIMRepository::setProperty()
10
11     -   Implement CIMRepository::deleteInstance()
12
13     -   Implement CIMRepository::modifyInstance()
14
15     -   Implement CIMRepository::enumerateInstances()
16
17     -   Implement CIMRepository::enumerateInstanceNames()
18
19     -   Handle inheritance in all instance operations.
20
21     -   Double check that all these operations work across protocol.
22
23     -   Check that they have keys during validation.
24
25 -   Associations:
26
27     -   Implement CIMRepository::referencesOf()
28
29     -   Implement CIMRepository::associatorsOf()
30
31     -   Implement protocol stubs for these operations.
32
33 -   Exceptions:
34
35     -   Clean up and consolidate exception classes.
36
37     -   Propagate underlying error messages across the CIM protocol.
38
39 -   References:
40
41     -   Validate arguments to CIMReference compound constructor and modifiers.
42         (namespaces, hosts, classnames, and keybindings)
43
44     -   Be sure that escape sequences are handled inside of object names. For
45         example:
46
47             X.key1="Hello \"You\""
48
49 -   Protocol:
50
51     -   Improve protocol tracing to show messages in both directions.
52
53     -   The TCPChannel::writeN() method blocks when the client and server
54         are in the same process. That is because the client cannot read
55         anything as long as writeN() is blocked on a synchronous write.
56
57     -   Figure out how to handle getProperty() return type.
58
59     -   Provide ACE Channel implementation (for porting purposes)?
60
61     -   Handle PARAMETER.REFARRAY in Procotol?
62
63     -   Ignore extraneous XML elements (loosely valid).
64
65 -   Porting:
66
67     -   Replace "std::something" with "STD(something)"
68
69     -   Replace "using namespace std" with "USING_NAMESPACE_PEGASUS"
70
71 -   Aesthetics/Consistency/Usability:
72
73     -   Change getLength() and getSize() to just size(): "Brevity is the soul
74         of genius and of Lingerie". 
75
76     -   Add methods to get objects by their names, in addition to index. For
77         example:
78
79             CIMProperty CIMClass::getProperty(const String& name);
80
81     -   Perform walkthrough to expose consistency problems.
82
83     -   Distinguish between private and public classes (otherwise, users may
84         come to depend on classes with unstable interfaces).
85
86 -   Documentation:
87
88     -   Suggest newlines after methods.
89
90     -   Suggest use of "/** ... */" instead of "///"
91
92     -   Refine header file documentation.
93
94     -   Write Pegasus Architecture Paper.
95
96     -   Integrate DOC++ with make system (put all docs in doc tree):
97
98 -   Namespaces:
99
100     -   Implement create and destroy namespace (according to the standard).
101
102 -   Providers
103
104     -   Add CIM-Server handles to provider interface.
105
106     -   Implement MOF provider registration scheme (according to the standard).
107
108 -   WBEM Query Language
109
110     -   Find someone to work on standard.
111
112     -   Implement leve-1 parser.
113
114 -   MOF compiler:
115
116     -   Work with Bob to identify work items.
117
118 -   Threading
119
120     -   Write thread queuing document (input and output thread queue per
121         provider).
122
123     -   Implement queuing.
124
125     -   Make reference counted objects thread safe (Mutexing and atomic
126         increments).
127
128 -   Connectors
129
130     -   Work out basic concepts (write paper).
131
132     -   Package up pegasus in Install Shield application.
133
134
135 -   Install
136
137     -   Need install mechanism for Unix and Windows.
138
139 -   Interoperability
140
141     -   Fix reported bugs.
142
143 -   Internationalization
144
145     - Handle UCS2 characters in XML (parsing and writing).
146
147 -   Repository:
148
149     - Export to MOF.
150
151 -   Miscellaneous
152
153     - Figure out how to handle CIM null values.
154
155     - Generalize iteration.
156
157     - Figure out how inheritance of keys works.
158
159     - Investiage weak assocations.
160
161     - Provide conversions between DateTime and time_t.
162
163 -   Constraint hanlding
164
165     - Enforce constraint qualifiers.
166
167     - Disallow resetting size of fixed length arrays.
168
169 -   Optimization/Tuning
170
171     -   Shrink object sizes.
172
173     -   Use lighter I/O system (than C++ streams).
174
175     -   Run Purify on all sources (port to Sun first).
176
177     -   Optimize clear method on arrays (to not release memory).
178
179 -   Porting
180
181     -   Port to Solaris
182
183     -   Port to HPUX
184
185     -   Port to AIX
186
187 -   Testing
188
189     -   Run Purify on all sources (port to Sun first).
190
191     -   Run CIM/XML test suite.
192