What is dap?
"D. A. P." stands for Data Access Page. It is a language of rules for data interpretation in terms of document markup. It is mostly aimed to be utilized in client parts of data-centric web-applications.
Is it yet another library of grids, drop-downs and tree-views?
No. Dap itself is not a library of snippets and widgets, but a language of rules for document generation and transformation in response to received data and user activity. It allows to easily reproduce the traditional controls' logic, and to define custom controls with whatever specific logic.
Is it heavy, verbose, slow and ugly?
No. It is lightweight, concise, fast and a pleasure to code.
Is it a good choice for "My First Website ;-)))" ?
No, again. It does require some brain activity involved. Also, there is no visual "drag-and-drop" dap constructor yet.
Is it free?
Well, yes [details]. Dap core (DAPMX core script) is free for use ("free" as in "free beer", not as in "free speech") in web-applications (websites) publicly available over WWW. Dap Starter-Kit libraries are distributed under GNU LGPL. For details, please refer Licensing Information.
What is dap good for, and what for it is not
Dap might be the right choice for building dynamic web-reports and interactive front-ends to datasources, such as SQL-databases or web sevices. Both internet and intranet, and even local-machine applications may benefit from utilizing dap.
However, you should realize, that dap core contains no any pre-baked visual controls or pretty-looking buttons, so visual appearance is a separate task. There are lots of HTML/CSS template repositories on the web — all that stuff can be used in dap-enabled HTML documents just as in ordinary HTML.
Dap itself doesn't require any server-side infrastructure beyond a barebone web-server — neither any backend scripts, nor any server extensions. However, if you plan to employ datasources (such as SQL databases), you will probably need a server-side adaptor to communicate with SQL-server over http.
Also, when building dap applications for web, you should remember, that dap page itself does not contain the data it shows (unlike, say, php or asp pages which come to client along with all the data they actually display), thus if you want your data were indexed by web-crawlers, you will have to take additional measures to provide indexable content to the crawlers by traditional server-side techniques.
How it works
Once the page and the DAPMX core script are loaded into browser, the dap root node (by default, the
Dap-enabled nodes are built and re-built dynamically, using the markup specified in the source file as templates. Dap rules specify the templates to use, fill those templates with actual data from datasources, define logical dependencies between generated elements, assign appropriate event listeners to them and so on... Finally, these generated elements are inserted into DOM as regular HTML markup. Generated elements having event listeners, when their events happen, launch rebuild process, that makes changes to application status and updates all dependent elements. The rebuild process only affects nodes, that actually do depend on the changes, leaving irrelevant nodes intact.
Dap syntax was developed with two main concerns:
The latest documented version at the moment is 0.1.7. Current version 0.2.2 has many improvements and significantly different syntax (way more clear and friendly; in fact, VM for version 0.2 was rewritten from scratch), but unfortunately, documentation for version 0.2 is not ready yet.
So is it "dap" or "DAPMX"?
The term "dap" refers to the language itself. This language, generally speaking, is not bound to HTML or XML documents; it is not bound to W3C DOM, but, being appropriately implemented, may be used to define generation and transformation rules for any hierarchial structure.
In contrast, the term "DAPMX" (dap Markup eXtension) refers to particular dap implementation for W3C DOM compliant documents. This implementation "extends" normal document markup with two dap-dedicated attributes:
Dap in action
In this section, interesting dap powered projects will be listed and studied.
Dap Starter-Kit extension libraries are available under GNU LGPL
Feel free to use, study, modify and redistribute dap Starter-Kit libraries as defined in GNU LGPL. This note is included in all libraries of the Starter-Kit Package:
Dap Starter-Kit Package is free software: you can redistribute it and/or modify it under the terms of the GNU Lesser General Public License as published by the Free Software Foundation, either version 3 of the License, or (at your option) any later version. Dap Starter-Kit Package is distributed in the hope that it will be useful, but WITHOUT ANY WARRANTY; without even the implied warranty of MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the GNU Lesser General Public License for more details. You should have received a copy of the GNU Lesser General Public License along with Dap Starter-Kit Package. If not, see http://www.gnu.org/licenses/.
DAPMX core script is free for non-commercial or public commercial use
DAPMX core script [download] is shareware. To avoid premature fork of dap evolution process, decision was made to make the DAPMX core script free for (public || non-commercial) use, but NOT Open-Source. Also, to help faster dap spread, please consider placing dap advertisement (the small "powered by dap" logo with hyperlink to dap homepage) on your dap-enabled page (preferably around the bottom-left corner), using this or equivalent code:
<a target="_blank" href="http://dapmx.org"> <img src="http://dapmx.org/logo/powered-by-dapmx-0-1.gif" alt="Powered by dap 0.1" border="0" style="border:none" /> </a>
Free for non-commercial use
DAPMX core script is licensed for use in non-commercial derived work free of charge.
Free for public commercial use
DAPMX core script is licensed for use in commercial derived work free of charge, provided that the derived work is available for public access via World Wide Web free of charge.
By using DAPMX core script free of charge, one expessly agrees:
Commercial licences are also available
Commercial license is required for commercial applications, which:
To obtain commercial license, please contact: firstname.lastname@example.org
Sponsorship & partnership
If you don't use dap in a way that requires a commercial license, yet want to donate some funds on dap project support, you are welcome. There are some options which may give a practical sense to your good will:
I am also interested in and available (on confirmation) for participating in development of dap-powered projects.
If you have any questions, please contact me by:
Copyright 2008,2009 Maxim Sajin <email@example.com>