I usually try not to cross-post, but I thought the xmlbeans users might be interested in this proposal.
Are there folks on the user list interested in the proposed C++ version of XMLBeans? Cliff On 5/15/05, Heidi Buelow <[EMAIL PROTECTED]> wrote: > This is a proposal for an xmlbeans subproject which should be discussed here > and voted on at the xmlbeans PMC before going to the incubator for a vote. > > Proposal to create a C++ version of the Apache XMLBeans project > > Submission date: 15 May 2005, Tim Triemstra, Heidi Buelow (TimT @ RogueWave > dot-com, Buelow @ RogueWave dot-com) > > (0) rationale > > Apache currently maintains the XMLBeans/Java project, a tool that uses XML > Schema as a basis for generating Java classes used to easily access XML > instance data. The goal of the XMLBeans/C++ project is to provide a very > similar user experience for C++ developers as that provided by the > XMLBeans/Java version. This includes generating strongly-typed C++ classes > for the XML binding as well as providing low-level C++ APIs enabling access > to the raw, underlying XML content. Where possible, the XMLBeans/C++ project > will provide a nearly identical API and parallel architecture to that > provided by the Java counterpart, and will closely mimic both features and > schedule. > > Rogue Wave Software will help jump start this project by contributing the > existing XML to C++ binding code distributed as part of the LEIF product to > the Apache community. This product has been in production for over two > years, and will provide a solid foundation for a C++ version of XMLBeans. > > (0.1) criteria > > Meritocracy: The C++ version of the project should adhere to the same open, > merit-based community standards as other Apache projects. > > Contributions and Core Developers: Code being contributed is actually a > subset of the LEIF product. Currently, work is underway to remove any > proprietary dependencies from within the code. A "cleaned" version that is > ready for contribution will be made available to the community around the > middle of May 2005. This initial contribution will be fully functioning, but > missing a few key features of the Java version of XMLBeans. > > The community should be able to immediately jump in and begin work, along > side dedicated Rogue Wave personnel, to turn the initial contribution into a > feature-compatible version of XMLBeans for C++. > > Community: The community around the Java version of XMLBeans is already > vibrant and growing. There is every reason to believe many of those within > the existing community have experience and/or general interest in a > successful, compatible C++ implementation of the toolset. This should ensure > an immediately active and vocal community, even if the primary interest is > in ensuring a similar experience between versions. There is already a large > group of developers "in the wild" using the original XML to C++ binding tool > that is serving as the original contribution for this project. These users > will be migrating to the XMLBeans/C++ code over time and have already > indicated a keen interest in tracking, and even participating in the > Apache-led project. > > Apache Alignment: The XML binding tool from which the XMLBeans/C++ port will > morph does not include a full XML parser, but instead uses a small, focused > parser designed expressly for tight C++ to XML binding support. The general > purpose XML instance data APIs within XMLBeans will require additional code > and may be a good fit for the Xerces parser to enable some required > features. > > Additionally, at least one member of an existing Apache project has > expressed interest in a project like XMLBeans/C++ to aid in his current > work. Higher-level projects such as Axis for C++ seem to be natural > beneficiaries of this work. > > (0.2) known risks > > Orphaned Products: One of the first questions when a commercial entity > offers code to the public is "will this code be abandoned?" To be clear, > Rogue Wave decided to initiate this process due to its own significant > interest in the XMLBeans feature set already present in Java, and its need > for similar features in C++. We have significant product goals moving > forward around XML for which the XMLBeans model fits perfectly. Rather than > simply copy the design and keep the project closed, we felt that the > downstream products would reap significant benefits from opening the XML > layer to the community. Keeping the C++ version in sync with the Java > version, even if it were to not be accepted as an Apache project, can only > help its overall adoption. > > Additionally, a diverse committer base is a strong goal for this project. > Numerous users of the contributed XML to C++ binding tool have indicated > interest in participating, many of whom have critical projects dependant on > this work and resources available to continue to ensure the viability of the > project well into the future. > > Inexperience with Open Source: Like many companies entering this arena, we > have limited experience working on open source projects. Our primary goal is > to foster an active community around XMLBeans/C++ so advice will be taken to > heart, and significant resources will be dedicated to the project to get it > off the ground. However, we hope that our experience working in open > standards groups will aid in the transition to the open source community. > > Initial Reliance on Salaried Workers: Due to the rapid process of > transitioning to work on the open source XMLBeans/C++ project, only a few of > the listed contributors will be outside the commercial realm. We expect this > list of external volunteers to grow significantly after the initial public > code drop. > > Licensing, Patents, Miscellaneous Legal: We are conducting a legal review of > the code and existing contracts. This review should be done shortly and any > code contributed will be licensed under the latest ASF terms. > > Commercial Interest: XMLBeans/C++ will be maintained as an open source > Apache project, with all relevant enhancements contributed to the community. > Additionally, there is every intention to use XMLBeans/C++ within future > commercial products, thereby resulting in even greater testing and user > exposure. It is expected that other companies may well wish to use the > project's code within their own commercial endeavors, which of course would > be fine. > > (1) scope of the subproject > > The XMLBeans/C++ subproject will conform to the identical scope as that laid > out for the partner Java project. Special care will be taken to implement > features and add conveniences that would be expected by a C++ developer. > > For clarity, the goals of the XMLBeans/C++ project are: > > Generation of plain C++ classes to model XML Schema Validation of C++ > objects against the source XML Schema Access to partial document instance > data (fragments) Efficient "parse as necessary" access that forgives extra > data Access to the full XML infoset > > (2) identify the initial source for subproject code > > Some background information may be found on the LEIF product and the > associated Data Tier. > > LEIF product page (http://www.roguewave.com/products/leif) > > The C++/XML binding contribution code can be found at the following link: > > xmlBeans open source information > (http://www.roguewave.com/opensource/XMLbeans.cfm) > > (3) identify the ASF resources to be created > > (3.1) mailing list(s) > > xmlbeanscxx-dev > xmlbeanscxx-user > xmlbeanscxx-commits > > (3.2) SVN repositories > > xml-xmlbeanscxx > > (3.3) Bugzilla > > xml xmlbeanscxx > > (4.0) identify the initial set of committers > > This is a preliminary list that will be updated with volunteer members. > > Tim Triemstra (TimT @ RogueWave dot-com) > John Hinke (Hinke @ RogueWave dot-com) > Heidi Buelow (Buelow @ RogueWave dot-com) > Allen Brookes (ABrookes @ RogueWave dot-com) > David Haney (David.Haney @ RogueWave dot-com) > Michael Yoder (Michael.Yoder @ RogueWave dot-com) > > (5) identify apache sponsoring individual > > Cliff Schmidt, of the XMLBeans/Java project, has volunteered to sponsor this > project. > > Cliff Schmidt (CliffS @ Apache dot-org) > > (6) open issues for discussion > > The original code contribution has a lot of proven code for creating a > binding between XML Schema and C++ classes. However, the contribution will > require a significant overhaul, and even complete re-writes in some areas, > in order to reach compatibility with the XMLBeans/Java version. Detailed > differences will be discussed openly within the community so that an > appropriate plan for each area can be reached. This proposal is not the best > place to lay out all the technical details, however you will find below a > preliminary list of issues, priorities, and estimated timelines. > > API discrepencies between contributed code and XMLBeans 2.0 The contributed > code includes a very similar type-binding API in C++ to that provided in > XMLBeans for Java. However, the XMLBeans cursor access to the underlying > infoset has no equivilant in the contributed code and will require extensive > work to the underlying object model to support. > > Addressing this deficiency is considered the highest priority task facing > the C++ project. > > Several options are available including porting the XMLBeans object model > completely over to C++ or looking for ways to augment the contributed code. > Most likely a near-complete rewrite of this section will be the best > approach. > > Rough estimates for a working implementation of the cursor feature are > between three and five months Code generator > > The contributed C++ code is based on a proprietary code generator, although > it too is written in Java (not C++). The long-term plan is to consolidate > both C++ and Java projects under the same code generator, most likely the > one already included in the Java version of the XMLBeans. > > This is not considered a priority-1 task at this point, more of a long term > goal and convenience. If it saves time in other priority tasks it will be > looked at closely, however. > > Timeline for this transition is 5-7 months, but may be very much sooner > depending on available resources. > > Platform support > Unlike Java, the C++ port will have significant issues around platform and > compiler support. In order to help with this the project will be using the > C++ standard library, and may in fact benefit greatly from the proposed > Apache C++ StdLib (STDCXX). Initially the native StdLib will be used. > > Good platform support will be very important so even the early builds should > be done on Windows and Linux, and preferably at least one Unix variety. Long > term the matrix should be very large. > > The initial contribution is working on Linux but it is really just a preview > look at code, not a true product build. Windows and Linux support should > accompany the initial beta release, with Solaris, HP-UX, AIX, and other > Linux distros following within three months. > > Estimated timeline (very rough) > Initial submission of proposal and example code: 12 May 2005 Apache > structure in place and code building: 1 July 2005 Re-write of internal > object model building: 1 September 2005 XMLBeans/Java 2.0 feature equivilant > beta: 1 December 2005 > > This timeline is based on a very preliminary discovery of issues and is > based on limited resource information. There is little chance for this > schedule to be elongated by very much time as there are already a few > dedicated resources assigned to the project, but there is also little known > about how much a concerted community effort could speed things up. In > general the feeling is that a greater community involvement will greatly > improve the test suite, identified bugs, and platform support - not > necessarily the initial speed of feature development. > > -------------------- > Heidi Buelow > Rogue Wave, a division of Quovadx > > --------------------------------------------------------------------- > To unsubscribe, e-mail: [EMAIL PROTECTED] > For additional commands, e-mail: [EMAIL PROTECTED] > > --------------------------------------------------------------------- To unsubscribe, e-mail: [EMAIL PROTECTED] For additional commands, e-mail: [EMAIL PROTECTED]