You are viewing a plain text version of this content. The canonical link for it is here.
Posted to commits@daffodil.apache.org by GitBox <gi...@apache.org> on 2022/11/15 17:26:59 UTC

[GitHub] [daffodil] scholarsmate commented on a diff in pull request #876: Add Daffodil Developer Guide

scholarsmate commented on code in PR #876:
URL: https://github.com/apache/daffodil/pull/876#discussion_r1023075074


##########
DEVELOP.md:
##########
@@ -0,0 +1,485 @@
+<!--
+  Licensed to the Apache Software Foundation (ASF) under one or more
+  contributor license agreements.  See the NOTICE file distributed with
+  this work for additional information regarding copyright ownership.
+  The ASF licenses this file to You under the Apache License, Version 2.0
+  (the "License"); you may not use this file except in compliance with
+  the License.  You may obtain a copy of the License at
+
+      http://www.apache.org/licenses/LICENSE-2.0
+
+  Unless required by applicable law or agreed to in writing, software
+  distributed under the License is distributed on an "AS IS" BASIS,
+  WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
+  See the License for the specific language governing permissions and
+  limitations under the License.
+-->
+
+# Daffodil Developer Guide
+
+This guide is for a software engineer who wants to develop Daffodil
+code.  This guide will help you become familiar with DFDL schemas,
+DFDL processors, and Daffodil development including its code style,
+code workflow, development environment, directory organization,
+documentation, and tests.
+
+## DFDL
+
+The [Data Format Description
+Language](https://en.wikipedia.org/wiki/Data_Format_Description_Language)
+(DFDL) is a language used to describe almost all data formats both
+logically and physically.  DFDL is not a data format or a procedural
+language; rather, it is a data modeling language based on a subset of
+XML Schema annotated with DFDL properties describing the
+representation and layout of each element of the schema inside a
+native text or binary data format.  A DFDL schema allows data to be
+converted between its native data format (physical representation,
+also called a text or binary file) and a DFDL information set (logical
+representation, also called an infoset) such as an XML document, EXI
+document, JSON document, SAX callbacks, or several document object
+model APIs in memory (JDOM, Scala Node, W3C DOM).  When you have a
+DFDL schema for a native data format, you can pick whichever infoset
+type is easiest for you or your application to use and tell a DFDL
+processor to read ("parse") a text or binary file from its native data
+format to that infoset type.  You or your application can do whatever
+you need to do with the infoset and then you can use the same DFDL
+schema and DFDL processor to write ("unparse") the infoset back to its
+native text or binary file format again, completing a round trip from
+native data to infoset to native data again.
+
+Using DFDL avoids inventing a completely new data modeling language,
+avoids writing any parsing and serialization code (with all the bugs
+that normally arise from implementing such code procedurally), and
+makes it much easier to convert any native data format to an infoset,
+operate on the infoset, and convert an infoset back to its native data
+format again.
+
+To learn more about DFDL, you can watch two short
+[videos](https://community.ibm.com/community/user/integration/viewdocument/get-started-with-the-data-format-de)
+put together by Steve Hanson, co-chair of the DFDL working group, read
+a
+[slideshow](https://www.slideshare.net/mbeckerle/dfdl-and-apache-daffodil-overview-from-owl-cyber-defense)
+written by Mike Beckerle, co-chair of the DFDL working group, or go
+through some [tutorials](http://www.xfront.com/DFDL/) written by Roger
+Costello, chair of the DFTVL working group (Data Format Transformation
+and Validation Language, a future not-yet-defined language to specify
+policies for cross-domain system devices).

Review Comment:
   I would replace "cross-domain system devices" with "Cross-Domain Solution (CDS) devices".



-- 
This is an automated message from the Apache Git Service.
To respond to the message, please log on to GitHub and use the
URL above to go to the specific comment.

To unsubscribe, e-mail: commits-unsubscribe@daffodil.apache.org

For queries about this service, please contact Infrastructure at:
users@infra.apache.org