<?xml version="1.0" encoding="utf-8"?>
<?xml-stylesheet type="text/css" href="https://wiki.apidesign.org/skins/common/feed.css?116"?>
<feed xmlns="http://www.w3.org/2005/Atom" xml:lang="en">
		<id>https://wiki.apidesign.org/index.php?action=history&amp;feed=atom&amp;title=DocumentDeclarativeAPI</id>
		<title>DocumentDeclarativeAPI - Revision history</title>
		<link rel="self" type="application/atom+xml" href="https://wiki.apidesign.org/index.php?action=history&amp;feed=atom&amp;title=DocumentDeclarativeAPI"/>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;action=history"/>
		<updated>2026-05-14T20:16:39Z</updated>
		<subtitle>Revision history for this page on the wiki</subtitle>
		<generator>MediaWiki 1.12.0rc1</generator>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2902&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Abstractions Need Usecases */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2902&amp;oldid=prev"/>
				<updated>2009-09-16T06:00:17Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Abstractions Need Usecases&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 06:00, 16 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 16:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are soul of [[API]] design. They create the high level concepts that simplify our life (when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]]). Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s that [[DocumentDeclarativeAPI|document declarative APIs]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are soul of [[API]] design. They create the high level concepts that simplify our life (when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]]). Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s that [[DocumentDeclarativeAPI|document declarative APIs]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;== [[Talk:DocumentDeclarativeAPI|What Do API Users Say?]] ==&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;{{:Talk:DocumentDeclarativeAPI}}&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2896&amp;oldid=prev</id>
		<title>198.128.44.35: /* Abstractions Need Usecases */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2896&amp;oldid=prev"/>
				<updated>2009-09-15T17:44:56Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Abstractions Need Usecases&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 17:44, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example: ''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]. Use it this way!''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example: ''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]. Use it this way!''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;sole &lt;/del&gt;of [[API]] design. They create the high level concepts that simplify our life (when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]]). Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s that [[DocumentDeclarativeAPI|document declarative APIs]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;soul &lt;/ins&gt;of [[API]] design. They create the high level concepts that simplify our life (when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]]). Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s that [[DocumentDeclarativeAPI|document declarative APIs]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>198.128.44.35</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2892&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Abstractions Need Usecases */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2892&amp;oldid=prev"/>
				<updated>2009-09-15T09:08:09Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Abstractions Need Usecases&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 09:08, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example: ''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]. Use it this way!''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example: ''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]. Use it this way!''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are sole of [[API]] design. They create the high level concepts that simplify our life (when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]]). Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are sole of [[API]] design. They create the high level concepts that simplify our life (when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]]). Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that [[DocumentDeclarativeAPI|document declarative APIs]]&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2890&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Abstractions Need Usecases */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2890&amp;oldid=prev"/>
				<updated>2009-09-15T08:36:44Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Abstractions Need Usecases&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:36, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 15:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example: ''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]. Use it this way!''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example: ''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]. Use it this way!''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are sole of [[API]] design. They create the high level concepts that simplify our life. Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are sole of [[API]] design. They create the high level concepts that simplify our life &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;(when one knows how to use it, the [[Maven]] is really more friendly than [[Ant]])&lt;/ins&gt;. Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2889&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Abstractions Need Usecases */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2889&amp;oldid=prev"/>
				<updated>2009-09-15T08:35:35Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Abstractions Need Usecases&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:35, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 13:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, &lt;/del&gt;''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The more abstract concept you expose, the more important good [[usecase]] is. For example [[NetBeans]] is using [[Lookup]] concept, which is quite abstract and used for various, at first sight unrelated, goals. It is almost impossible to explain newcomers the [[Lookup]] [[API]] itself. It always needs to be introduced by real problem, real [[usecase]]. For example&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;: &lt;/ins&gt;''if you want to [[MVC]] in [[NetBeans]], you need [[Lookup]]&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. Use it this way!&lt;/ins&gt;''. Then the [[usecase]] is clear, and the actual (originally confusing) [[API]] is just a tool to realize that [[usecase]].&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are sole of [[API]] design. They create the high level concepts that simplify our life. Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;Abstractions are sole of [[API]] design. They create the high level concepts that simplify our life. Yet, abstractions are not the primary goal. Humans need a guide to use the abstractions. Human need good [[usecase]]s.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2888&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Getting High */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2888&amp;oldid=prev"/>
				<updated>2009-09-15T08:34:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Getting High&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:34, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. A description of an (expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I was querying for keywords like '''ZIP maven JAR Class-Path''') attention and I could then follow up to the actual example describing how to realize my [[usecase]] &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;in &lt;/del&gt;via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. A description of an (expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I was querying for keywords like '''ZIP maven JAR Class-Path''') attention and I could then follow up to the actual example describing how to realize my [[usecase]] via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2887&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Getting High */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2887&amp;oldid=prev"/>
				<updated>2009-09-15T08:34:06Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Getting High&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:34, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. A description of an (expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;would query it &lt;/del&gt;for keywords like ZIP maven JAR) attention and I could then follow up to the actual example describing how to realize my [[usecase]] in via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. A description of an (expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;was querying &lt;/ins&gt;for keywords like &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;'''&lt;/ins&gt;ZIP maven JAR &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;Class-Path'''&lt;/ins&gt;) attention and I could then follow up to the actual example describing how to realize my [[usecase]] in via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2886&amp;oldid=prev</id>
		<title>JaroslavTulach: /* Getting High */</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2886&amp;oldid=prev"/>
				<updated>2009-09-15T08:32:36Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;span class=&quot;autocomment&quot;&gt;Getting High&lt;/span&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:32, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 9:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;I &lt;/del&gt;description of &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;a &lt;/del&gt;(expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I would query it for keywords like ZIP maven JAR) attention and I could then follow up to the actual example describing how to realize my [[usecase]] in via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;A &lt;/ins&gt;description of &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;an &lt;/ins&gt;(expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I would query it for keywords like ZIP maven JAR) attention and I could then follow up to the actual example describing how to realize my [[usecase]] in via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;==== Abstractions Need [[Usecase]]s ====&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2885&amp;oldid=prev</id>
		<title>JaroslavTulach at 08:32, 15 September 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2885&amp;oldid=prev"/>
				<updated>2009-09-15T08:32:04Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:32, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 4:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In case of ''procedural'' [[Ant]], this is much easier. I know that I need to copy library [[JAR]]s. Guess what is the appropriate tool? Yes, it is the ''copy'' task. I need to create a ZIP file. Guess what one shall use? Of course, the ''zip'' task. Finding the right mapping is easy, as [[Ant]] is naturally mapping the (simple) concepts user has in his head to the right tools. Of course, only simple concepts are mapped. As soon as one starts to think about generating the ''Class-Path'' attribute, one will get lost. This is just too complicated to be automated in [[Ant]] (as far as I am aware one of the right tools is ''pathconvert'' task, but the whole order of steps is quite complex).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In case of ''procedural'' [[Ant]], this is much easier. I know that I need to copy library [[JAR]]s. Guess what is the appropriate tool? Yes, it is the ''copy'' task. I need to create a ZIP file. Guess what one shall use? Of course, the ''zip'' task. Finding the right mapping is easy, as [[Ant]] is naturally mapping the (simple) concepts user has in his head to the right tools. Of course, only simple concepts are mapped. As soon as one starts to think about generating the ''Class-Path'' attribute, one will get lost. This is just too complicated to be automated in [[Ant]] (as far as I am aware one of the right tools is ''pathconvert'' task, but the whole order of steps is quite complex).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td colspan=&quot;2&quot;&gt;&amp;nbsp;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;==== Getting High ====&lt;/ins&gt;&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	<entry>
		<id>https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2884&amp;oldid=prev</id>
		<title>JaroslavTulach at 08:31, 15 September 2009</title>
		<link rel="alternate" type="text/html" href="https://wiki.apidesign.org/index.php?title=DocumentDeclarativeAPI&amp;diff=2884&amp;oldid=prev"/>
				<updated>2009-09-15T08:31:26Z</updated>
		
		<summary type="html">&lt;p&gt;&lt;/p&gt;

			&lt;table style=&quot;background-color: white; color:black;&quot;&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;col class='diff-marker' /&gt;
			&lt;col class='diff-content' /&gt;
			&lt;tr&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;←Older revision&lt;/td&gt;
				&lt;td colspan='2' style=&quot;background-color: white; color:black;&quot;&gt;Revision as of 08:31, 15 September 2009&lt;/td&gt;
			&lt;/tr&gt;
		&lt;tr&gt;&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;
&lt;td colspan=&quot;2&quot; class=&quot;diff-lineno&quot;&gt;Line 1:&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Declarative Programming]] offers us higher level abstractions. Such abstractions usually allow [[API]] users to specify what shall be done without the need to describe how to do it. Nice difference between these two approaches can be seen when packaging an application in [[Maven]] or in [[Ant]] (the ''build.xml'' and ''pom.xml'' are [[APITypes]]). While in [[Ant]] I would need to copy all the library [[JAR]]s into appropriate location and then generate main module manifest ''Class-Path'' attribute manually and ZIP the whole bundle, in [[Maven]] I can just choose the right plugin, tell it that my libraries shall are in ''lib'' directory and that I want ''Class-Path'' attribute and the rest is done automatically. This is perfect, but it has its own hidden issues.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;[[Declarative Programming]] offers us higher level abstractions. Such abstractions usually allow [[API]] users to specify what shall be done without the need to describe how to do it. Nice difference between these two approaches can be seen when packaging an application in [[Maven]] or in [[Ant]] (the ''build.xml'' and ''pom.xml'' are [[APITypes]]). While in [[Ant]] I would need to copy all the library [[JAR]]s into appropriate location and then generate main module manifest ''Class-Path'' attribute manually and ZIP the whole bundle, in [[Maven]] I can just choose the right plugin, tell it that my libraries shall are in ''lib'' directory and that I want ''Class-Path'' attribute and the rest is done automatically. This is perfect, but it has its own hidden issues.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It seems to me that the documentation for [[Declarative Programming|declarative APIs]] cannot be the same as for ''procedural ones''. The higher level abstractions may be too abstract for consumption by regular [[API]] novice. As shown in my [[Maven|Maven adventures]], I had a vision of what I wanted to do, but I could not select the appropriate abstractions (e.g. the [[Maven]] plugin) &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;that can &lt;/del&gt;help me in achieving my goal.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;It seems to me that the documentation for [[Declarative Programming|declarative APIs]] cannot be the same as for ''procedural ones''. The higher level abstractions may be too abstract for consumption by regular [[API]] novice. As shown in my [[Maven|Maven adventures]], I had a vision of what I wanted to do, but I could not select the appropriate abstractions (e.g. the [[Maven]] plugin) &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;to &lt;/ins&gt;help me in achieving my goal.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In case of ''procedural'' [[Ant]], this is much easier. I know that I need to copy library [[JAR]]s. Guess what is the appropriate tool? Yes, it is the ''copy'' task. I need to create a ZIP file. Guess what one shall use? Of course, the ''zip'' task. Finding the right mapping is easy, as &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;it &lt;/del&gt;is naturally mapping the (simple) concepts user has in his &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;had &lt;/del&gt;to the right tools. Of course, only simple concepts are mapped. As soon as one starts to think about generating the ''Class-Path'' attribute, one will get lost. This is just too complicated to be automated in [[Ant]] (as far as I am aware one of the right tools is ''pathconvert'' task, but &lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;still &lt;/del&gt;the whole order of steps is quite complex&lt;del style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;, btw.&lt;/del&gt;).&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;In case of ''procedural'' [[Ant]], this is much easier. I know that I need to copy library [[JAR]]s. Guess what is the appropriate tool? Yes, it is the ''copy'' task. I need to create a ZIP file. Guess what one shall use? Of course, the ''zip'' task. Finding the right mapping is easy, as &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;[[Ant]] &lt;/ins&gt;is naturally mapping the (simple) concepts user has in his &lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;head &lt;/ins&gt;to the right tools. Of course, only simple concepts are mapped. As soon as one starts to think about generating the ''Class-Path'' attribute, one will get lost. This is just too complicated to be automated in [[Ant]] (as far as I am aware one of the right tools is ''pathconvert'' task, but the whole order of steps is quite complex).&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt;-&lt;/td&gt;&lt;td style=&quot;background: #ffa; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt;+&lt;/td&gt;&lt;td style=&quot;background: #cfc; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The trouble with high level concepts is that there needs to be some entry point that maps the actual [[API]] user need to the right tool. Treating the [[Maven]] plugins as such entry points is not sufficient. Every plugin has huge set of additional configuration options and can be tweaked to do almost everything. So when looking at ''assembly'' plugin documentation I have seen that this is useful for creation of ''uber [[JAR]]'' and I immediately have lost my interest&lt;ins style=&quot;color: red; font-weight: bold; text-decoration: none;&quot;&gt;. If I investigated it more, I would have found out it is useful for solving many other goals as well. But [[API]] shall be easy to use&lt;/ins&gt;.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;tr&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. I description of a (expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I would query it for keywords like ZIP maven JAR) attention and I could then follow up to the actual example describing how to realize my [[usecase]] in via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;td class='diff-marker'&gt; &lt;/td&gt;&lt;td style=&quot;background: #eee; color:black; font-size: smaller;&quot;&gt;&lt;div&gt;The entry point for an [[API]] should be a [[usecase]]. I description of a (expected) user need. This is true for any [[API]], but clearly for [[Declarative Programming]] this is more important than ever. In this case the [[usecase]] is to ''package ZIP file with multiple [[JAR]] files''. This would immediately trigger my (or google's, when I would query it for keywords like ZIP maven JAR) attention and I could then follow up to the actual example describing how to realize my [[usecase]] in via ''pom.xml'' configuration.&lt;/div&gt;&lt;/td&gt;&lt;/tr&gt;
&lt;/table&gt;</summary>
		<author><name>JaroslavTulach</name></author>	</entry>

	</feed>