Friday September 08, 2006
Pilot Chapter for Upcoming NetBeans Module Development Book
We're talking about writing a book for the module development area. There's still some discussion about whether the book will primarily focus on module developers or on NetBeans Platform developers, but the general line of thinking seems to (currently) be in favor of creating a module development book. (Of course, the other could be written at some future stage, plus there's a lot of overlap between the two areas, so NetBeans Platform applications will inevitably be discussed to some extent.)
However, while we're finalizing the decision on which direction to take, I've put together a 'pilot chapter', i.e., a chapter of my personal take on how the content and flow of a chapter in the book could/should be. In my mind, the book should be very heavy on examples and code. It should cover everything that could possibly be covered in whatever area is being covered. Someone should be able to pick up the book, think "Hmmm. I wonder how code completion works," and then find everything on code completion in the book. So, in my mind, the focus should be on practical, sample-based texts.
Plus, everything should be interesting and readable, with screenshots, tips, and interesting bits of information scattered around, much like the NetBeans IDE Field Guide. My other great example, in the API documentation area, is the OpenOffice.org Developers Guide, which is fantastic.
So, the pilot chapter is reaching completion and is attached below. It is about the WebFrameworkProvider class, which any module developer interested in integrating a web framework (Tapestry, Spring, etc) needs to know about (before knowing about anything else). Here are some questions to ponder while browsing/reading the chapter:
- Is it interesting?
- Is it readable?
- Is the style conversational? If yes, is that good? If no, how should it be different?
- Is it practical? (Could you see yourself picking it up and doing something with it?)
- Is it the right level of detail?
- Is it too simplistic? Should it be pitched at some 'higher level'? (And define what that is.)
- Does it cover everything needed in this area? (If not, what's left out?)
- Enough screenshots? More needed?
- Too much code?
- Like the tip lightbulb? Or not?
- Other types of illustrations needed?
- Could you see yourself reading about 20 more chapters written in the same style and with the same type of content? (From Nodes API to HyperlinkProvider, from Refactoring API to Lookup?)
Don't worry about the font or the quality of the screenshots. Also don't worry too much about the technical detail. There are some gaps, but not many. (In fact, you should be able to pick it up already and have enough information for integrating your own framework.) Still, the chapter needs to be technically reviewed, so don't be surprised if you find some problems here and there (which I'd appreciate being told about).
One important question—do you see the user (i.e. you) going through the chapter step by step implementing the examples in the chapter, or is it more likely that the user would have (in this case) their own framework in mind and use the chapter as a guide when implementing their own framework? (In other words, would people use it as a tutorial to follow religiously or as a frame of reference?) Another question—does it make sense to focus on just one framework from beginning of the chapter to the end (and, if so, which one)? Or does the current situation, where a variety of frameworks are discussed, appeal more to you?
By the way, I imagine there'd be a CD with code samples, which would be referred to in the chapters themselves, where applicable.
Apologies, but I haven't been able to work out how to do internal hyperlinks (called 'bookmarks', I think) in Open Office, so the table of contents doesn't link to the individual sections. Here it is:
Updated: pilot-chapter-registering-a-framework.pdf
Feel free to either leave comments on this chapter in this blog or to send them to me personally. Remember—your input will turn this book into what you need. No input from you might result in a book which you will not find helpful!
Sep 08 2006, 07:30:01 AM PDT Permalink
Here's a short feedback :) :
Is it interesting?
Yes it is :). Such a book is really missing, as for many problems is a better approach not to complicate the framework to be more productive, but to build tools that increase the productivity. This way the framework can remain simple an reliable. Such an example is Click Framework - one of the few frameworks that one can master only after one or two days of study.
Is it readable?
Yes.
Is the style conversational? If yes, is that good? If no, how should it be different?
For me, the style is pleasant and I would like if more books would have such a style.
Is it practical? (Could you see yourself picking it up and doing something with it?)
Yes, for sure :). I'm very excited to put in practice what's in there.
Is it the right level of detail?
IMHO it is.
Is it too simplistic? Should it be pitched at some 'higher level'? (And define what that is.)
No, I don't think that it's too simplisting, (as long as it is on a concrete example).
Does it cover everything needed in this area? (If not, what's left out?)
That's very hard to answer. I think only advanced NB architects can answer if all topics are covered (that are supposed to be the responsibility of the WebFrameworkProvider).
Enough screenshots? More needed?
Yep, need more and consistent (on the same theme), and also just like you did: "screenshot regions".
Too much code?
Not if:
- It's splitted into fragments - so no big blocks that are larger than a page
- It has your comments, not the brute comments from the original code
- The comments are as text, not as "java code comments" (so that the code looks simpler)
- You explain the point, and let obvious things out (and just a link the the file) - the book is not a reprint of some sources, right? :)
Like the tip lightbulb? Or not?
It's OK, but any sign would do it. Highlighting elements in a book is however important. There might be more types of higlight: "tips", "wrong practic", "danger", "short story to exemplify", etc.
Other types of illustrations needed?
Yes. Diagrams to explain things and relations, architecture, workflow, etc. For this chapter there's no need for many diagrams, but for other aspects of the API it would be very important.
Could you see yourself reading about 20 more chapters written in the same style and with the same type of content? (From Nodes API to HyperlinkProvider, from Refactoring API to Lookup?)
I would be very glad to read such a book (if there were one). At the moment is a very hard work (marked with many trial an fail steps) to get things done. Such a book would be the "bible" :).
One important question—do you see the user (i.e. you) going through the chapter step by step implementing the examples in the chapter, or is it more likely that the user would have (in this case) their own framework in mind and use the chapter as a guide when implementing their own framework?
Both. The user would make the examles to get confortable with the API and to understand and learn what's in there, and than it would put in practice for his own framework.
Another question—does it make sense to focus on just one framework from beginning of the chapter to the end (and, if so, which one)?
Yes. Consistency is very very important, and make things much simpler to understand (and needs no translation process from the reader's side). Aspects that simply do not exsist (or not required) by that "selected" framework should be exemplified on the "official/standard" ones (e.g. Struts or JSF). What framework should be the "selected one"? IMHO it should be one that all people can learn(or need to learn) and is also OK from a SUN perspective and strategy. This could be even Struts if is simpler this way to write a book. As a selfish developer I could propose to use Click, but I don't know what's the SUN policy regarding so small frameworks, so I'm very happy with ANY framework as long as the book helps me create a plug-in for my framework.
Or does the current situation, where a variety of frameworks are discussed, appeal more to you?
No. You can mention the other frameworks too (that they need the one or the other feature more), but IMHO the examples should be consistent and always on the same framework as long this is possible.
I hope the above feedback helps :).
Ahmed.
P.S. an online questionaire would have been simpler and IMHO much more people would have participated :).
Posted by Ahmed Mohombe on September 08, 2006 at 08:41 AM PDT #
If you can't use (or SUN/NB don't have) an online questionnaire, you can use Form Assembly, cause it's free for the amounth of information you need, and you can setup such a form in a few minutes. This would be for the users much simpler to give you feedback.
Ahmed.
Posted by Ahmed Mohombe on September 08, 2006 at 09:04 AM PDT #
Posted by Jacek on September 08, 2006 at 10:00 AM PDT #
Posted by Richard Welty on September 08, 2006 at 03:47 PM PDT #
Posted by Geertjan on September 08, 2006 at 06:07 PM PDT #
Posted by pavan kumar on September 08, 2006 at 08:38 PM PDT #
Posted by Kovica on September 09, 2006 at 02:59 AM PDT #
Posted by Richard Welty on September 09, 2006 at 06:26 AM PDT #
Posted by Geertjan on September 09, 2006 at 06:31 AM PDT #
- Is it interesting? Yes. I devoured it immediately.
- Is it readable? Yes, it was readable for me; however, I can't vouch for everyone as I've spent some time trying to figure out the exact same things that are in the chapter, so reading it was pretty much validating what I had already found out (for the most part). I would imagine though that for a total newbie it might be a bit overwhelming in the amount of information that is found in it.
- Is the style conversational? If yes, is that good? If no, how should it be different? The style is OK, I really didn't pick up anything negative about it.
- Is it practical? (Could you see yourself picking it up and doing something with it?) Most definitely. You are always ahead of my by a couple of steps with things : I wish I had this when I was trying to figure out the exact same things (e.g. registering the framework provider stumbled me pretty badly).
- Is it the right level of detail? It h has maybe a little too much detail, although that's not necessarily bad. For example, where you explain how to create all the necessary files for the framework, even before, I always thought that there would have to be some more polished way of doing it (e.g. too much implementation detail seems to be in it). On the other side though, it probably would be helpful to have more detailed explanations of what each couple of lines of code do (e.g. Manning books are a good example of that) - for example, the example in 4.2 only explains 2 of the lines and the rest of it is not explained.
- Is it too simplistic? Should it be pitched at some 'higher level'? (And define what that is.)
- Does it cover everything needed in this area? (If not, what's left out?) I have been considering using some of the stuff that Xzajo does here(e.g. velocity templates) for the code generation. It probably would be helpful to show the usage of a more "standard" tool for code generation.
- Enough screenshots? More needed? More screenshots are always nice to have. They don't necessarily have to show each action performed, but for example it would have been nice to see the project structure (e.g. all nodes expanded)
- Too much code? Not necessarily too much, but more comments, especially in the examples section would be nice.
- Like the tip lightbulb? Or not? The light bulb is really nice.
- Other types of illustrations needed? This seems like a good start.
- Could you see yourself reading about 20 more chapters written in the same style and with the same type of content? (From Nodes API to HyperlinkProvider, from Refactoring API to Lookup?) It probably wouldn't be possible to read the whole thing in one sitting (e.g. as the content is very practical). For some reason (could just be my pdf reader - kpdf), but the font seems very dry and boring. For example, I found it difficult to read the whole introduction as the text seems to be too crammed. It would probably be nice if it would be possible to have the project in each chapter fairly self contained, so that if a user is interested in only particular aspects of building the module, he/she wouldn't have to read all the previous chapters. At the same time, it would probably be nice to have a running case study across the whole book that would maybe illustrate "the building of a framework support module in NetBeans".
Although knowing the layer.xml is listed as a prerequisite, I've always found that difficult to understand the "why" of certain things in it. For example, why do the java templates always need to have a .template extension ? Along the same lines, it would probably be helpful on adding some info on why certain things are done in a certain way - maybe that could be another type of lightbulb that would explain the NetBeans architectural considerations for doing things in certain things. I hope this helps
Posted by Alex Kotchnev on September 09, 2006 at 06:19 PM PDT #
Posted by Richard Welty on September 10, 2006 at 08:04 AM PDT #
Richard, good idea -- in fact, that's something I've been confronted with in the Visual Library API (discussed in some detail over a few blogs from recently). One comes to an API from a Swing background and then has to rethink GUI programming to some extent and end up with similar components to those provided by Swing. Some kind of table that draws comparisons and differences would definitely be useful, especially in the platform part of this book.
Posted by Geertjan on September 10, 2006 at 09:55 AM PDT #
Posted by Tomislav Nakic-Alfirevic on September 10, 2006 at 10:18 AM PDT #
Posted by Geertjan on September 10, 2006 at 10:22 AM PDT #
Posted by John on October 04, 2006 at 11:17 AM PDT #
Posted by Geertjan on October 22, 2006 at 12:41 AM PDT #
Posted by Lassaad melliti on December 27, 2006 at 03:33 AM PST #
Posted by hilz on January 07, 2007 at 01:44 PM PST #
Posted by Geertjan on January 07, 2007 at 01:46 PM PST #


