Book Review – Learning Alfresco Web Scripts

Learning Alfresco Web Scripts

This is a review of the book – Learning Alfresco Web Scripts, written by Ramesh Chauhan and published by PACKT. I did not receive any compensation for writing this review. I did receive an electronic copy for reviewing.


Alfresco web scripts are used to integrate clients with Alfresco via RESTful web services. They are an alternative to CMIS and SOAP and provide tighter integration and extra features.

I found the book easy to follow and an easy read in general. It is suggested for new alfresco developers and offers depth for experienced developers. Some chapters could be used as a reference as well.

The book is structured as follows. It starts with an overview of Alfresco web scripts. Then it gets hands-on right away with a simple web script. It gradually adds detail to the implementation before diving into the details of the architecture and implementation. Then it moves to more practical concerns such as deployment, troubleshooting, and configuration management using Maven. It ends with guidance on extending the framework.

In technical books, I always look for tips and information that comes from experience. Reference material alone doesn’t cut it as much of it may be available online, and the printed material becomes outdated quickly. This book does have tips on when and where to use specific choices, best practice recommendations for various options, and troubleshooting tips for various errors. It also has provides some general tips such as dealing with client limitations.

The approach to the technical material is in a form somewhat similar to a tutorial. It shows code samples, discusses the related concepts, and provides steps for trying it out.

I did notice some naive statements though the intent of the author is obvious in such situations. I could only smile at the statements to the effect that “every question has an answer” and “production servers cannot be restarted”.

On a more serious note, it would have been nice to use a single scenario throughout the book to tie all the examples together into one solution at the end. This was a feedback that I got on my first book, and it made a huge improvement in its second edition.

Overall, I feel that this book a good resource for anyone integrating systems with Alfresco as a back-end system.

Advertisements

Book Review: Alfresco 3 WCM

Alfresco 3 WCM Book This is a review of the book – Alfresco 3 Web Content Management by Munwar Shariff, et al. Click on the cover image to see the publisher’s page for the book. The book is published by PACKT Publishing – an active supporter of open-source projects.

Disclaimers / Disclosures

  1. This review represents my independent opinion.
  2. I have not been paid for this review.
  3. The publisher has provided me with a free copy of the book for writing this review.

Approach

This review does not attempt to provide information about Alfresco or WCM outside the context of the book. The review focuses on what the book offers, what it does well, and where it could have done better. Content outline and information about the authors is present on the publisher’s page for the book.

Review

When I received my review copy I had the following context about the subject of the book. I had reviewed a few Alfresco books over the last couple of years. I had deployed Alfresco recently on 64-bit Linux. I was familiar with the earlier rudimentary WCM features of Alfresco, but I had also heard about significant recent enhancements in this area. Once I started reading the book, I also put on the general reader hat looking for the desirable features of books in general.

In this review, I first share the things I liked about the book. Later, I will share the things that could have been better; these range from possible inaccuracies to minor annoyances.

Positives

This book is filled with code examples, which will aid anyone trying to implement the corresponding features. The examples are usually accompanied by detailed, step-by-step instructions. Many examples are also accompanied by good illustrations with bubbles/annotations on screenshots. In particular, I liked the nice figures illustrating content delivery and deployment.

The book contains good detail on installation, and the configuration details for various platforms are also likely to be helpful. When I had installed Alfresco on Linux 64-bit/Tomcat 6, I would have really benefited from such information since some details had changed across versions of Alfresco, Fedora, and Tomcat . However, I have some concerns regarding a few discrepancies in this area. For example, page 29 indicates that JDK5 is used for the book, but page 21 indicates that JDK 6 required. Page 29 indicates that the examples were created with Tomcat 6, but page 78 indicates tomcat5w. This mixing of two sets of product versions may lead to some surprises while following the instructions. Though this is not an issue, I was a little surprised to see that the Eclipse release from 2007 was being recommended on page 30 while most other product releases are quite recent.

There is excellent coverage of relevant topics for Alfresco WCM. These topics include Advanced Versioning Manager, sandboxes,  virtual server configuration, defining web forms, customizing the editor, workflows, custom workflows, dynamic customization, multi-tenant environments, multi-site configuration, templates and asset reuse, deployment approaches, Alfresco Surf, in-context editing, web scripts, integration with external systems (Liferay, Drupal, J2EE web applications), Alfresco framework (security, video transcoding, image transformation, advanced search, metadata extraction), and administration (data backup, upgrading, maintenance, authorization, resetting the entire repository, migrating servers).

I like books that provide recommendations based on practical considerations and experience. This book provides such recommendation for workflows among several topics. For example, it discusses performance impact of number of workflow instances.

Areas of Improvement

The book has several minor issues related to typos, grammar, and similar concerns. As these issues may have escaped the review process, I am sharing here what I noticed. I am inserting my suggested corrections in [ ] below.

Page 26 has, “It is designed in [for] non-critical Environments.” Page 127 has, “Rendition templates simplifies [simplify]and accelerates [accelerate]”. Page 230 has, “only [a] few files.” Page 256 has this tautological sentence: “you can create as many web projects as you can [desire/wish/want].”

The text has some instances, which probably make things difficult for readers. The first figure on page 11 introducing the Alfresco WCM model is not explained at all. On page 12, the figure is introduced by “One temporary workflow sandbox per active workflow instance per web project:”  but there is no mention of a workflow in the figure and there is no further explanation regarding this.

The  section Alfresco WCM Model on page 11 is probably foundational for the whole book. It would have been nice to have an illustration of the model with a figure which tied together the concepts described in this section. The delivery models are illustrated, and the individual WCM model concepts are illustrated, but no complete WCM model illustration could be found.

The physical architecture diagram on page 25 is not explained. In this diagram, the meaning of arrow direction doesn’t seem obvious. The authoring environment is pointing to receivers and the portal cluster is also pointing to the receivers. Should one interpret it to mean that they are both pushing data to the receivers? It seems that similar looking arrows mean different things in this diagram.

The book lists some situations where WCM could be recommended. It isn’t clear though if it is not recommended when one of these considerations is contradicted. For example, it sounds like WCM is not suitable if anything more than “Submit for Approval” is needed by way of workflow.

On page 222, the zero workflow is discussed but not defined. One can start guessing based on the material what the zero workflow is, but it is not defined. The closest it gets to a definition is in the summary of the chapter, “Implementing ZERO workflow gives the flexibility to submit content using workflows without selecting any user/group.” The reader is left guessing whether that is one feature of the zero workflow or its defining characteristic.

The book has some assertions, which appear simplistic or biased. Page 10 compares Wiki-style and Publishing-style CMSs and some statements appear not to be well informed. I don’t know about all the products listed but here are some thoughts about Drupal. It uses themes and CSS, separating presentation from content. It can allow content revisions and approval workflow on a particular version while another version is live. Whitehouse.gov runs on Drupal and that should refute the “small site” argument. While I get what the authors are trying to say, I wish their arguments were a bit more nuanced. SharePoint doesn’t even get a mention in this mix.

Some assertions in the book appear to be misleading. Page 122 discusses how to dynamically populate drop-down lists, but the example shows how to statically specify the drop-down values in the schema. If this could somehow be dynamic, the text doesn’t explain it. Page 231 asserts, “This feature is very powerful even from a legal audit point of view, wherein you have an ability to reproduce the website as of a specific date.” This statement needs to be qualified by a statement that for a data-driven web-site it may be insufficient without also taking snapshots of the database.

In my experience, WCM systems require two kinds of quality assurance (QA). One kind is the QA of content production, which is accounted for by sandboxes and the approval process. However, this QA happens within one environment. The other kind of QA is needed for the customization of the WCM system. Such changes would include defining new content types, XML changes, web script changes, etc. In most organizations, such changes cannot be made directly in the production environment. There are typically development and/or QA environments for the QA of the development efforts. The book does not address this aspect of WCM.

Conclusion

This review has given more space to the things that could have been better, but most of these things are minor annoyances. However, my take on the book is that it is a handy reference for the exact steps and examples when you are implementing Alfresco WCM. In order to make the best use of this book you may need the knowledge of Alfresco fundamentals and a general understanding of WCM concepts from other resources.

Book Review: Alfresco 3 Web Services

Alfresco 3 Web Services book This is a review of the book – Alfresco 3 Web Services by Ugo Cei and Piergiorgio Lucidi. Click on the cover image to see the publisher’s page for the book. The book is published by PACKT Publishing – an active supporter of open-source projects.

Disclaimers / Disclosures

  1. This review represents my independent opinion.
  2. I have not been paid for this review.
  3. The publisher has provided me with a free copy of the book for writing this review.

Approach

This review does not attempt to provide information about Alfresco or web services outside the context of the book. The review focuses on what the book offers, what it does well, and where it could have done better. Content outline and information about the authors is present on the publisher’s page for the book.

Review

I browsed through the book as soon as I received my review copy to get a feel for its contents. It appeared to a be a handy reference for building applications or integrations with Alfresco using its web service interfaces. While this impression held well as I went through the text, I made some additional observations.

At a high level, this book is organized into three parts – SOAP-based access to Alfresco, REST-based access to Alfresco, and CMIS. I would have loved to see this organization made explicit as Parts 1, 2, and 3. Currently, the description of this organization is hidden in a small paragraph in the preface, which many readers may miss. An introductory chapter relating the high-level concepts and introducing Alfresco would have made the book significantly more reader-friendly. I felt that the book assumes certain knowledge of content management concepts and of Alfresco, but this assumption is not made explicit in “Who this book is for”.

The book does well when it comes to getting into the details of features and capabilities. These details are made accessible to the reader using examples and real products as diverse as Alfresco SDK, FreeMarker, Apache Chemistry, Google Web Toolkit, and MyLyn WikiText parser. The book uses a Book Shop model for a large number of examples, but it also refers to other smaller examples depending on the context.

It also does a good job of introducing the concepts and standards related to SOAP, REST, web scripts, FreeMarker templating, Atom, AtomPub, and CMIS. CMIS deservedly gets a lion’s share in the text as it is a standard means of interaction with any content repository implementing this interface. As many of the content management heavyweights have backed CMIS, it is likely to be supported widely. The discussion on CMIS includes AtomPub and Web Services bindings, CMIS query language, and an example of building a complete CMIS  client application.

The bookshop example is used as a key example in the book. The details of the example appear somewhat contrived to enable explanation of the relevant concepts. There is nothing wrong with an example being contrived in this manner; actually, it serves well to illustrate how to accomplish the desired effects. I just expect the text to make it clear that the example is a contrived one. The book, however, refers to it as a “real case”. I am wondering why I would implement a bookshop web site on Alfresco in real life. There could be a plausible reason but it was not explained. In my mind, I would need some content management requirements to use Alfresco, and I would probably limit the role of Alfresco to that extent in the commercial web site. Further, the example was mostly focused on metadata, and I kept wondering why I wouldn’t just use a database rather than a content repository.

I am not belaboring the bookshop example for its own sake as I admitted that it does well to illustrate the interface details. In my mind, it represents a missed opportunity for the book. In general, the book could have provided more advice on when to do something in addition to how to do it.

Conclusion

Overall, I found the book to be a handy resource for anyone working with Alfresco or content management web services. If you know the specific things that you need to do it can be an excellent resource showing you how to do it. If you need to make choices before implementation, you may need to utilize additional resources. If you are new to Alfresco and content management, you may want to look at additional resources first.

Documentum 6.5 Content Management Foundations

Documentum 6.5 Book

The new book – Documentum 6.5 Content Management Foundations is now available. The Table of Contents and a sample chapter – “Objects and Types”, are also available on the publisher page for the book. The sample chapter should give you a good feel for the writing style and contents of the book.

For more details and for a chance to win a copy of the book during June 2010, see dm_cram.

You can also read a review of the book by Johnny Gee.

Book Review: SugarCRM Developer’s Manual

SugarCRM Developer's Manual

This is a review of the book – SuagrCRM Developer’s Manual by Dr. Mark Alexander Bain. Click on the cover image to see the publisher’s page for the book. The book is published by PACKT Publishing – an active supporter of open-source projects.

Disclaimers / Disclosures

  1. This review represents my independent opinion.
  2. I have not been paid for this review.
  3. The publisher has provided me with a free copy of the book for writing this review.

Approach

This review does not attempt to provide information about SugarCRM outside the context of the book. The review focuses on what the book offers, what it does well, and where it could have done better. Content outline and information about the author is present on the publisher’s page for the book.

Review

Before I start the review, I must admit that I have not worked much with SugarCRM but I do have significant development experience. As such, I might call myself a “beginner-level developer” as far as SugarCRM customization is concerned. Therefore, my review should probably be qualified for beginner-level SugarCRM developer rather than an experienced one. I make this qualification because I have seen some other reviews which are harsh on this book with regard to certain development aspects that seem to be inadequately covered.

As a first-time SugarCRM developer, my feeling after reading the book was that customizing SugarCRM is easy. It is in large part due to the excellent work by the author . The author’s style and the organization of content made it a breeze to go through most of the book. Before I could put the book away thinking that the book addressed only simple scenarios I ran into the last four chapters of the book. These chapters alone could make the book a worthy buy.

This book is a blend of gentle introduction, reference material, and real-world advice. I am always looking for real-world experience and recommendations in a book since the introduction and reference material are often available from other sources. Some of the advice in the book goes beyond SugarCRM and applies to PHP-mySQL applications in general.

Good introductions can also be valuable and this book is certainly a good choice if you are looking for one. The book also devotes 60 pages to database dictionary, which I mostly skipped. For such information, I like to directly query a database instance but I can see how these pages can provide a useful reference while reading the book.

The book has plenty of code samples and screenshots, which make it easy to follow. It is also helpful that the book uses a single business scenario and builds upon it throughout the book. It helps to see natural progression from simple to complex in some cases and interrelationships in others.

The book uses version 4.5 and the latest one is 5.2. The next version after 4.5.1 was 5.0, which became available in early 2008. A quick look at the release notes for 5.0 did not seem to indicate huge differences between 4.5 and 5.0. However, another reviewer has indicated that there are several important differences between 4.5 and 5.x. So you may need to do your homework to figure out whether this book can serve your needs.

The book starts with some quick and easy customizations of look and feel as a warm-up. Then it shows how to add custom tabs, dashlets, and custom fields. Next it describes the architecture of the application followed by the details of the database structure. I love the material that comes after this point. Some good advice about development, testing, and upgrades. The knowledge shared here is sometimes applicable to other PHP-mySQL applications as well. This is followed by the advanced topics of writing custom modules and workflows. The book concludes with tips on tuning SugarCRM and writing reports. I feel that it is the last 4 chapters that will add the most value in any real-world customization of SugarCRM.

Conclusion

This is an excellent handbook for beginner-level developers customizing SugarCRM version 4.5. For other situations, it may or may not be what you need so you need to do some analysis before selecting this book. Also note that this is not a book about making the best use of SugarCRM. That is not a shortcoming of the book because the book clearly identifies its audience and purpose – customization for developers. If you are looking for a book about using SugarCRM then maybe you should look at Implementing SugarCRM.