Open WebOS on Fedora 17

The Open WebOS team is hard at work. As soon as I finished my post to build OpenWebOS on Fedora 16, they had already updated the build script to include more items, particularly the web browser. The browser required libraries that were only found in Fedora 17.

I had been looking for an excuse to update to Fedora 17, and now I found one.

Unfortunatly they aren’t prepared for a bleeding edge distribution like Fedora. The library pbnjson that they want to build, doesn’t like the yajl version 2.0.4. Fedora 16, and all of the supported Ubuntu versions, have yajl 1.0.x. And this library builds just fine with all the 1.x version.

So, to make a long story short, I’m working on putting things into rpm’s, so that I can build these packages on my terms. It will take me longer than using their script, but I will have more control, and it will be more reproduceable.

So far, I am using the system cmake, and I have made the cmake-modules-webos rpm.

cmake-modules-webos-0.9-1.fc17.src.rpm
cmake-modules-webos-0.9-1.fc17.noarch.rpm

As I work my way through each module, I’ll see if I can just use the system version instead of the Open WebOS version. Hopefully that will make things more system independant.

Open WebOS on Fedora 16

Relavent Links:
https://github.com/openwebos – Source code for Open WebOS
https://github.com/openwebos/build-desktop – Scripts to get it built and working on your desktop

Notes:

  • Open WebOS instructions and scripts are still in a state of being updated, this is a beta after all. So it’s possible my fixes aren’t needed, or possibly might not work.
  • This is on Fedora 16. Your milage may vary on anything else.

Steps:
We are going to be following the from Open WebOS, but only modifying them to work on Fedora. When in doubt, follow the official instructions.

1 – Install Packages

  • yum -y install git git-core make autoconf libtool tcl unzip curl qt-dev gcc-c++ yajl-devel yajl qt-devel sqlite-devel pkgconfig
  • yum -y install gperf bison flex glib2-devel openssl-devel libXi-devel libXrandr-devel libXfixes-devel libXcursor-devel freetype-devel libXinerama-devel mesa-libGL-devel gstreamer-devel gstreamer-plugins-base-devel libicu-devel
  • yum -y install boost-devel boost-devel uriparser-devel c-ares-devel libsigc++-devel glibmm24-devel db4-devel libcurl-devel

2 – Setup

  • mkdir webos
  • cd webos
  • git clone git://github.com/openwebos/build-desktop.git
  • cd build-desktop
  • *patch build-webos-desktop.sh*
  • *edit install-webos-desktop.sh*

    You need to replace ${HOME} with the full path for your home. The reason for this is because you need to “sudo” this script, and when you do, it replaces ${HOME} with /root/. This is ok if you are doing all these steps as root, but if you are a normal user, you have broken links all over the place.

3 – Build and Install
From this point on, our steps are the same as the official instructions. But I will put them here so you just have one page.

  • ./build-webos-desktop.sh
  • sudo ./install-webos-desktop.sh

    Be sure to replace ${HOME} with the path for your home area.

3 – Start and Run
Again, this part is straight from the official instructions.

  • ./service-bus.sh start
  • ./service-bus.sh services
  • ./service-bus.sh init
  • ./run-luna-sysmgr.sh
  • *When you are done, close things down with*

    ./service-bus.sh stop

Patch:

--- build-webos-desktop.sh.original	2012-09-08 09:08:02.573439051 -0500
+++ build-webos-desktop.sh	2012-09-07 22:49:51.403333099 -0500
@@ -892,8 +892,12 @@
     do_fetch openwebos/db8 $1 db8 submissions/
 
     ##### To build from your local clone of db8, change the following line to "cd" to your clone's location
-    cd $BASE/db8
+    #cd $BASE/db8
+    cd $BASE/db8.local/db8
+    #sed -i 's/TEST_TARGETS := libmojocore libmojodb/TEST_TARGETS := libmojodb/' build/Makefile.inc
+    #sed -i 's|/usr/local/lib|/usr/lib|' build/Makefile.inc
     make $JOBS -e PREFIX=$LUNA_STAGING -f Makefile.Ubuntu install BUILD_TYPE=release
+    #make $JOBS -e PREFIX=$LUNA_STAGING -f Makefile.Ubuntu install BUILD_TYPE=debug
     # NOTE: Make binary findable in /usr/lib/luna so ls2 can match the role file
     cp release-linux-x86/mojodb-luna "${ROOTFS}/usr/lib/luna/"
     # TODO: remove after switching to cmake
@@ -914,6 +918,7 @@
 
     ##### To build from your local clone of configurator, change the following line to "cd" to your clone's location
     cd $BASE/configurator
+    sed -i 's|-llunaservice -lmojo|-llunaservice /lib/libglib-2.0.so.0 -lmojo|' Makefile.inc
     ARCH_LDFLAGS="-Wl,-rpath-link $LUNA_STAGING/lib" make $JOBS -f Makefile.Ubuntu
     # NOTE: Make binary findable in /usr/lib/luna so ls2 can match the role file
     cp debug-linux-x86/configurator "${ROOTFS}/usr/lib/luna/"

Six months at Red Hat

I’ve been working at Red Hat for six months.  I want to answer the two questions I’m asked the most.  Is working for Red Hat what you expected it to be?  Do you regret leaving Fermilab and Scientific Linux to work on OpenShift for Red Hat?

Is working for Red Hat what I expected it to be?

Yes, and more so.

Their dedication to Linux and open source was one of the main reason’s I wanted to work for Red Hat, so I was glad to find out how pervasive it is through the whole company..  They try to have the whole company open to all the employee’s as much as possible.   They try to support not only open source, but openness in all things, such as open hardware and open government.

Do I regret leaving Fermilab and Scientific Linux to work on OpenShift for Red Hat?

Although I loved working at Fermilab, and I loved making and maintaining Scientific Linux, t I also love working on OpenShift.  It is fast paced, great co-workers, I’m learning a lot, and I am working on a project that I think will help alot of people.

One thing I’ve been learning, is how to work with a large team of people.  I’ve had to learn that I don’t have to do everything myself.  It is a little scary letting others do what you could do, but it’s also very refreshing once you get used to it.

What is OpenShift

One of the most common questions that I get asked when I tell people about my new job, is “What is OpenShift?”

OpenShift is a platform that allows people, groups, or companies, to easily create and maintain their own custom website and web applications.  Setup is quite easy, and there is no system administration needed.

What makes OpenShift any different than a normal web hosting service, such as FatCow, where my blog is hosted?

A web hosting service is great for static web pages.  They are also ok, for some sites and applications.  After all, this site is using wordpress, and I could have drupel installed here as well.  But I have to use the version of wordpress or drupel that FatCow provides.

But what if I wanted my own version of drupel, or even better, what if I were creating my own custom site, or my own web application.  That is where OpenShift comes in.

OpenShift is divided into three parts:  Express, Flex and Power.

I would start out in Express.  There I get my own openshift domain, and up to five free apps (or websites).  You can destroy and make new apps,  you just can’t go over five.  When you create an app, OpenShift will create a dns entry for your app, create a git repository for your app, and populate that repository with a default app based on the open source programming language that you chose.  You can choose from php, python, perl, ruby, and java.

As you write your code, and then check it back into the git repository, the code is compiled, any modules that you said you need are added to your app, and everything is pushed up to your website.

So if I want to use an older, or newer version of Drupal, I can.  If I want to have the rdfbean-tapestry java module in my site, I can.  I don’t have to worry about compiling my code beforehand, because the code is compiled as I push it into the repository.

Now, let’s say you are working for a company.  Let’s say you need better response time, need graphs for your manager, or need to scale how many machines your app is running on.  Flex allows you to take your app, and migrate it to a cluster of machines.  A cluster can be a cluster of one if you want.  Flex give you the tools to manage and monitor your app, and the cluster it is on, without having to be a system administrator.

As for Power, I currently don’t know what it does.  It’s still in development, and I am not part of the team that is developing it.

So, that is what OpenShift is.  It is adding features at a very rapid pace.  I think this is a great team to be working for.

My thoughts on leaving Scientific Linux

At the beginning of September I left Fermilab, and Scientific Linux, to work for Red Hat.  Although I knew it would create a bit of a stir, I didn’t expect it to hit the news as big as it did.  As I read through all the comments and articles, there was alot of totally false ideas.  I could either comment on all of them, or comment on none of them.  I chose to comment on none of them.

But there are a few things I just have to comment on.

Did Red Hat recruit me to stop Scientific Linux? No.  I had been feeling restless since the beginning of 2010, and actively looking for a different job for over a year.  I had job applications with Red Hat through most of that.  Through all of my interview, hiring, and orientation meetings, nobody told or asked me I had to leave the Scientific Linux community.  That has been a personal choice.  I needed a clean break.

There is another SL developer that knows everything I know.  True – Connie Sieh.  I was A lead developer of Scientific Linux, I was not THE lead developer of Scientific Linux.  Connie Sieh and I worked on Scientific Linux from the beginning.  Both of us could do any part of Scientific Linux development at any time.  I usually did the much more visible parts, and did alot more of the community relations.  Connie usually did more of the behind the scenes work.  But Connie knew everything I knew.  She could do anything I could do.  People shouldn’t underestimate her.

Troy