You are viewing a plain text version of this content. The canonical link for it is here.
Posted to c-dev@axis.apache.org by Cliff Schmidt <cl...@apache.org> on 2005/06/10 17:54:55 UTC

Fwd: Proposal for xmlbeanscxx

I think this never got moderated through to the list, so I'm trying  
again...


The C++ subproject for XMLBeans (see below) has now been approved by  
the XMLBeans PMC, but we'd still certainly like to know if anyone in  
the Axis C++ world has any ideas, feedback, or would like to be  
involved.

Thanks,
Cliff

Begin forwarded message:

> From: Cliff Schmidt
> Date: May 20, 2005 10:07:56 AM PDT
> To: axis-c-dev@ws.apache.org
> Cc: dev@xmlbeans.apache.org
> Subject: Fwd: Proposal for xmlbeanscxx
>
>
> Hey Axis Folks!
>
> I'm forwarding this proposal for a C++ version of XMLBeans, which is
> now being discussed on the xmlbeans dev list.  If any of you think
> this could be useful to your community, please let us know.
>
> Thanks,
> Cliff
>
> ---------- Forwarded message ----------
> From: Heidi Buelow
> Date: May 15, 2005 11:11 AM
> Subject: Proposal for xmlbeanscxx
> To: "dev at xmlbeans . apache . org"
>
> 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: dev-unsubscribe@xmlbeans.apache.org
> For additional commands, e-mail: dev-help@xmlbeans.apache.org
>