[x3d-public] C/C++/C#---X3DCSAIL; specification and source meeting minutes, 9 September: scheduling milestones

Don Brutzman brutzman at nps.edu
Wed Sep 9 18:49:58 PDT 2020


Attendees: Myeong, Dick, Don

1. We renamed prior 2018 versions as WD, meaning Working Draft (rather than CD Committee draft).

We also asked Web3D Consortium communications team to add an entry to table:

[1] Web3D Recommended Standards
     https://www.web3d.org/standards

namely:  "WD, Working Draft, Preparation of ISO Committee Draft Registration"

Of note is that next version is CD, Committee Draft.

---

2. X3D Specification Relationships

The following analysis completely depends on the relationships between all X3D specifications, shown in

[2] X3D Specification Relationships diagram
     illustrates how these many specifications relate to each other.
     https://www.web3d.org/specifications/X3dSpecificationRelationships.png

We will consider implementation efforts (such as X3DCSAIL or other implementations) separately from specification efforts.  Those can all occur for formal review in 2021.

---

3. We discussed proper designation of next versions.

The latest documents that Myeong has shared (via .zip) are all in preparation to become CD Committee Draft documents for C/C++/C# language bindings for X3D.

An important choice right now is whether to pursue version 3.3 or version 4.0 of these specifications.

Our overall Web3D strategy is to
- finish functional definition of X3D Version 4 in November, and
- submit as Committee Draft in December as New Work Item Proposal (NWIP) and (essentially complete) CD Committee Draft to ISO.

To also get the C/C++/C# versions of programming-language bindings correct, they must match 19775-2 Scene Access Interface (SAI) which provides the abstract definitions for all programming language bindings.

Thus we will either need to use the existing version 3.3 SAI, or else a version 4.0 SAI.  We discussed this tradeoff in great detail.

Preparation of all these specifications is a significant amount of work, though any differences between version 3.3 and version 4.0 will mainly be the addition of new nodes and fields for X3D4.  Further the specification tables listing additional nodes can be autogenerated, which assists in preparation.

*We have an exceptionally busy schedule* for the remainder of 2020 in order to finish X3D4, also completing all technical reviews in mid-November at the Web3D 2020 Conference.

[3] https://web3d.siggraph.org is the new conference website

It seems to be the most realistic and effective use of our time to go for X3D version 4.0 as next version of these specifications.

Wondering, are there any other pending ISO deadlines that we must meet?  Yes, DIS Submission is January 2021... this would seem to constrain us severely.  Worrisome...

Can the ISO deadline be extended? Not allowed, we are at the maximum and reaching a cancellation point later in 2020.

Schedule analysis and alternatives follow.

================================================
Preferred plan for update to version 4 and submission to Web3D and then ISO:

2020 DEC, 19775-1 X3D Architecture NWIP/CD

2021 JAN, 19776-1 XML Encoding  NWIP/CD

2021 JAN, 19775-2 SAI version 4 NWIP/CD

2021 FEB, 19777-3/4/5 SAI version 4 for C/C++/C# (original hope but misses ISO deadlines)

2021 MAR, 19777-1 Ecmascript and 19775-2 Java version 4 (simple updates)

2021 APR, 19777-6 Python

2021 MAY, 19776-3 Compressed Binary

2021 JUN, 19776-4 JSON

================================
Necessary deviation for meeting ISO deadlines is

SEP-DEC 2020  19777-3/4/5 SAI version 3.3 for C/C++/C#, since we must meet ISO ballot deadline prior to January 2020.

(We confirmed that all three documents had NWIP submissions and are under same ISO deadlines.)

Conceivably the current documents might be submitted as a Committee Draft sooner, possibly in September.  This means a bit more work, but it avoids ISO deadlines and allows us to proceed as planned with an exceptionally busy OCT-NOV-DEC 2020 activity for X3D4 and Web3D 2020.

These 3.3 versions of 19777-3/4/5 SAI do not require separate Web3D Consortium approval since that was already provided under earlier rules 18 months ago.  All other submissions will require Web3D Consortium approval, which adds another month to each specification.

Once SAI version 4 is submitted, we might then change next submission of C/C++/C# to version 4 as well.  This would put all specifications on the preferred goal schedule for next year.

Informational: such a consolidation and simplification can aid our ability to execute coherently.  At this point all X3D-related specifications would under the same set of rules:

- work is functionally complete,
- CD specification is ready to go,
- Web3D Consortium members review and approve,
- New Work Item Proposal (NWIP) and CD are then submitted to ISO,
- ISO ballot schedules and editorial response to national body comments then proceed,
- X3D Working Group available for comment to ISO specification editors (we three),
- ISO follows procedures and progression of refined documents,
- ISO eventually approves each as International Specification (IS).

TODO confirm: this plans meets also meets all of the deadlines from our recent annual ISO/IEC SC 24 meeting.

================================

4. Go-forward plan.  We decided to try to finalize and submit all three documents for C/C++/C# this month.

Each is labeled as CD version 3.3 in github.

Myeong has some additional editorial changes.  We further appreciate X3D Working Group to review (in an advisory role for Web3D Consortium).

Github addresses:

[4.1] ISO-IEC19777-3v3.3-CD (C programming-language binding for X3D)
       https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-3/ISO-IEC19777-3v3.3/ISO-IEC19777-3v3.3-CD

[4.2] ISO-IEC19777-4v3.3-CD (C++ programming-language binding for X3D)
       https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-4/ISO-IEC19777-4v3.3/ISO-IEC19777-4v3.3-CD

[4.3] ISO-IEC19777-5v3.3-CD (C# programming-language binding for X3D)
       https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-5/ISO-IEC19777-5v3.3/ISO-IEC19777-5v3.3-CD

Don will add Myeong's zipped CD drafts.  We expect that initial documents will be available for review (by Web3D members) this Friday for the weekly X3D Working Group meeting.

Whew!!  This was a hard one.  Looks like we found a workable solution... and it will remove all ISO schedule pressure so that everything can proceed in a regular plan.

The critical aspect to get text for all three documents clean, functionally complete, and later submitted to ISO by end of this month.

Thanks for all review and feedback.  Thanks Myeong for tremendous efforts.

We tentatively plan to meet in one week to confirm whether this is achievable and plan final steps for this month's submission.

Have fun anticipating X3D C/C++/C# programming!  8)

v/r Don, Myeong and Dick


On 9/9/2020 1:13 AM, Don Brutzman wrote:
> Thanks for details Myeong.
> 
> The autogeneration of specification annexes will be easy, that simply adapts existing stylesheets.
> 
> Wondering, was the prior CD ever accepted by ISO?  Dick and I discussed this today, we can either call the github directories for the two versions CD0/CD1 (if never accepted).  Maybe best case is we keep original at "CD" and call this new version "WD" as the preparation for Working Draft submission.
> 
> The autogeneration of codebases is more work to do, but performance is definitely not an issue.  Once it works, it works, and then any changes to X3D4 are immediately reflected in the codebase.
> 
> v/r Don
> 
> 
> On 9/4/2020 8:14 PM, Myeong Won Lee wrote:
>>
>> Dear John,
>>
>> Thank you for your email.
>>
>> We didn't use autogeneration, and all the classes and functions in Annex A and B in the text of the specification were rewritten manually.
>> In other words, with one by one editing.
>> A huge amount of time was taken to write them.
>>
>> In addition, the X3DLib has partial libraries (binary) implemented among them.
>> Partial X3D components have been implemented.
>> We will enhance the X3DLib by incorporating the classes and functions in Annex A and B.
>>
>> We must learn how to use autogeneration for the code.
>> After getting the results of autogeneration, we will figure out the performance gain of auto generation by comparing our manually generated code and the autogenerated code.
>>
>> Sincerely,
>>
>> Myeong
>>
>> On Fri, Sep 4, 2020 at 10:56 AM John Carlson <yottzumm at gmail.com <mailto:yottzumm at gmail.com>> wrote:
>>
>>     What we need is an easy way to upgrade the libraries using the X3DUOM when the standard changes.  If you have a tool which does that, that would be great!  Otherwise, your example is great, and we will pursue autogeneration of the libraries as a separate activity, following your pattern.
>>
>>     Does that make sense?
>>
>>     John
>>
>>     On Thu, Sep 3, 2020 at 6:09 PM Myeong Won Lee <myeongwonlee at gmail.com <mailto:myeongwonlee at gmail.com>> wrote:
>>
>>         Dear Don,
>>
>>         In the X3D C/C++ implementation code, the reason that there are no sources for X3D nodes is that the X3D viewer reads and parses the example X3D file and renders a X3D Box using the X3DLib directly.
>>         Does this make sense to you?
>>         The X3DLib includes a huge number of functions as a library.
>>         Because it seems necessary to include the C++ source code for the example X3D nodes in Annex C, we will provide them separately from X3DLib.
>>
>>         Sincerely,
>>
>>         Myeong
>>
>>                 ------------ 원본 메일 내용 ------------
>>                 *보낸 사람 :* "Don Brutzman"<brutzman at nps.edu <mailto:brutzman at nps.edu>>
>>                 *받는 사람 :* "X3D Graphics public mailing list" <x3d-public at web3d.org <mailto:x3d-public at web3d.org>>
>>                 *참      조 :* "John Carlson" <yottzumm at gmail.com <mailto:yottzumm at gmail.com>>, "Roy Walmsley" <roy.walmsley at ntlworld.com <mailto:roy.walmsley at ntlworld.com>>, "Myeong Won Lee" <mwlee at suwon.ac.kr <mailto:mwlee at suwon.ac.kr>>, "Doug Sanden" <gpugroup at gmail.com <mailto:gpugroup at gmail.com>>
>>                 *메일 제목 :* Re: C/C++/C#---X3DCSAIL; specification and source meeting minutes
>>                 *보낸 날짜 :* Wed, 2 Sep 2020 20:09:42 -0700
>>
>>                 Attendees: MWL, DPB
>>
>>                 We are finally back in motion on these specifications and met today, making progress.
>>
>>                 Full design plan (produced earlier) appears below today's minutes.
>>
>>                 ---
>>
>>                 1. Specifications.
>>
>>                 The Github site is where Web3D Consortium members have full access to draft specifications.
>>
>>                 [1.1] Github, Web3D Consortium, X3D
>>                 https://github.com/Web3DConsortium
>>                 https://github.com/Web3DConsortium/X3D
>>
>>                 [1.2] X3D SAI Language Bindings
>>                 https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777
>>
>>                 [1.3] X3D 19777-3 C Language Bindings
>>                 https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-3/ISO-IEC19777-3v3.3/ISO-IEC19777-3v3.3-CD
>>
>>                 [1.4] X3D 19777-4 C++ Language Bindings
>>                 https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-4/ISO-IEC19777-4v3.3/ISO-IEC19777-4v3.3-CD
>>
>>                 [1.5] X3D 19777-5 C# Language Bindings
>>                 https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/ISO-IEC19777-5/ISO-IEC19777-5v3.3/ISO-IEC19777-5v3.3-CD
>>
>>                 [1.6] X3D 19777 New Work Item Proposals (NWIP)
>>                 https://github.com/Web3DConsortium/X3D/tree/master/ISO-IEC19777/NWIP
>>
>>                 Looking at each of the above Committee Draft (CD) directories, they were last touched 8 March 2019 (18 months ago).
>>
>>                 *Myeong has updates to each of these. She is sending zip files and I will commit them into github.*
>>
>>                 Because they have changed, and because we are now working to meet ISO deadlines, we think that these should all be saved separately as an updated Working Draft #1. So new directories will say "WD1" instead of "CD" to match our naming conventions.
>>
>>                 Our next question is whether we should go to version 4.0 (rather than 3.3). This seems like a good idea... but there are several issues.
>>
>>                 a. Are they complete for 4.0?
>>                 b. Does the relevant SAI 19775-2 for X3D also have to be updated?
>>                 c. Can we autogenerate the new parts of these language bindings to match X3D4.
>>
>>                 We? are hoping that, following some further editorial work, that the answer to all three of these questions can become "yes" for X3D version 4.0.
>>
>>                 [1.7] Web3D Recommended Standards
>>                 https://www.web3d.org/standards
>>
>>                 [1.8] X3D 19775-2, ISO/IEC 19775-2:2015, V3.3,
>>                 X3D Abstract : Scene Access Interface (SAI)
>>                 International Standard (IS), 2015-04-24
>>                 https://www.web3d.org/documents/specifications/19775-2/V3.3/index.html
>>
>>                 A quick review of Part 2: Scene access interface (SAI) looks like very very few changes will occur for the transition from X3D Architecture v3.3 to v4.0.
>>
>>                 Recommended next steps:
>>                 d. Have a dedicated meeting of X3D Working to review both specification and Mantis issues list to see what changes are needed to create 19775-2 version 4.0.
>>                 e. If indeed small, then we create such a working draft on github.
>>                 f. If large, then we will defer to January 2021 following expected completion of X3D 19775-1 X3D version 4.0
>>                 g. We work on version 4 for all language bindings so that we don't have to repeat further specification revisions later.
>>
>>                 Definitely the sequencing of this work needs to be considered in light of ISO deadlines and our ability to accomplish work.
>>
>>                 Rephrase: if it is possible to go fast, let's try. Parallel work is likely possible since functionality is stable. If we are too busy, then we wait for January.
>>
>>                 Dick please review and verify how we might best handle these specification drafts for ISO.
>>
>>                 ---
>>
>>                 2. Example implementations.
>>
>>                 Suwon University provided some example source code last year.
>>
>>                 Two types of code are possible. First type is simply for handling data structures; second type is a renderer.
>>
>>                 Last year's examples are all sitting in Web3D version control on SourceForge, with 5 subdiretories:
>>
>>                 [2.0] X3D Sourceforge subversion arcchives
>>                 https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/
>>                 =
>>
>>                 a. c, not seen: source code for nodes, or presentation on this work.
>>                 b. cpp, not seen: source code for nodes, or presentation on this work.
>>                 c. csharp, found: both source code for nodes and README presentation
>>
>>                 Myeong has an excellent long presentation that describes many things in these archives, she will send and we will add.
>>
>>                 At first is seems like the c and cpp directories do not include source implementations for each and every node (Box, Group, Appearance etc.) because they are actually found in the X3DLib .h files. There is typically a mix of Abstracts.h Concretes.h and X3DLib.h files, be sure to look closely. For example code patterns, see the following:
>>
>>                 d. c, https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/c/X3DLib/Concretes.h
>>                 e. cpp, https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/cpp/X3DLib/Concretes.h
>>                 f. csharp, https://sourceforge.net/p/x3d/code/HEAD/tree/www.web3d.org/x3d/languages/csharp/3.X3DLib/X3DNode/ (many files)
>>
>>                 Although all of this code was created manually (OMG!) everything looks to me like well-defined code patterns that might autogenerated from X3DUOM.
>>
>>                 d. python: contains X3dPythonViewer which is a pure python viewer for X3D. This uses manual patterns but might be upgraded (by someone brave and magnificent!) to match our upgraded code patterns for X3DPSAIL.
>>
>>                 [2.1] Python X3D Package x3d.py
>>                 https://pypi.org/project/x3d
>>
>>                 [2.2] X3D Python Scene Access Interface Library (X3DPSAIL)
>>                 https://www.web3d.org/x3d/stylesheets/python/python.html
>>
>>                 e. suwon (temporary holding directory, used only for sharing files prior to production)
>>
>>
>>                 To use X3DUOM to create both codebases and draft specification annexes, we can follow the existing solutions already provided for Java and Python.
>>
>>                 Given today's code review, I can confirm that we can follow the exact approaches used already for Java and Python. The following summary provide much detail.
>>
>>                 ---
>>
>>                 3. Next steps.
>>
>>                 a. Specification: Myeong Dick and I can work on the sources.
>>
>>                 b. Example implementations: *who wants to help* with the C, C++, C# interfaces? We need expert review on these interfaces and sample implementations before we try to standardize them.
>>
>>                 c. Working group meeting: review scope of work to upgrade 19775-2 SAI to X3D 4.0. Soon, within a month.
>>
>>                 d. Specification editors meeting, Myeong Don Dick: latest versions of documents in github. We will try to meet next week if that works for Dick.
>>
>>                 e. Codebase generation meeting: when one or more volunteers are ready to help with review, we can then discuss.
>>
>>                 Have fun with X3D using C, C++, C# !! 8)
>>
>>                 Yours truly, Myeong and Don
>>
>>
>>                 On 8/11/2020 7:01 AM, Don Brutzman wrote:
>>                  > John, thanks for posting.  There are a number of steps still to go, here is more information.
>>                  >
>>                  > a. We currently 2/3 complete in our virtual 3-week-long annual meeting for ISO Standards Committee 24.  Ordinarily this is a dedicated 1-week face-to-face meeting, it is quite involved.
>>                  >
>>                  > b. Dr. Myeong Won Lee of Suwon University has provided an update to the C/C++/C# language bindings for X3D that were first proposed two years ago.
>>                  >
>>                  > [1]    Web3D Consortium Members are now considering C, C++ and C# language bindings for
>>                  >     #X3D Graphics International Standard. Member value continues to grow, early adopters are advised to join!
>>                  >     All community feedback is welcome too.
>>                  > https://twitter.com/Web3DConsortium/status/984257256270135296
>>                  >
>>                  > c. The Scene Access Interface (SAI) language bindings are strictly defined by X3D specifications.  No proprietary technology or external-library dependencies are required.
>>                  >
>>                  > [2]    Web3D Recommended Standards
>>                  > https://www.web3d.org/standards
>>                  >
>>                  > d. We have captured all X3D scene-graph structure and typing in the X3D Unified Object Model (X3DUOM).
>>                  >
>>                  > [3]    X3D Unified Object Model (X3DUOM)
>>                  > https://www.web3d.org/specifications/X3DUOM.html
>>                  >
>>                  > e. We have achieved autogeneration from X3DUOM to open-source implementations that support SAI for Java, Python and Turtle.  This occurs through careful consideration of design patterns to hold strictly designed data structures.  This does not include any form of rendering or platform-specific adaptations.
>>                  >
>>                  > [4]    X3D Graphics Standards Relationships
>>                  > https://www.web3d.org/specifications/X3dSpecificationRelationships.png
>>                  >
>>                  > f. A major benefit of autogeneration is that everything is exactly correct and can always track X3D4 refinements.
>>                  >
>>                  > g. As you know, we hope to repeat this pattern for JavaScript.  Your experience with X3DJSONLD and JavaScript means that an autogenerated implementation oriented to Node.js is appealing.
>>                  >
>>                  > h. Once implementations are stable, we will have to write corresponding X3D SAI specifications to match, likely next spring.
>>                  >
>>                  > i. Professor Lee has also produced an example code library that should serve as a good basis for design templates.
>>                  >
>>                  > j. We hope to begin tackling this new task after SIGGRAPH.
>>                  >
>>                  > k. Since an unavoidable FAQ will be "How are the C/C++/C# implementations and specifications similar, and how are they different?" the X3D working group currently plans to work all three in tandem and submit all three specifications simultaneously.  This approach will maximize consistency and best-of-breed design patterns.
>>                  >
>>                  > l. Clearly we will need multiple X3D experts who are each familiar with C, C++ and C# in order to achieve our goals of useful reusable open-source libraries and specifications.
>>                  >
>>                  > m. This is not a debate about programming styles or preferences, rather how do we produce the most platform-neutral APIs that are widely reusable.
>>                  >
>>                  > n. Resulting codebases will be hooked up to regression testing of the X3D Examples Archives.
>>                  >
>>                  > [5]    X3D Resources, Examples: Scene Archives for X3D
>>                  > https://www.web3d.org/x3d/content/examples/X3dResources.html#Examples
>>                  >
>>                  > o. Success is measured by how these libraries encourage adoption of X3D by C/C++/C# applications, either open source or commercial. Original announcement follows.
>>                  >
>>                  > [6]    [x3d] X3D C and C++ language bindings NWIPs [corrected copy]
>>                  > http://web3d.org/pipermail/x3d-public_web3d.org/2018-April/008598.html
>>                  >
>>                  > p. I'll be sending out an annual Web3D ISO liaison report to Web3D Consortium members in another week, once the SC24 meeting is complete.  This report will get released publicly sometime afterwards.
>>                  >
>>                  > q. So the answer to most of your questions below is "same as before" with Java, Python, Turtle.
>>                  >
>>                  > Hope this makes sense.  These are new big projects, adapting and repeating capabilities that we have already demonstrated three times.
>>                  >
>>                  > Worthy mountains to climb that make X3D ever-more available.  Usually this is where business plans add a sentence saying, approximately, "total world domination to follow."  8)
>>                  >
>>                  > Thanks everyone for considering the possibilities.  Have fun with X3D4!  8)
>>                  >
>>                  >
>>                  > On 8/10/2020 5:10 PM, John Carlson wrote:
>>                  >>
>>                  >> We're looking for some programmers to contribute to a project creating X3DCSAIL, a C/C++/C# version of X3DJSAIL.
>>                  >>
>>                  >> My question is, how will X3DCSAIL be different from OpenInventor or Coin3D or FreeWRL?  Can these run headless?   Can we adapt one of these to run headless?  It looks like OpenInventor has a headless mode, but I'm not sure about the others.
>>                  >>
>>                  >> How might we pursue this library?  What are the requirements?  Who are the customers?   Should we just create examples, and adopt one of the existing open source X3D browser implementations?  Is there a website describing the goals of this project?  Should I create one?
>>                  >>
>>                  >> I have something written in C++ that reads in X3D JSON and writes out X3D XML, but that's pretty much a prototype at this stage--works with a couple of cases.  This opens up C++ X3D browser to the X3D JSON capabilities similar to how X3DJSONLD transformed X_ITE and X3DOM.
>>                  >>
>>                  >> The cplusplus version in in <X3DJSONLD>/src/main/cplusplus/src
>>                  >>
>>                  >> More testing is welcome!
>>                  >>
>>                  >> We currently do not have a X3dToC.xslt, but would appreciate examples of C++ code that people would like to develop to use X3DCSAIL, so we can pattern the appropriate stylesheet for the X3DCSAIL library.
>>                  >>
>>                  >> O can provide a C++ Serializer that will convert a DOM document to C++ using JavaScript code, but  I'm also wondering what kind of target I should hit, similar to what we might do with a stylesheet.
>>                  >>
>>                  >> So we're just looking for C++ test cases at this point.
>>
>>                 all the best, Don
>>                 --                 Don Brutzman Naval Postgraduate School, Code USW/Br brutzman at nps.edu <mailto:brutzman at nps.edu>
>>                 Watkins 270, MOVES Institute, Monterey CA 93943-5000 USA +1.831.656.2149
>>                 X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman
>>
>>
>>
>>         --
>>         Myeong Won Lee, PhD, Professor
>>         Faculty of Computer Science, U. of Suwon
>>         Hwaseong, Gyeonggi-do, 18323 Korea
>>         E-mail) myeongwonlee at gmail.com <mailto:myeongwonlee at gmail.com>, mwlee at suwon.ac.kr <mailto:mwlee at suwon.ac.kr>
>>
>>
>>
>> -- 
>>
>> Myeong Won Lee, PhD, Professor
>> Faculty of Computer Science, U. of Suwon
>> Hwaseong, Gyeonggi-do, 18323 Korea
>> E-mail) myeongwonlee at gmail.com <mailto:myeongwonlee at gmail.com>, mwlee at suwon.ac.kr <mailto:mwlee at suwon.ac.kr>
>>
> 
> all the best, Don

all the best, Don
-- 
Don Brutzman  Naval Postgraduate School, Code USW/Br       brutzman at nps.edu
Watkins 270,  MOVES Institute, Monterey CA 93943-5000 USA   +1.831.656.2149
X3D graphics, virtual worlds, navy robotics http://faculty.nps.edu/brutzman



More information about the x3d-public mailing list