java.net: Wiki

The Source for Java Technology Collaboration


 <<O>>  Difference Topic SwingLabsAPIReview (8 - 05 Jul 2007 - Main.kleopatra)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 19 to 19
 

Process

Changed:
<
<
The process is to tag all code as "dev" to begin with. (In the future, this will be done by leaving all "dev" code in one or more development branches, and only having "rc" quality code in the trunk.) Then take components through the review process (first internal, then public). Finally, change to "rc" for the component once approved (in the future, this will mean committing to the trunk). Every component, package, and class will pass through this process (some quicker than others). At the end of this process, comprehensive unit tests, javadocs, and tutorial documentation must be written for the component.
>
>
There is code in SwingX? and the other subprojects in various states of completion. Most of that code has not gone through a complete review process, and as such cannot be considered as stable code. The API review process is designed such that in the end, these components can be considered stable. The API review is also such that if the component were going to make it into the JDK, it could do so with the minimal amount of work or change to API.
 
Changed:
<
<
What "comprehensive" means is: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs must be complete (all tags where the belong, written according to Sun's guidelines How to Write Doc Comments for the JavaDoc Tool?. Further ideas are collected in JavaDoc Notes ). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).
>
>
The first step is to prepare a component (or framework) for review. Whoever accepts responsibility for "championing" a component through the review process begins by updating the API to match what he/she thinks is the best possible API. This may mean working on a development branch instead of the main trunk if changes are significant. Updating the API also includes updating the documentation (JavaDoc? is considered the "spec" in Java). Once the JavaDoc? and API design phase is finished, the submitter will prepare some output for review (typically this is either the source code itself in some modified form, or the JavaDoc? HTML).
 
Changed:
<
<
Reviews can be lengthy. Due to this, what I suggest is that we'll do a review here at Sun, and publish the materials and findings to that review in the wiki. We'll then hold a second review externally. The idea is that all minor issues will shake out during the internal review and make for a more expeditious public review.
>
>
The next step is an internal review at Sun Microsystems with the Swing team. We will review the API and documentation. From this review will come a list of suggestions and issues for the submitter to review. This process repeats until the submitter and Swing team are content with the API. The review process is then opened up to the community in general. Begin by posting a "XXXComponent ready for external review" message on the forums. Include a link to the documentation to review, and also a link to the results of previous reviews (these should all be available from here in this wiki). Once the component has gone through the external review process, it is ready to be marked as "@status = Reviewed" in the class documentation.
 
Changed:
<
<
I like to use two sources of material for reviews: the javadoc and a set of powerpoint slides. This means that javadoc must be written for components to be reviewed :). More importantly, it makes it easier on reviewers. I like to use powerpoint to exhibit code samples, design decisions, use cases, and other supporting documentation. For the purpose of being web-friendly, I'd rather publish these slides as .pdf files rather than powerpoint.
>
>
The next step for the component (if it has not already been done) is to write comprehensive unit tests and tutorial documentation. By "comprehensive" we mean: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs must be complete (all tags where the belong, written according to Sun's guidelines How to Write Doc Comments for the JavaDoc Tool?. Further ideas are collected in JavaDoc Notes ). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).
 
Changed:
<
<
Once reviewed and approved by both internal and public review "boards" (comprising committers -- of course everyone is free to chime in) the code is marked as RC.
>
>
Reviews can be lengthy. This is partly why we do a review here at Sun, and publish the materials and findings to that review in the wiki. The idea is that all minor issues will shake out during the internal review and make for a more expeditious public review. The other reason is so that code that does migrate to the JDK won't have to be entirely redesigned.
 Question: What I'm still not quite clear about is what are the criteria for an "api review"?
Line: 43 to 43
 
Changed:
<
<
  • JXErrorDialog? -- DONE
>
>
 
Changed:
<
<
>
>
 
Line: 78 to 78
 
  • JXTreeTable

Cross-component themes

Changed:
<
<
  • Renderer-based Highlighting
>
>
 
  • Sorting/Filtering
  • Searching
  • Rollover

 <<O>>  Difference Topic SwingLabsAPIReview (7 - 10 Nov 2006 - Main.rbair)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 21 to 21
 The process is to tag all code as "dev" to begin with. (In the future, this will be done by leaving all "dev" code in one or more development branches, and only having "rc" quality code in the trunk.) Then take components through the review process (first internal, then public). Finally, change to "rc" for the component once approved (in the future, this will mean committing to the trunk). Every component, package, and class will pass through this process (some quicker than others). At the end of this process, comprehensive unit tests, javadocs, and tutorial documentation must be written for the component.
Changed:
<
<
What "comprehensive" means is: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs must be complete (all tags where the belong, written according to the guidelines posted here http://java.sun.com/j2se/javadoc/writingdoccomments/). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).
>
>
What "comprehensive" means is: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs must be complete (all tags where the belong, written according to Sun's guidelines How to Write Doc Comments for the JavaDoc Tool?. Further ideas are collected in JavaDoc Notes ). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).
 Reviews can be lengthy. Due to this, what I suggest is that we'll do a review here at Sun, and publish the materials and findings to that review in the wiki. We'll then hold a second review externally. The idea is that all minor issues will shake out during the internal review and make for a more expeditious public review.
Line: 43 to 43
 
Changed:
<
<
>
>
 
Changed:
<
<
>
>
 
Line: 64 to 64
 user-interaction which is fully configurable by developers. They support advanced interaction themes (like f.i. sorting, searching) in a consistent manner. This leads to a huge api which has to be broken down into bounded clusters to be manageable for review. The approach I'm using in review preparation is bottom up:
Changed:
<
<
  • starting from the lightweight, widget-targeted classes (example: TableColumnXX)
  • to usage of those collaborators by the widget (example: JXTable api related to the enhanced TableColumnXX).
  • after that: - from cross-component collaborators (example: Highlighter)
  • to usage of those collaborators by a sample widget (JXTable api related to highlighter)
  • to analogous usage by the other interested widgets (JXList, JXTree api related to highlighter)
>
>
  1. starting from the lightweight, widget-targeted classes (example: TableColumnXX)
  2. to usage of those collaborators by the widget (example: JXTable api related to the enhanced TableColumnXX).
  3. after that: - from cross-component collaborators (example: Highlighter)
  4. to usage of those collaborators by a sample widget (JXTable api related to highlighter)
  5. to analogous usage by the other interested widgets (JXList, JXTree api related to highlighter)
 

Component support

Changed:
<
<
>
>
 
  • JXList
  • JXTree
  • JXTreeTable

 <<O>>  Difference Topic SwingLabsAPIReview (6 - 19 Sep 2006 - Main.rbair)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 40 to 40
 Of course a list of requirements up front is critical. What are we trying to achieve with this API? If the requirements are off, the review will most likely be postponed until the requirements are refined and API refined as necessary.

Reviews

Changed:
<
<
>
>
 

 <<O>>  Difference Topic SwingLabsAPIReview (5 - 07 Sep 2006 - Main.kleopatra)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 58 to 58
 
Added:
>
>

Collection Components

That's my favourite name to denote components for showing collection-type data like lists, trees, tabular data.They allow a rich user-interaction which is fully configurable by developers. They support advanced interaction themes (like f.i. sorting, searching) in a consistent manner. This leads to a huge api which has to be broken down into bounded clusters to be manageable for review. The approach I'm using in review preparation is bottom up:

  • starting from the lightweight, widget-targeted classes (example: TableColumnXX)
  • to usage of those collaborators by the widget (example: JXTable api related to the enhanced TableColumnXX).
  • after that: - from cross-component collaborators (example: Highlighter)
  • to usage of those collaborators by a sample widget (JXTable api related to highlighter)
  • to analogous usage by the other interested widgets (JXList, JXTree api related to highlighter)

Component support

Cross-component themes

  • Renderer-based Highlighting
  • Sorting/Filtering
  • Searching
  • Rollover
  • Action


 <<O>>  Difference Topic SwingLabsAPIReview (4 - 23 Aug 2006 - Main.joshy)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 50 to 50
 
Added:
>
>
 

 <<O>>  Difference Topic SwingLabsAPIReview (3 - 25 Jul 2006 - Main.rbair)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 40 to 40
 Of course a list of requirements up front is critical. What are we trying to achieve with this API? If the requirements are off, the review will most likely be postponed until the requirements are refined and API refined as necessary.

Reviews

Changed:
<
<
JXPanel JXLoginPanel JXErrorDialog JXHeader JXGraph JXMultiSplitPane JXTitledPanel JXTitledSeparator JXStatusBar
>
>
 

 <<O>>  Difference Topic SwingLabsAPIReview (2 - 20 Jul 2006 - Main.rbair)
Line: 1 to 1
 
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->
Line: 11 to 11
 
<-- For more on how to write Javapedia articles please read the WritingArticles? page. -->

Introduction

Changed:
<
<
Welcome to the SwingLabs API Review page. This page contains links to each component in a SwingLabs project which has been or is
>
>
Welcome to the SwingLabs API Review page. This page contains links to each component in a SwingLabs project which has been or is
 in process of being reviewed. Following is an overview of the review process, including the motive.

Motive

Line: 21 to 21
 The process is to tag all code as "dev" to begin with. (In the future, this will be done by leaving all "dev" code in one or more development branches, and only having "rc" quality code in the trunk.) Then take components through the review process (first internal, then public). Finally, change to "rc" for the component once approved (in the future, this will mean committing to the trunk). Every component, package, and class will pass through this process (some quicker than others). At the end of this process, comprehensive unit tests, javadocs, and tutorial documentation must be written for the component.
Changed:
<
<
What "comprehensive" means is: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs? must be complete (all tags where the belong, written according to the guidelines posted here http://java.sun.com/j2se/javadoc/writingdoccomments/). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).
>
>
What "comprehensive" means is: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs must be complete (all tags where the belong, written according to the guidelines posted here http://java.sun.com/j2se/javadoc/writingdoccomments/). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).
 Reviews can be lengthy. Due to this, what I suggest is that we'll do a review here at Sun, and publish the materials and findings to that review in the wiki. We'll then hold a second review externally. The idea is that all minor issues will shake out during the internal review and make for a more expeditious public review.
Line: 41 to 41
 

Reviews

JXPanel
Added:
>
>
JXLoginPanel JXErrorDialog JXHeader JXGraph JXMultiSplitPane JXTitledPanel JXTitledSeparator JXStatusBar
 

 <<O>>  Difference Topic SwingLabsAPIReview (1 - 20 Jul 2006 - Main.rbair)
Line: 1 to 1
Added:
>
>
META TOPICPARENT name="SwingLabs"
Home | Changes | Index | Search | Go
<-- This creates the navigation links to :  Home | Help | Index | etc.  -->

SwingLabsAPIReview
<-- this automatically adds a header showing the name of this page -->

<-- Your JavaDesktop? article goes here. Please try to include at least one sentence describing this topic. -->
<-- Also please try to include at least one sentence describing where each link goes. -->
<-- Please make sure some other page points to your new article so that others can find it! -->
<-- For more on how to write Javapedia articles please read the WritingArticles? page. -->

Introduction

Welcome to the SwingLabs API Review page. This page contains links to each component in a SwingLabs project which has been or is in process of being reviewed. Following is an overview of the review process, including the motive.

Motive

To provide a stable set of components that will make future additions to the codebase significantly easier to accept from outside parties by making the process as transparent and clear as possible. To provide a more straightforward path for outside contributors who want to get their code committed to the main swingx tree. To provide a stable set of components to users, with clear expectations for which code is stable and which code is still in development.

Process

The process is to tag all code as "dev" to begin with. (In the future, this will be done by leaving all "dev" code in one or more development branches, and only having "rc" quality code in the trunk.) Then take components through the review process (first internal, then public). Finally, change to "rc" for the component once approved (in the future, this will mean committing to the trunk). Every component, package, and class will pass through this process (some quicker than others). At the end of this process, comprehensive unit tests, javadocs, and tutorial documentation must be written for the component.

What "comprehensive" means is: the unit tests must pass Jeanettes muster (our resident Unit Test advocate). JavaDocs? must be complete (all tags where the belong, written according to the guidelines posted here http://java.sun.com/j2se/javadoc/writingdoccomments/). Tutorial docs must exist on swinglabs.org according to Josh Marinacci's standards (our resident writer).

Reviews can be lengthy. Due to this, what I suggest is that we'll do a review here at Sun, and publish the materials and findings to that review in the wiki. We'll then hold a second review externally. The idea is that all minor issues will shake out during the internal review and make for a more expeditious public review.

I like to use two sources of material for reviews: the javadoc and a set of powerpoint slides. This means that javadoc must be written for components to be reviewed :). More importantly, it makes it easier on reviewers. I like to use powerpoint to exhibit code samples, design decisions, use cases, and other supporting documentation. For the purpose of being web-friendly, I'd rather publish these slides as .pdf files rather than powerpoint.

Once reviewed and approved by both internal and public review "boards" (comprising committers -- of course everyone is free to chime in) the code is marked as RC.

Question: What I'm still not quite clear about is what are the criteria for an "api review"?

The first requirement is a piece of code that is ready to be defended. What we don't want to do is to devolve into a design-by-committee review, which is what happens to poorly or incompletely thought out API. It's ok to go into it with a few open questions, but we also need to have a suggested solution to think about.

Also, expect that even the most trivial code (like JXPanel) is going to be revised during the process. In a successful review a year and a half ago (or thereabouts) Bino brought in the authentication framework. It looked different afterward, but has essentially been stable since.

Be prepared to defend why a certain design was taken. Why not one of several alternative designs? What makes the proposed solution better? More complicated API needs to be more rigorously defended, particularly with why the complicated API was chosen. Are the use cases enabled by the more complex API worth it?

Of course a list of requirements up front is critical. What are we trying to achieve with this API? If the requirements are off, the review will most likely be postponed until the requirements are refined and API refined as necessary.

Reviews

JXPanel

Topic SwingLabsAPIReview . { View | Diffs r8 < r7 < r6 < r5 | More }
 XML java.net RSS