Saturday, May 29, 2010

OGSA-DAI - Coding with enthusiasm

As summer of codes officially started, I did my second commit on May 26th midnight (Sri Lankan time). In this commit, I have created the build and properties files of the client and server module. And wow, this commit has become the 1000th commit of OGSA-DAI. As an open source project OGSA-DAI has reached many mile stones and success stories in a relatively short period. Though we, GSoCers develop remotely from the mentors and the other developers, the super-friendly private/developer irc of OGSA-DAI always gives us the feeling of working in the same environment as the other developers  are.

1026 and 1030 became my third and fourth commits respectively, where 1026 was a minor fix on the wsdls, while 1030 fixed the namespace to package mapping based on the cxf -p option in the build.xml, which was handled by NStoPkg.properties in the Axis presentation layer. Currently I am in the process of developing the client and the server, which will either be committed to the trunk as a huge commit or a huge list of tiny commits, in the upcoming week.

To get the patches of my progress so far, use the below command from ogsadai_home/presentation;
svn diff -r 994:${current} cxf > gsoc2010.diff
svn diff -r 1274:${current} rest > gsoc2010Rest.diff
svn diff -r 1261:${current} ../release-scripts/ogsa-dai/cxf > gsoc2010Release.diff
svn diff -r 1406:${current} ../release-scripts/ogsa-dai/rest > gsoc2010ReSTRelease.diff

or for Release Script, from ogsa-dai/trunk/release-scripts/ogsa-dai/
svn diff -r 1261:${current} cxf > gsoc2010Release.diff

gsoc2010.diff refers to the cxf/soap based layer patch, while gsoc2010Rest.diff refers to the ReSTful layer, where gsoc2010Release.diff refers to the release script.

Monday, May 24, 2010

GSoC with OMII-UK

Google Summer of Codes officially begins today with so much of excitement, and the students have already started their development. One more energetic summer with OMII-UK has begun with 4 students, this time. As with 2008 and 2009, this summer too projects have been chosen from the set of projects under OMII-UK. Apart from Michal and Pradeeban from the OGSA-DAI team, two more students each from Rapid and SAGA teams, make the list of participants mentored by projects under OMII-UK this time.

Thursday, May 20, 2010

Link them not~!

I was on the Scientific Linux FAQ, where a strange Q/A hit my eyes.

Q. Why won't you say the name of the commercial enterprise distribution S.L. is built from?

A. That name is trademarked. The easiest way to keep away from all trademark problems, is to completely avoid the name. We believe that most readers are able to figure out which commercial enterprise linux distribution we are talking about.
I found that Scientific Linux was derived from Red Hat Enterprise Linux. I also found the reason for hiding the fact is, to avoid the copyrights issues by violating the Red Hat license, from wikipedia. I later found that once CentOS, another Red Hat derivative had to face some license issues as they have used Red Hat logos in their site. Red Hat had warned CentOS for 'misleading' the users by providing links to Red Hat site in the home page of CentOS. The letter from Red Hat's outside counsel to CentOS can be found here. So think twice before linking some one.

Designing an alternative presentation layer!

My first post on the OGSA-DAI blog, on my GSoC 2010 project, with an introduction to the project, initial design decisions, as well as the Google Summer of Codes updates upto the moment, can be found here.

Commit 994 has become my first commit. Apache CXF 2.2.6 has to be downloaded from here and extracted to "ogsa-dai/third-party/packages/cxf/2.2.6" *** (as the case with the Axis presentation layer). After that, "ant all" from"trunk/presentation/cxf/stubs" will produce ogsadai-4.1-cxf-stubs-1.0.jar. This commit is just for the creation of the stubs jar using CXF, and further commits will follow. After the commit, I have included the module info the  repository structure trac page. The OGSA-DAI nightly tests check the modules by running each night on the server [1].

***
cxf.lib.dir=${packages.dir}/cxf/2.2.6/apache-cxf-2.2.6/lib
cxf.version=2.2.6

Axis specific wsdl (data_request_execution_service_service.wsdl)
<soap:address location="http://localhost:8080/axis/services/DataRequestExecutionService"/>

CXF specific wsdl
<soap:address location="http://localhost:8080/services/DataRequestExecutionService"/>


  <wsdl:import namespace="http://ogsadai.org.uk/namespaces/2007/04/service/execution/bindings" location="data_request_execution_service_bindings.wsdl"/>
  <wsdl:service name="DataRequestExecutionService">
    <wsdl:port name="WSDataRequestExecutionServicePortTypePort" binding="binding:WSDataRequestExecutionServicePortTypeSOAPBinding">
      <soap:address location="http://localhost:8080/services/DataRequestExecutionService"/>
    </wsdl:port>
  </wsdl:service>

Apache CXF seems to be releasing the builds once in a two months. Currently they have released 2.2.8, though I have started with 2.2.6. I have seen many articles on migrating from Apache Axis 1.x to Axis 2. But articles on migrating to CXF from Axis is rare. Though this makes the task more challenging, it has also given me a chance for a research which of course is really cool.

Java WS Core/Final WSRF Migration Guide  describes the code changes of the Java WS Core Framework of Globus Alliance, including WS-Addressing and Faults.

Building the modules using ANT instead of plain java or CXF WSDLToJava alone is interesting and make the task easier, given the fact that we have many wsdls. The below code segments** are for the existing presentation layers, which are removed for cxf at the moment, as CXF comes with support for WS-Addressing 1.0.  (yet to discuss whether to use the CXF libs or the customized ones from globus/ws-addressing as it is for the existing layers). More to analyze the wsdd for the Axis based layer, and I may need to customize the JAXB bindings, as well. 

**
# WS-Addressing
addressing.lib.dir=${dependencies.dir}/globus/ws-addressing/addressing/1.0

[1]  Test Reports 20/05/2010 22:05:50 : daitest
[2] Coding Guidelines

In this post, WSDL code was written using the HTML encoder/decoder provided here.

gsoc-srilanka

The beauty of the Google Summer of Codes is, it never comes on a summer of Sri Lanka. Especially this time, it has come in a heavy rainy days. And parallel to the final semester of our undergraduate studies. It should be noted that Sri Lankan students still enjoy the 'Summer' with Google, and again we reached the list of top 10 as the country.

We recently had the first summer of codes 2010 meetup of Sri Lanka, at the Conference room of the Computer Science & Engineering Department, University of Moratuwa. Head of the department Mrs.Vishaka Nanayakkara, representatives from FOSS.lk, and past and present GSoCers from the university as well as the other universities participated in the meetup, which went fine as an ice breaking session among the GSoCers. We discussed about increasing the participants from the country in the upcoming years. As a coincidence we had also created a google group gsoc-srilanka to promote GSoC in Sri Lanka. Feel free to join, if you are a Sri Lankan GSoCer (Student or mentor) or a FOSS enthusiast.

Friday, May 14, 2010

Mooshabaya 1.0 - RC2

RC2 of Mooshabaya 1.0 with all the primary features implemented is
available now: https://mooshabaya.svn.sourceforge.net/svnroot/mooshabaya/tags/1.0-RC2/

A screencast of Mooshabaya 1.0 - RC2:


Coloring of the nodes hasn't been captured in this screen cast, though Mooshabaya can depict the running workflow dynamically by the colour change as the workflow is run. Similarly the security scenario which has also been  implemented, hasn't been captured in this small screencast. This is a raw screen  capture using XVidCap, which will be mixed with voice and further editing. Avidemux 2.5.2 Multi-platform Video Editor will be used in further editing these raw screen captures. A list of open source video software can be found here.

Sunday, May 9, 2010

Commits and Tickets - OGSA-DAI

The tickets assigned to me and my commits to the trunk will be listed here for the documentation purpose.

The tickets for the project.
240, 241, 242,

The important commits.
[This post will be updated as I progress further in my project]

Image: ogsa-dai Axis http://localhost:8080/dai/servlet/AxisServlet

Friday, May 7, 2010

Ubuntu Lucid Lynx and the fixes

So here comes Lucid Lynx, an LTS (Long Time Support) version of Ubuntu after two years, giving so much of expectations. I can see many whistles such as the new theme which tries to wrap Ubuntu in a non-geeky cover, specially the shift from brown to purple. Twitter integration, UbuntuOne, Mac like theme, which still seem whistles to a user, unless he is literally a kid which can rarely be the case for a Linux user. Ubuntu 10.04 was released on 30th of April, with the code name Lucid Lynx. This has become the long time support version of Ubuntu after Ubuntu 8.04, known as Hardy Heron, making a huge expectation from the user base.

I did upgrade my operating system from Ubuntu 9.10. The upgrade had introduced me few bugs, which I have fixed without much difficulty. As there are many users out there facing similar issues, work arounds for many of the bugs can be found online, and that's the biggest supportive force behind Ubuntu, as well as the other FOSS projects, I would say.

Let me share few of the issues I had to fix after the upgrade.

After the upload, when each time the computer started, this annoying error was thrown. "An error occurred while mounting /proc/bus/usb. Press S to skip mounting or M for manual recovery." I realized this was due to a usb fix I did for Virtualbox for Ubunut Karmic Koala which is no more required after the upgrade to Lucid. To fix this, in terminal,
sudo vim /etc/fstab
Removing the line we had added from the file, "none /proc/bus/usb usbfs devig=123,devmod=664 0 0" from the fstab fixed this issue, according to the Ubuntu Community's help page for Virtualbox/USB.

"The panel encountered a problem while loading "OAFIID:Deskbar_Applet". Do you want to delete the applet from your configuration?", an error message was thrown immediately after the upgrade. I deleted it, and it seems I didn't lose any deskbar applets at all.

An annoying bug that I had to fix was, "Desktop effects could not be enabled.", where I was unable to go for the 'Normal' and 'Extra' visual effects from the 'None'. That obviously was due to an error in the graphics card driver, I felt. Command lspci shows the PCI buses and the devices, where we can get the details of the graphics controller installed, where mine was
00:02.0 VGA compatible controller: Intel Corporation Mobile 4 Series Chipset Integrated Graphics Controller (rev 07).
This had many workarounds on the web. Anyway I found the reason for the issue as well as a nice fix here, which finally made my Lucid free from the annoying bugs introduced during the upgrade.
sudo apt-get purge nvidia*
sudo apt-get install --reinstall xserver-xorg-video-intel libgl1-mesa-glx libgl1-mesa-dri xserver-xorg-core
sudo dpkg-reconfigure xserver-xorg
sudo update-alternatives --remove gl_conf /usr/lib/nvidia-current/ld.so.conf


Though the new purplish Mac-like theme got a huge attention, as I was already using Mac4Lin theme, this new enhancements to the look n feel failed to impress me, as I felt Mac4Lin still leads!

The first software that I tried after the upgrade was, Zekr - A Qur'an Study Tool, which obviously is a cool tool for the Muslim brethren, as I see. As the final note, I really feel that I shouldn't go for 'Ubuntu Maverick Meerkat', which will be released this October. The reason simply is, I am not ready to spend days for downloading the upgrade files of 4 GB and fixing bugs to move from an LTS version to just a normal version.

Wednesday, May 5, 2010

Strangers are not so strange!

A security hole in Facebook made everyone consider much about their privacy once more. It was said [1] that yesterday during a certain period, Facebook users could see others private information like others' inbox and chat, which ultimately forced facebook to disable their chat functionality for the whole day, till the issue was fixed.

There is a possibility of attack/phishing sites storing the passwords once  we logged in  to them using our facebook account. Better avoid using facebook log in information (username and password) as the open id to log into other sites. It should be noted that Facebook is designed basically to connect friends and not for connecting with strangers.

On the contrary there are services that pairs two random strangers into a chat. Omegle provides both a webcam and text chat, while Chatroulette [2] providing a webcam chat. While these services allow chats between complete random strangers, AOT provides an option to sign up before start chatting, hence making it more personal or complete random based on personal preference. With 6000 users on average, Omegle text chat provides a safe environment for you to chat with strangers, though it is not advisable to expose your identity to strangers and click the links shared by them, which mostly contain viruses, advertisement to their sites, or harassing materials.

Usually Omegle like sites can be quite frustrating. First, many are not comfortable in English. Their sms-like language will be annoying. For example, the phrases such as "wassup?" and "wbu?". Then, some are not good at keeping a conversation alive. They start responding such as "then?" and "next?". Am I supposed to narrate them a story? Some are plain not interesting, with their own very focussed interest. Many of them just looking for a specific gender. Some of them disconnecting in the middle of the chat that apparently was going pretty fine.
But the possibility of getting some friends from the sites too can not be ignored. I was lucky enough to find some nice friends in my one and only visit to Omegle, though I came across some who seeks *some kinda random fun*, and thus disconnected once knowing I am going to blog this. I met Maher, a Telecommunication Engineering undergraduate from Lebanon over there, where we found that we share similar interests and later became good online pals. We were discussing the possibility of a service that can be used to verify someone's identity over the anonymous environments like Omegle.

Stranger: "it is obvious that there is no way of permanent deletion of facebook accounts. Aren't these a violation of user-rights?"
Stranger: hahaha told u :D
You: hehe
You: I agree
You: this service gave me a good idea of a software, on user identity
You: The general use case wud be
You: I will have a userid and it can create many keys.
You: by providing the {id, key} pair, u can log into a third party identity provider.
You: id is unique
You: key is one time use
You: i can generate infinite number of keys :)
Stranger: isn't that like loging into facebook via ur hotmail email and creating session id ?
You: no
Stranger: hotmail email could be the unique key...
You: I mean, I will create the key from my id using the service provider
You: then I will share you the {id,key} pair here, so that you can verify me as Pradeeban from the service
You: once u verified, the key will be invalid
Stranger: ohh i see...
Stranger: yeah that seems practical...
Stranger: kinda like ssl encryption keys...
You: yes,
You: and towards identity.. may be like a blogger url (id) along with a randomly generated one time pass (key) to enter it.
Stranger: good idea for a sort of internet passport...
You: yes.. exactly
You: may be I should blog abt this.. :)
Stranger: cool

I expected a lengthy post on this, which I couldn't afford at the moment, due to  the time constraints I am having at the moment. Special thanks goes to my pal Maher, who made me feel that strangers are not so strange, literally giving me the hint of choosing this topic. Omegle is worth a try once, and only once. Don't forget the  'Disconnect' button -- it's your friend.

I later heard about a similar site called AnybodyOutThere (AOT), which allows the users to register and interact with strangers. However, that was a complaint regarding the service outages of AOT, with strange messages.

(Later Update: AOT does not exist anymore).

    * SQL Error: Too many connections.
Click here to return to the previous page, and fix the errors

Fatal error: Call to a member function setPresence() on a non-object in /www/docs/aot_www_v2.3.0/inc/sessionFuncs.php on line 148

We're currently having an unexpected outage because Amazon Web Services are 
experiencing a degradation. They are working on it. Thank you for your patience.
So obviously AOT must be going through some scheduled maintenance or some unexpected downtime for a short period of time. However the strange technical error messages must have scared the not-so-technical audience of AOT! I just found yet another user of AWS, and seems they are having trouble using that, with multiple down times.

[1] TechCrunch : Major Facebook security hole lets you view your friends’ live chats
[2]  5 Reasons Why Chatroulette Is Addictive, and Worth a Try