The Learning Curve, Chapter 4, Well hidden documentation

Are you new to Liferay? Found Liferay and want to know what it can do for you? Or are you with Liferay and still remember the time when you were new and unexperienced? Where did you come from and what was the biggest problem you faced? Can you ever learn enough? And how do you keep up with the current trends and new features?

A platform as big as Liferay spans several technologies and areas of best practices that are beneficial to know of. Nobody can know everything - there's always a learning curve. At the beginning, it's quite steep. Some argue that it's flattening the more you know. Some argue that it gets steeper: The more you know, the more you know what you don't know.

I'd like to give you pointers to resources that are available to you, in order to learn about Liferay, resources that help you avoid steep detours, when there are flatter direct connections. This is meant to be (eventually) comprehensive but I'm sure that it will never be complete. It's just what I remember while I write this article and the follow ups (yes, there are more, already drafted)

Today's Target Audience: mostly Developers, but some generic pointers for everybody.

After last week's call to read the official documentation, here's the documentation that you may easily miss

Javadoc (sic!)

Javadoc has not been Liferay's strength for a long time. The explanation for this is available in the end of Radio Liferay, Episode 21, but since then, a lot of Javadoc has been added to Liferay. It's available at docs.liferay.com, and growing. If you're wondering why some commonly used class is not documented there, you might also want to follow the master branch on github, as this gets all the latest and greatest javadoc (speaking of well hidden documentation). The API might not be 100% identical (this is the next version, after all) but as we add new features there, you'll find javadoc there first.

portal.properties

Did you ever extract Liferay's original portal.properties file? Or inspected it in the source code? This file has well over 10.000 lines in 6.2, and it's a wealth of information about Liferay. I do wholeheartly recommend to browse through it at least once. I personally have gotten a lot of ideas from this file about Liferay's extension points. There are some extension points that I only learned of because I've read that file. "Properties" you say, "what kind of reading enjoyment will that be?" Well: Look at it. Huge portions of that file are comments, describing the options you find, the preconditions as well as the features that you can configure here. Note: Some features are available only in portal.properties (or your overriding file portal-ext.properties) while others are available on the UI as well.

DTD and XSD

Have you developed plugins for Liferay and wondered about the possible configurations that you can add in the various xml files? Have you ever looked at the headers of those xml files? They do refer to a DTD or XSD file. Hands up if you know the peculiarities of DTD and XSD! ...

(I don't see any hands)

Well, try Liferay's definitions: Similar to portal.properties, you'll find a wealth of documentation right where you need it. I predict that you are able to make reasonable sense of most of Liferay's DTDs and XSDs, if only of the human readable comments. Your xml editor will help you make sense of the machine readable parts.

Care for some examples?

Or even more generic: Try http://docs.liferay.com/portal/6.2/. If you're on older versions, go further to the root directory (It's worth exploring that site)

Presentations

You might know that Liferay hosts quite a lot of events around the world. Even though it's impossible to attend every single event, you should keep an eye on them and on the presentations that are available there. For one, they might spark your ideas, when you just look at the presentations. If you've been there, you might remember everything, when you read the slides again. And for some events there are even recorded presentations. E.g. here is DevCon 2013.

Which brings me to point to a presentation that never aired on Radio Liferay (despite being scheduled as such) because the pure audio recording didn't come out and the video had a bit too much room noise to extract the audio IMHO. I'll refer to it as "the hidden Radio Liferay Episode" from now on, here it is for your viewing pleasure. It's short, less than 18 minutes.

And if you're not yet on Liferay 6.2, you might be interested in the literal "Well Hidden Features" episode

Speaking of which: Devcon 2014 registration just opened, including the Call For Papers. You can be part of this year's event and add to this chapter. Events like this (depending on where you are: North American Symposium and various others around the world - there are rumors for more to come) really give you a lot of insider information and insight.

(more about Devcon in another upcoming blog post)

Even better hidden?

When I woke up this morning, I was thinking of a great resource - but forgot which one it was. Obviously it's quite well hidden. If it comes back, I'll make a note and add it to one of the next posts. Unfortunately, that's the nature of these well hidden items. If you have your own favorite hidden documentation: Please add it in the comments. Oh, and: There's another well hidden place that is so well hidden, that I'll better not yet speak about it. Keep your eyes open and subscribe to the blogs - you'll probably get it here first.

Also, let me sneak something in, which is clearly linked on this site, but not as documentation: If you rather learn hands-on, you might want to consider one of the certified Liferay Trainings - There's a course for almost any role that you can have in Liferay: Content Provider, Developer, System Administrator, Business Owner - you name it, we have it. Not only do you get a lot of structured knowledge, you'll also have the chance to get your questions answered by an experienced Trainer.

While Training is not documentation, it can definitely help to flatten the learning curve.

Next up?

Stay tuned for Chapter 5: Community Resources (please let me know your favorite recommendations)