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]

Reply via email to