atom feed142 messages in org.apache.cocoon.devRe: Public/Private classification (wa...
FromSent OnAttachments
66 earlier messages
Ross GardlerOct 3, 2005 10:17 am 
Luca MorandiniOct 3, 2005 10:30 am 
Nicola Ken BarozziOct 3, 2005 10:44 am 
Antonio GallardoOct 3, 2005 12:30 pm 
Sylvain WallezOct 3, 2005 1:38 pm 
Steven NoelsOct 4, 2005 1:08 am 
Daniel FagerstromOct 4, 2005 2:16 am 
Pier FumagalliOct 4, 2005 2:31 am 
Bertrand DelacretazOct 4, 2005 2:36 am 
Daniel FagerstromOct 4, 2005 3:01 am 
Andrew SavoryOct 4, 2005 3:13 am 
UpayaviraOct 4, 2005 3:17 am 
Bertrand DelacretazOct 4, 2005 3:29 am 
Steven NoelsOct 4, 2005 3:39 am 
Torsten CurdtOct 4, 2005 3:47 am 
hepaboluOct 4, 2005 4:00 am 
Joerg HeinickeOct 4, 2005 4:39 am 
Sylvain WallezOct 4, 2005 4:57 am 
Daniel FagerstromOct 4, 2005 5:48 am 
Arje CahnOct 4, 2005 5:55 am 
Stefano MazzocchiOct 4, 2005 9:08 am 
Sylvain WallezOct 4, 2005 9:24 am 
Carsten ZiegelerOct 4, 2005 12:43 pm 
Steven NoelsOct 5, 2005 3:57 am 
Carsten ZiegelerOct 10, 2005 5:02 am 
Joerg HeinickeOct 11, 2005 2:03 pm 
Vadim GritsenkoOct 11, 2005 8:01 pm 
Stefano MazzocchiOct 11, 2005 8:16 pm 
Vadim GritsenkoOct 11, 2005 8:35 pm 
Bertrand DelacretazOct 11, 2005 11:20 pm 
Max PfingsthornOct 12, 2005 12:31 am 
Torsten CurdtOct 12, 2005 12:32 am 
Bertrand DelacretazOct 12, 2005 12:58 am 
Sylvain WallezOct 12, 2005 1:34 am 
Carsten ZiegelerOct 12, 2005 2:21 am 
Daniel FagerstromOct 12, 2005 4:52 am 
Stefano MazzocchiOct 12, 2005 8:58 am 
Stefano MazzocchiOct 12, 2005 9:01 am 
UpayaviraOct 12, 2005 9:20 am 
Vadim GritsenkoOct 12, 2005 9:38 am 
Stefano MazzocchiOct 12, 2005 9:47 am 
Niclas HedhmanOct 12, 2005 10:04 am 
UpayaviraOct 12, 2005 11:57 am 
hepaboluOct 12, 2005 12:43 pm 
Stefano MazzocchiOct 12, 2005 2:09 pm 
Stefano MazzocchiOct 12, 2005 2:18 pm 
Stefano MazzocchiOct 12, 2005 2:20 pm 
Sylvain WallezOct 12, 2005 2:35 pm 
Vadim GritsenkoOct 12, 2005 2:47 pm 
Daniel FagerstromOct 13, 2005 2:41 am 
Reinhard PoetzOct 13, 2005 3:25 am 
Vadim GritsenkoOct 13, 2005 8:07 am 
Ralph GoersOct 13, 2005 9:14 am 
Vadim GritsenkoOct 13, 2005 9:22 am 
Ralph GoersOct 13, 2005 9:44 am 
Daniel FagerstromOct 13, 2005 9:56 am 
Stefano MazzocchiOct 13, 2005 10:01 am 
Stefano MazzocchiOct 13, 2005 10:05 am 
Daniel FagerstromOct 13, 2005 1:59 pm 
Joerg HeinickeOct 13, 2005 2:03 pm 
Joerg HeinickeOct 13, 2005 2:05 pm 
Stefano MazzocchiOct 13, 2005 3:25 pm 
Reinhard PoetzOct 13, 2005 10:57 pm 
Daniel FagerstromOct 14, 2005 2:05 am 
Vadim GritsenkoOct 14, 2005 6:01 am 
Vadim GritsenkoOct 14, 2005 6:06 am 
Stefano MazzocchiOct 14, 2005 11:34 am 
Vadim GritsenkoOct 14, 2005 11:45 am 
Reinhard PoetzOct 15, 2005 1:38 am 
Joerg HeinickeOct 15, 2005 1:40 am 
Joerg HeinickeOct 15, 2005 1:45 am 
Stefano MazzocchiOct 15, 2005 8:53 am 
Stefano MazzocchiOct 15, 2005 9:08 am 
Peter HunsbergerOct 21, 2005 10:12 pm 
Stefano MazzocchiOct 23, 2005 10:39 am 
Peter HunsbergerOct 24, 2005 8:05 am 
Subject:Re: Public/Private classification (was Re: javadocs navigation)
From:Daniel Fagerstrom (dani@nada.kth.se)
Date:Oct 13, 2005 2:41:42 am
List:org.apache.cocoon.dev

Upayavira wrote:

So, I have created a wiki page:

http://wiki.apache.org/cocoon/PublicAPIClasses

Please go there and mark classes public/private as necessary. As it says at the top of that page, if you disagree with someone, change it to "dispute" or D for short. Then it becomes an opportunity for some healthy argument!

Wow! that's a lot of classes. While I aplaud the initiative, 673 classes are huge amount to classify. I would suggest that we start discussing principles first a bit.

IMO we need to find two set of interfaces/classes: the API of Cocoon, and the set of classes (components) that an application programmer need JavaDoc for.

I guess this thread is mainly about the second set, but I find it hard to adress whoyhout discussing the first one.

Cocoon API ==========

These are the interfaces that we intend an application programmer to implement while building Cocoon applications. Our "contract" with the user is that we do our best to keep these interfaces. And when that would be a to large hinder for further development of Cocoon, we follow standard practices for deprecation or interface modification.

We should IMO put the Cocoon API in one or possibly several pure interface jars (bundles).

So what is the Cocoon API? All interfaces used in cocoon-core-sitemap.xconf are part of the Cocoon API: Generator, Transformer, Serializer, Reader, Matcher, Selector, Action, ProcessingPipeline. Then the interfaces refered to in the Cocoon API must be part of the API as well by transitive closure. So here we get various exceptions, SitemapModelComponent, XMLPipe, XMLProducer and much more. The ObjectModelHelper with dependencies is also part of the API.

Then we can continue to take a look at cocoon-core.xconf. Most of the interfaces used here are probably part of the Cocoon API: InputModule, OutputModule, Source (with extending interfaces: WritableSource and maybe some more), to mention some obvious. For some of the interfaces here it is less clear if they are part of the Cocoon API, as an example are we going to support the use of Processor? To connect to a current discussion.

Maybe there are part of the Cocoon API that not is used for components and "sitemap components"? We obviously support Servlet e.g.

"Public API Classes" ====================

This is what a user needs to build own components, use components from flowscript or using Cocoon from other applications or environments.

Here we have all (or most) components defined in cocoon-core-sitemap.xconf and cocoon-core.xconf. The CocoonBean and CocoonServlet would also be part of this. Some utility classes from util and xml and abstract classes that helps implementing different component classes could also be part of the public API classes.

--- o0o ---

So if you think that the above is a good idea, we could work incrementally: Start with defining the Cocoon API: one list of sitemap component interfaces, one with component interfaces and one where people could add other intefaces that should be part of the Cocoon API. Then we could mark what should be public and private in these lists.

We also need to have a list with the transitive closure of all interfaces and classes that the previous lists depends on (hopefully some IDE or other tool can generate that list). As the dependencies also need to be part of the Cocoon API. This will also give as an indication if there are parts of Cocoon that would need to be refactored to give cleaner and more focused interfaces.

When we have agreed about what is the Cocoon API, I would be happy if we could move it to an own jar.

After or in parallell with finding the Cocoon API, we could work on the "public API classes", following similar principles. Listing all components from our configuration for marking them public or private and also utility classes. And then a list of the transitive closure of the dependencies. Also the public API classes should go to one or several "component" bundles.

WDYT?

/Daniel