On 22 Nov 2010, at 18:00, Rajith Attapattu wrote:
On Mon, Nov 22, 2010 at 11:09 AM, Rajith Attapattu <[email protected]>wrote:
Hi All,

Based on the questions asked on our user list and feedback from customers etc.. it seems that we have plenty of room to improve when it comes to ease
of use and documentation.
Ease of use is one that directly impacts the first impression about any new
product.

All,

I pretty much agree with these points, although with some reservations about the one-size-fits-all packaging proposal...

I firmly believe this is something that needs to be one of the top
priorities (if not the top most) for our next release.
Perhaps it's time for us to take a step back and see if,

1) Have we packaged our products in a way that is useful for our target
users ?

Given that we have products written in multiple languages and targetted at different Operating systems perhaps pre-compiled individual components might
not be the most optimal.
Therefore downloading individual components doesn't really make sense as you need brokers, clients, examples and management tools, documentation to get a
good all round experience.

Instead we should probably ship a single source tree with some sort of
script that will build the brokers, clients, examples and management tools
and install the binaries to a particular location.
Easier said than done, but I believe several folks have expressed their
desire about taking this direction.

Goo...?

I'm not sure about this. That doesn't seem like the usual model for enterprise software distribution.

1. I agree that providing a full, DIY source bundle is something that should definitely be provided, but in addition to other downloads. I don't see why both models can't coexist?

2. It should be alongside componentised or modularised binary downloads. The installable artifacts are the brokers and the management console/command line tools, which should be available as platform specific binaries, installable packages of various kinds, and as a DIY source tarball, for Java and C++.

3. The second type of artifacts are the developer components, the client libraries for various languages. These should be available as components that can be installed into repositories or development environments, such as Maven POM files or OSGi modules. The client library for each language or environment should include the runtime components, which may need to be installable, as well as providing the artifacts that can be packaged with software being developed.

These three types of artifact multiplied by the available execution platforms, languages, runtimes and environments (which includes DIY or source tarball format) gives a formidable number of downloadable artifacts, which must be carefully documented in order not to confuse end users. For instance for the C++ broker, in addition to a DIY source download there could be x86 RPMs, x86_64 RPMs, Solaris 10 SPARC packages, Win32 MSI installer, Debian and other Linux packages, again in x86 and x86_64 variants, and so on.

I suspect a multi-level approach here is useful, from 'Beginner' to 'Advanced' levels, with appropriate artifacts provided. We obviously need to decide *what* we support and stick to it as well as keeping everything as simple as possible. Perhaps the Tomcat site could serve as a model, since it also provides Java and cross platform Unix and Windows code as both binaries *and* source. See here:

        http://tomcat.apache.org/download-70.cgi

2) How easy is it for folks to download an install our products ?

If we can achieve the above, I think it will go a long way in achieving this
goal.

Each download needs suitable and useful documentation to help the end user get it running as fast as possible, possibly we should provide a set of configuration files for the brokers as an additional set of downloads or as part of a HOWTO series on the documentation. This is not currently the case. For instance, I expect the site front page, where it mentions python, to be clicky and take me to a page that tells me about python support in Qpid, or lets me download the python client. Currently it is not obvious what and this is a big fail.

3) How easy is it for people to run the examples and get it going?

Again, if we can get the above going, then it makes it very easy for folks
to run the examples, preferably against both brokers.

See above, +1.

4) Have we organized our documentation properly?

I think we are on the right direction here. The new website and the svn
based documentation is a big improvement.
We just need to ensure we continue to do so.

The idea has been floated of making a direct link from SVN to the website. basically, we need to ensure there is a *stable* set of pages that can be linked to and *added* to, as new features and components are developed, and FAQs are answered or bugs fixed. This used to be the wiki, and I have no problem with this for ad-hoc documentation. However, I am happy for it to be a directory in subversion that is synchronised to the web server with some SSIs for template purposes, if that is more acceptable to everyone. We just need to ensure that:

1. It *must* be easily and *instantly* editable. This is so that there is a low barrier to developers documenting things and answering questions in an archived publicly accessible place, otherwise *nobody* will create any (useful) documentation.

2. Additionally the pages must present as a stable set of URLs that do *not* vary with versions. This allows content to be indexed by google and linked to from external sites - remember that people ask google first, and we to be able to have answers to questions on forums or stackoverflow and so on point to the Qpid site permanantly.

3. Finally, the Docbook files should be made available as XML with a style-sheet or template that converts them to HTML + CSS for easy browsing, again from a subversion directory, for easy and instant editing again. This should be non-versioned, i.e. always pointing at the trunk files, with a constant URL. The generated PDF files can be archived after each release, but the current books will always be in the same place.

5) Have we got enough documentation to cover atleast the basic aspects?

I think we do this to a reasonable extent with the new "programming with
apache qpid" document.
However there are some gaps that exist and we need to ensure we fill them.

No, but see 3. above.

6) Have we got enough documentation to cover the topics that people are
interested once they get the basics going?

I think the new documentation structure lacks this kinda of documentation.

No, +1. This would be covered by 1. and 2. above.

If developers can make immediate, ad-hoc documentation easily, that is permanent, they are more likely to. There *will* need to be a proof-reading and editorial function that takes place at the same time as building releases, probably, to ensure quality. The important thing, though, is getting the content there in the first place. If it is easy to do, we will document things that are interesting, or that have been confusing us, on the spur of the moment, and that is usually what the end users will want.

Also, there doesn't seem to be any Java API documentation. I know this is mostly just JMS, but AMQConnection, AMQMessage and so on should have generated Javadoc, with links to the 'javax.jms.*' Oracle documentation too.

We also need more 'Integration' style documentation. How to muse Qpid *with* other stuff, be that Spring JmsTemplate, EhCache over JMS, SOAP over JMS and so forth. Possibly also Qpid interop capability, with RabbitMQ and so on? I believe using Qpid with some of the other Apache 'cloud' projects has been mentioned as something useful to document as well? Not sure about the C++ side?

7) Are we releasing frequently enough for users to rely on us to ensure
that critical bugs are fixed ?

No ! - ThankfullyJustin has volunteered some time (as per his email to the
list) to get frequent releases.
At the minimum we need to do two major releases and two minor releases per
year.

No, +1.

If we are doing quarterly releases, we need to define *what* we release - it can't just be "whatever bugs we fixed since the last release, plus some stuff that people were working on and happened to finish in time". This means a well defined roadmap, at the very least for the next release, but possibly out to the next year - why not, since we don't *have* to commit to the later features? There can be a roadmap feature list for the very next version, and also a wish-list or nice-to-have list for the versions after that? This could even be driven by JIRA, similar to the blockers list Robbie put up for this release?

This then needs documented in big letters somewhere. For example, how are people supposed to work out that Qpid is aiming to be AMQP 1.0 compliant? It is alluded to, sort of, but there is nothing about time- scales or feature sets or which broker or client is expected to implement it first, and what that might mean, for interop etc.

8) Do we as a project have a process that defines how we handle a critical
issue after a release ?

I don't believe we have such a process at all. We need to first get into the habit of getting frequent releases and then see how we can do this sort of
emergency fixes.

I think we should be building the 'development' version more regularly, if we are going with the odd/even numbering scheme. This means there should be a 'nightly' of 0.9 being built every day, and available for download, with big warnings about unstable code. This way we exercise the release/build process more frequently, and get to see the state of the code long before release time. And, this way emergency fixes become easily available to users the day after they are checked in, and we can also promote a nightly build to an emergency RC if required...

I am positive that our community (both developers and end users) has a lot
of good ideas.
I am quite keen on hearing suggestions/comments about the above topics. I will start by replying to my email with what I think about the above
questions :)


Cheers,
Andrew.
--
-- andrew d kennedy ? apache qpid project : http://qpid.apache.org/ ;



---------------------------------------------------------------------
Apache Qpid - AMQP Messaging Implementation
Project:      http://qpid.apache.org
Use/Interact: mailto:[email protected]

Reply via email to