Recent Bloggers
Bryan Cheung Posts: 9
Stars: 41
Date: 1/5/09
Minhchau Dang Posts: 6
Stars: 5
Date: 12/30/08
Nate Cavanaugh Posts: 23
Stars: 60
Date: 12/28/08
Eduardo Lundgren Posts: 1
Stars: 5
Date: 12/20/08
Brian Chan Posts: 20
Stars: 125
Date: 12/18/08
Steven Cao Posts: 4
Stars: 11
Date: 12/17/08
Jorge Ferrer Posts: 23
Stars: 102
Date: 12/16/08
Alice Cheng Posts: 116
Stars: 0
Date: 12/10/08
Michelle Kawaye Posts: 2
Stars: 8
Date: 12/10/08
Michael Young Posts: 9
Stars: 48
Date: 11/21/08
Blogs
Liferay Retreat 2008

Here are some pictures from our third annual company retreat in Los Angeles.

It was really fun hanging out with everyone.

And what do we do when we get together? Play an international sport everyone loves. Soccer! That's Ed, our head of sales, chasing Sang, our general manager in South East Asia. Glad no one got hurt.

Look at Dave chase that soccer ball. If you think he looks intense there, wait til you see him solving complex problems at a client site.

Our German and Spanish offices duked it out in the finals of the soccer tournament. Our US, China, and Brazil offices just didn't stand a chance against the eventual winner, the Spanish office. That's cause they had Jorge, and he really, really wanted to win.

But it wasn't all fun and games. We talked for hours about our business and technology in ways that can't be done except in a face to face meeting.

And then we got back to playing more games. This game involved building a structure out of marshmallows and toothpicks. The first person would get to the see the structure. He would then have to communicate what he saw to another person who would then have to tell another group of people how to rebuild the original structure.

We split up everyone into 10 teams and then competed for gift cards. Here's Scott's team intensely building the structure. They worked hard but didn't win.

Bryan may look confused... but his team won. They came up with a very good system of communication and nailed every detail.

We're always looking out for ways to save money. And the best way to save money is to house as many core developers at my house instead of at a hotel. This year, we had 9 people staying at my tiny 1000 square foot, 3 bedroom, and 2 bath house. That's actually not the record. Two years ago, we had 11 people staying in a 1 bedroom apartment with 1 bathroom. But at least we had a fast connection and were quite productive. :)

 

Average (4 Votes)
483 Views, 3 Comments
Migrating SVN servers for committers

The number of committers to our SVN repository and the sheer amount of activity have both skyrocketed this past year. Sun now has over 25 active contributors and Liferay, Inc. has been hiring key developers from all over the world as well. While that means increased productivity overall, it also means that SVN responsiveness is now much more important than it used to be.

SourceForge's SVN services served us well for many years, but now it's time we had our own SVN hardware.

As of yesterday, all SVN write access to SourceForge has been turned off. Committers must now commit to a new SVN repository which will have its changes pushed to SourceForge. That means SourceForge will continue to serve as our public mirror, but committers will have to use another URL.

So if you're a committer and wondered why your commit access stopped working, do this:

svn switch --relocate https://lportal.svn.sourceforge.net/svnroot/lportal svn://svn.liferay.com/repos/public

Your login will no longer by your SourceForge account, but will now be your www.liferay.com screen name and password. Just log into www.liferay.com and on log in, your credentials will automatically be propagated to our SVN server.

And don't worry about your WOL or Ohloh stats. We'll be syncing the SVN author names for everyone.

For those who just want read access to our code, please continue to check it out on SF.net. It'll usually be 10-20 minutes delayed since we use another application called SVK to sync our SVN repositories.

Average (3 Votes)
935 Views, 3 Comments
Liferay European Symposium 2008 Summary

Thanks to everyone who came to the European symposium. It was extremely fun and enjoyable! Here are some pictures and a summary of what happened.

 Here's Bryan Cheung giving his talk about how the UN uses Liferay. Just trying to do our part.

Here's Jorge giving his session on leveraging the new portlet specification.

Here's HanseMerkur giving a session on how they've used Liferay the last few years. BMW and Kempinski also gave sessions as well on their usage of Liferay.

But what's a point of gathering in Germany without some good sausages?

And music...

And beer...

And games...

And as always, we make some new friends. Here's Nicola from Thessalonica. That's right. Good old Thessalonica. I've been reading a lot about that city lately.

The hotel put up a flag. It was big.

And at the end of the second day, the Liferay staff all went out for some nice food.

We did do other things, like, announce a new product, our enterprise edition, etc. Details were discussed with the crowd so we could gather feedback before announcing it publicly. Look forward to our announcement in the coming days...

Thanks again to everyone who came!

Average (7 Votes)
1598 Views, 12 Comments
Customizing portal JSPs from a portlet

Previously, to customize a core portal JSP, you would have to use the ext environment.

You can do it now in a plugin via our liferay-hook.xml file. Just specify a directory of where your custom JSPs are, and on deploy of that plugin (portlet, theme, hook, etc.), the core portal JSPs will be overwritten with what's in your plugin, and on undeploy, it'll be reverted back.

When writing these custom JSPs, you cannot assume that you will be the only plugin to do this. So this feature is really geared more for SI's that are customing Liferay for a client and don't want to go through the trouble of an ext environment.

This makes sense because you can already override the implementation of beans (via Spring by just setting another implementation) and you an already set events and override portal.properties, so why not JSPs.

Here's a sample liferay-hook.xml.

<hook>
	<event>
		<event-class>com.liferay.wol.hook.events.StartupAction</event-class>
		<event-type>application.startup.events</event-type>
	</event>
	<event>
		<event-class>com.liferay.wol.hook.events.LoginPostAction</event-class>
		<event-type>login.events.post</event-type>
	</event>
	<model-listener>
		<model-listener-class>com.liferay.wol.hook.listeners.GroupListener</model-listener-class>
		<model-name>com.liferay.portal.model.Group</model-name>
	</model-listener>
	<model-listener>
		<model-listener-class>com.liferay.wol.hook.listeners.UserListener</model-listener-class>
		<model-name>com.liferay.portal.model.User</model-name>
	</model-listener>
	<portal-properties>portal.properties</portal-properties>
	<custom-jsp-dir>/META-INF/custom_jsps</custom-jsp-dir>
</hook>

Average (8 Votes)
1627 Views, 4 Comments
Liferay Meetup 2008

Thanks to everyone who came to participate in last Friday's meetup in sunny Los Angeles! It was loads of fun. Check out www.flickr.com/photos/tags/liferaymeetup2008 for more pics.

Here are the guys from Italy who built pjoon, a popular Italian social network based on Liferay.

Bryan and I giving our talk.

Paul Bakaus giving a talk. He's the jQuery UI lead who is responsible for all the jQuery UI components now used in Liferay 5.1.

Ray Auge giving a demo of our improved CMS features. He's showing how you can stage the entire portal with workflow across remote clusters. Neat stuff.

But you know we didn't come for the talks.. it's for hanging out and eating together!

There's Rich, Manish, Raju, and Ray... oh, and Raju's head is hiding Wesley.

There's Michelle intensely looking at a brainstorming about new ways of leveraging Liferay.

Nate giving his talk on UI patterns used in Liferay. Crazy stuff.

That's me and my wife Caris hanging out at the happy hour after the meetup. Gotta keep her happy or I won't get to do any of this.

Just some guys who decided to show up. :)

Did I mention California has awesome Mexican food?

Brian Kim doing some brainstorming with Wesley on his iPhone.

Ready... set...

Jump!

It was fun. See guys in Los Angeles next year. Oh, and whoever is showing up at the European Meetup, see you in a few weeks.

Average (6 Votes)
1321 Views, 4 Comments
New continuous integration server

We're finally making our continuous integration server public. It took several months of fine tuning to get to this point. The main issues were with making sure that CruiseControl, Hudson, Selenium, and FireFox 3 were happy with each other.

http://hudson.liferay.com

On every commit, it’ll compile everything (including JSPs), reload the database, and deploy.

Then it’ll run about 800 backend unit tests and then another 200 Selinium frontend tests.

Total build and test time right now takes about 25 minutes.

Thanks go out to Raju, Shuyang, Mike Han, Mike Saechang and JR.

Average (7 Votes)
1846 Views, 6 Comments
Dinner with the Sun team

Here we are relaxing at Chevy's after a long long day at JavaOne. The guys wearing blue jerseys are from Liferay and the rest are from the Sun team. It was a great time of enjoying good food, brainstorming ideas, and learning from each other.

Average (8 Votes)
2163 Views, 2 Comments
Liferay and Sun

If you've been following what we're been doing here at Liferay, you'll notice a lot of collaboration with Sun this past year. So now it's time that we make this public.

But before I get to that, I want to thank the Liferay community. And if you're reading this, that means you.

What am I thankful for? Well. It's simple. We're not alone.

Even though Liferay, Inc. has grown as an organization with millions of dollars in revenue a year and now employs over 65 people around the world, we're still just a tiny company in the sea of companies out there. And we have very limited resources.

But we're not alone. You guys are here along for the ride.

The truth is, we're not smart enough, we don't have enough man power, and we don't have enough energy to build an innovative product without you guys. So, thank you. Thank you for posting over 50,000 message boards posts. Thank you for giving us over a million downloads. Thank you for participating. Thank you for entrusting us with the stewardship of making a product that can serve others. Thank you.

As Liferay has matured (both the community and the company behind the product), what we've realized is that how we interact with the community has evolved as well. What does that mean? Well, earlier on, when we first started 8 years ago, we dealt with contributors at an individual level. Individuals contributed X, Y, and Z. As we've grown, we found ourselves dealing not just with individuals, but with other open source innovators like Alfresco and Day that help us with our JSR 170 repository, Hibernate with our persistence layer, Intalio and jBPM with our workflow, Spring with our flexible architecture, IceSoft with our Ajax JSF usage, Caucho with our PHP integration, jQuery with our JavaScript framework... and the list goes on.

And as we've evolved, we realize that now we're not just collaborating with individuals or with smaller open source innovators, but with established enterprises who have a much longer track record. That's where Sun comes in.

I first met the Sun guys last year at JavaOne. I showed them the features of Liferay and they showed me the features of SunPortal. There was mutual respect. Sun realized that we were innovators in building a light weight Web 2.0 portal and we realized that Sun knew a lot about implementing standards and containers and making thing scale massively for enterprise customers.

It was easy from the start.

And here's what we did...

Sun: Hey, you guys need better OpenSSO integration.

Liferay: Can you help us?

Sun: Yes. We know OpenSSO really well because we wrote it. Here's how it works. Oh, btw, your Glassfish integration is broken in combinations X, Y, and Z.

Liferay: Really? We didn't know that. How do we fix it?

Sun: Here's the fix.

Liferay: Hey, did you guys implement JSR 286 and WSRP 2 already?

Sun: Yes.

Liferay: Great, we need some help integrating it into Liferay so we can concentrate on implementing a features and not implementing standards.

Sun: Sure. Here are the names of the devleopers to work with.

Liferay: Thanks!

And that was about a year ago and I've just listed a small set of the over all help that is coming from Sun.

One important note. The collaboration is not superficial. It's deep. At Liferay, we believe that fostering the community means trusting the community. And that's why we've always granted committer status to non Liferay employees who've earned it. And Sun has proven to us over the past year that they understand open source, and that's why we've granted Sun developers commit access to Liferay (and them to us). Btw, many open source companies don't allow that.

So what does that mean for the future?

As we open up Liferay and more and more, expect more features and a better product because our community is growing every day.

From a technology perspective, we believe a JEE 286 portal is specifically well positioned to be the focal point of application integration at the UI tier. And we believe portals are a great platform for delivering and consuming applications, especially as the Web evolves beyond SOA toward WOA and as widgets become more and more accepted in enterprises.

At the end of the day, a portal is an application platform. And that means we're going to build lots of applications on Liferay. Document management and web content management applications are there. Blogs, message boards, email, calendar, and wikis are there. And you guessed it, the next set of applications are social services that tie into our other applications and delivered on our portal and consumable from plain old websites.

And, before I forget, thanks for participating.

For more info, check out:

http://www.liferay.com/web/guest/partners/sun
http://www.glassfish.org/portal

Average (10 Votes)
5843 Views, 3 Comments
Expose portlets as Facebook applications

Wouldn't it be nice to deploy a portlet to Liferay and have it work as an application in Facebook?

Check out our message boards at http://www.liferay.com/web/guest/community/forums

Go to the bottom and click "Add to Facebook".

We've configured our public message boards to write its output as FBML when consumed by Facebook. Check it out.

Every portlet in Liferay is automatically exposable to Facebook. Simply go to Configuration -> Facebook, set your Facebook API key and other settings. We provide two implementations, one that uses FBML and one that is a simple IFrame.

Our Message Boards portlet uses FBML because we think that looks nicer and has a better user experience.

Can you see where this is going?

Average (8 Votes)
2091 Views, 6 Comments
Introducing World of Liferay

We recently upgraded our live site to use the latest 5.0.x branch. Besides that, we also introduced our first set of custom social networking portlets for use on www.liferay.com. They're code named "WOL" for World of Liferay. The code is available at http://lportal.svn.sourceforge.net/svnroot/lportal/plugins/trunk under the package wol-portlet.

WOL serves two purposes. First, it serves as a sample social networking site that uses Liferay's Social services. Many of our clients already use them, but we obviously can't just publish their code. So think of WOL as our Java pet store. Just as the pet store illustrates JEE blueprint principles, so WOL illustrates Liferay's Social services. The big difference though is that we're actually using WOL. Liferay's Social services are also exposed via OpenSocial so it's standards compliant and via JSON/SOAP for easy integration.

Second, WOL serves to help foster the Liferay community by tying in message boards, blogs, JIRA, wikis, meet ups, and other community activity under one umbrella. We're big advocates that a portal framework is a solid foundation for building social networks. And what better way to show the world we believe that, than to use our own open source software to help connect our community.

We're also looking for better ways to reward and track contributions to the Liferay community. For example, in World of Warcraft, you kill monsters. And in killing monsters, you gain experience and level up. In the same way, on www.liferay.com, we'll be measuring involvement in the community via killing "bugs", posting message board threads (did you help someone or are you just a spammer?), etc.

There's a lot more details that we'll be fleshing out in the coming months. So feel free to let us know what you think.

Point systems...

Levels...

Guilds...

Quests...

This is going to be fun.

Average (15 Votes)
2870 Views, 14 Comments
My week in Rome with Nero and friends

I just got back from a week in Rome, part work, part vacation.. (like I ever go on vacation). Here are some highlights of the week.

That's me with an original bust of Nero. He was the crazy emperor of Rome who used human beings he didn't like as human torches to light up Rome, hence the modern CD burning software with his name. I originally took this picture with rabbit fingers behind his head, but then I realized, one of the people he killed, whom I highly respect, Paul of Tarsus, would never have disrespected him in that way. So I gave Nero the proper respect for the authority he held even though he probably would have used me as one of his torches.

That's me, Caris (my wife), Bryan Cheung (Liferay's CEO), and a new friend from LA who joined us in Rome. The food was yummy, the wine was great (I didn't have a single glass of bad wine in Rome), but boy was it pricey. We already had to pay the tourist markup, and on top of that, the Euro was another 50% additional markup. A bit too much for my budget.

 That's me hugging one of my favorite monuments in Rome, the Pantheon.

That's another shot but this time with the whole Pantheon in view. This thing is huge and a true testament to the genius of Roman architecture.

Our reason for going to Italy was to participate in the celebration of IFAD's 30th anniversary. IFAD is a UN agency dedicated to helping the rural poor. We're blessed to partner with IFAD to provide the portal technology they use to accomplish their mission. It's awesome to code at night knowing that you're not just working for something that'll fade away like every other high this world provides. The human beings they help matter.

We also visited Pompei. That's my wife standing in the middle of a the street of an ancient Roman city that was instantly buried by volcanic ash 2,000 years ago. As a result, the city was amazingly preserved. After visiting houses that people lived in, I was amazed at just how similar the Pompeians were to modern people like you and me. They had the same emotions, dreams, fears, worries, pleasures, and needs. It's a city worth checking out.

Average (8 Votes)
1756 Views, 2 Comments
Liferay, jQuery, and ICEfaces

Our recent announcement about jQuery caused a lot of confusion among the JSF camp because it seemed to contradict another announcement we made a few months ago concerning ICEfaces. So this blog is meant to clear that up.

ICEfaces serves the need of abstracting Javascript from Java developers. It does that very well. It allows Java developers to develop using JSF to implement portlets with a rich UI. The very benefit of ICEfaces however, is also its drawback. It requires developers to use JSF.

jQuery on the other hand, is a light weight Javascript framework that enables PHP and Javascript developers (and Java developers who don't want to use JSF) to quickly develop without having to learn a heavier Java framework.

At Liferay, we don't care what you write your portlets in. Often, our enterprise clients mix and match technologies to get the job done. That's why we focus on enabling developers to deploy portlets, often deployed in one page, to be written in languages and frameworks like Struts, ICEfaces, PHP, or even Ruby.

ICEfaces' current implementation uses a Javascript library called Prototype which pollutes the DOM and does not coexist well with other Javascript libraries. That means, if we built our internal core portlets using ICEfaces, it could potentially break portlets that other people have written. With that said, we have decided to build all of our internal portlets using jQuery.

In the plugins repository, however, our non core portlets do leverage a variety of JSF technologies, of which our favorite has been ICEfaces because of the push behind both Liferay's community and ICEfaces' community to make sure integration works.

Hope that clears everything up.

Average (4 Votes)
2082 Views, 4 Comments
4.4.0 Improved Glassfish Support

In 4.3.x, our out of the box Glassfish bundle was over 220 megs and only worked on Windows.

In 4.4.x, with the help of Raju from Sun, we were able to create bundles for Glassfish around 135 megs in size. It provides a full JEE stack. I'm actually quite impressed with the speed and the GUI console from Glassfish. All in all, I think it's a pretty good replacement for WebLogic AS because of its enterprise features.

Glassfish itself still has some things to improve on (such as being able to migrate where you installed it to without running another ant task, something you can do easily in Tomcat but not in Glassfish).

On another positive note, while testing Glassfish and Geronimo, we found the performance to be several times faster. For some odd reason, the Geronimo jspc just crawled and would need to be recompiled on every restart.

Average (5 Votes)
1749 Views, 2 Comments
4.4.0 Released!

Enhancements include:

  • An improved User and Organization System

    • Users can now be members of more than one Organization

    • Locations are now an Organization Type

    • Roles can now be scoped by Organization

    • LDAP Integration has been improved

  • Improved Content Management, Staging and Import / Export

    • Automatic document conversion to multiple formats, using OpenOffice

    • Individual pages can now be published from staging to live

    • Portlet content (CMS, message boards, Wiki, etc.) can now be easily exported and then imported to another server

    • The Asset Publisher portlet has been greatly enhanced

    • Journal Content can now be easily paginated

  • Usability Improvements

    • New Actions menu on all the portlets

    • Multiple file uploader in the Image Gallery and Document Library portlets

    • Blogs Aggregator portlet publishes multiple users' blog entries

    • Drag and Drop portlets from the Add Application menu

    • Nested Portlets Layout (portlets within portlets)

  • Developer Improvements

    • Service Builder now uses customizable FreeMarker templates

    • Service Builder can now be used in hot-deployable portlets

    • Service Builder is now integrated with import / export functionality so your portlets can be as easily exported and imported as the built-in ones

Enjoy!

Average (9 Votes)
1788 Views, 2 Comments
4.3.5 Released

4.3.5 is the latest stable and recommended production release from Liferay.

Release Notes: http://support.liferay.com/secure/ReleaseNote.jspa?projectId=10014&styleName=Html&version=10260

SVN Tag:
http://lportal.svn.sourceforge.net/svnroot/lportal/portal/tags/4.3.5/

This release includes more bug fixes. Most notable is that this fixes the problem with compiling large JSP files in WebLogic and some JVMs. This also fixes the plugin installer path issue for some Linux distributions. This is our last maintenance release for 4.3.x. We're now getting ready to branch 4.4.x to get ready for the 4.4.0 release due out in mid December.

The next 4.4.0 release will include many new features including Organization Roles (similar to Community Roles), allow a user to belong to more than one Organization, and many other new features that we'll blog about once its out.

Thanks everyone!

Average (8 Votes)
1707 Views, 0 Comments
This time, I'm waiting for her

Usually, my wife is the one who has to wait for me to get to bed while I work on bug fixes, packaging releases, or coding new features. Not this time though. It's past midnight and she's the one up working. I'm quite amazed. I personally hate filing expense forms or dealing with any form of receipts and paperwork. And now I'm watching her literally crank through piles and piles of expense forms from everyone else at Liferay. It's been hours. On top of that, she has to be at the Dr.'s early tomorrow morning.

I don't deserve a woman like that. Thank you Caris.

You'll probably read this sometime tomorrow (may be). But when you do, do know that I'm thankful and that I love you very much.

"Charm is deceptive, and beauty is fleeting; but a woman who fears the LORD is to be praised." Proverbs 31:30 For context, see the whole chapter.

Good night. Love you babe.

Average (6 Votes)
1747 Views, 0 Comments
4.3.4 Released

4.3.4 is the latest stable and recommended production release from Liferay.

Release Notes: http://support.liferay.com/secure/ReleaseNote.jspa?projectId=10014&styleName=Html&version=10250

SVN Tag:
http://lportal.svn.sourceforge.net/svnroot/lportal/portal/tags/4.3.4/

It includes many numerous performance improvements and bug fixes. The most notable is that our Lucene indexing is about 1000% faster now. Numerous issues with upgrading from 4.2.x to 4.3.x in relation to Jackrabbit and other databases have also been fixed. This release also includes UI improvements that go across the entire portal and specific improvements to our Blogs (as in, we're eating our own dog food now, so expect our Blogs to keep getting better).

Thanks go out to our community, our partners, and our employees for making this release possible.

Average (4 Votes)
1618 Views, 5 Comments
Liferay integration with OpenSSO

I read this blog from Prashant. a few days ago about integration with Liferay and OpenSSO.

http://blogs.sun.com/pdblog/entry/opensso_and_liferay_integration

We just integrated the code snippets into Liferay so users can easily integrate with OpenSSO by just going to the Enterprise Admin portlet and entering the right settings. No more code or properties changes.

Average (2 Votes)