Hi everyone. Here is a recap of the problem statements for XML parser rework, as discussed last week at our meeting and with some follow-on email today:
1) AI's multiple parsers present unneeded complexity and unmaintainability. (Note: at the meeting we settled on "Determine parser requirements" but I have since realized that this was not a problem statement.) - Things to consider for a single parser: - functionality for data retrieval and search, schema compatibility, how supported / maintainable is the parser - The right parser will fall out as the other problems are solved. 2) Current AI manifests are not easy to use. - Fragmented, could be better organized - We decided that changing from XML is out of scope and off the table. 3) AI manifests need to be forward and backward compatible between builds. - Manifests of different versions than the automated installer must work whenever possible. - A given version of the automated installer must be able to recognize a manifest with which it is not compatible and gracefully fail. 4) Semantic validation is needed for AI. - Lack of it means failures further down the installation process instead of up front, or misconfiguration. 5) AI manifests have validation holes. - Example: criteria schema doesn't bind a min/max pair of ipv4 address patterns to an ipv4 address criterion. Moving on to design: 1) On "Current AI manifests are not easy to use:" I propose the following to start the discussion. For simplicity, a single manifest containing criteria, ai_manifest content and sc_manifest content can be used. All content would be represented in a single xml format. This allows for less fragmentation and more straightforward organization when possible. It also can prevent major changes which could occur if a datum was switched between one format to another. The AI can process the material however it sees fit. This can include creating XML files of other types based on some of the materials if it needs to interface with other tools. This approach allows for changes in what is done with the data, without having to change the schema. For example, if a DTD is created now with some of the data, and then later some new mechanism replaces what uses the DTD, the DTD info can be switched out for the new format without the user ever having to know about it. This helps future compatibility. There are benefits of having separate files which would be missed if only a single file was allowed. Having separate AI manifest and SC manifest can allow for the same basic install to be done, but have different user and other configuration information on each system. I propose that the fields in the manifest can have a pointer to another file which has the information that field would contain. A second file can have several fields defined, each pointed to by their respective fields in the first manifest. For example, the first manifest of two different kinds of systems may have a username, username password and root password fields set to point to the second manifest, where they would be defined. Each kind of system would be installed based on their manifest, but would have the same user information as they both point to the same second manifest. The complication of a second manifest would be used only when needed, allowing for more complex setups, but not robbing the simple setup of a simpler manifest file configuration. This may have implications on testing, as there would be a larger matrix. Thanks, Jack