Sunday, August 30, 2009

Let's do FOSS!

Free and Open Source Software (FOSS) projects are community maintained and most of them depends on the volunteers for their existence. You can help them in many ways regardless of your computer literacy. I have been asked several times, "How can I contribute to a free and open source software project?". So finally I thought of sharing some of my understanding regarding this. This post is just how I see the stuff going there, and not the solution.

1. First make sure that you really have some time, interest on the particular project, willingness, and the basic domain knowledge. Though contributions often come from developers, it doesn't mean that it is the only possibility. Search the web and find an open source community that matches your interest.

2. You should have a basic knowledge of the version control systems [SVN, Git, or CVS], and the project management tools like maven, and be able to use them, as they are common in most of the open source projects.

3. Get some experience in building projects from source and creating and applying simple patches for the projects.

4. Search the web and find an open source community that suits your interest. You can find some interesting FOSS communities from the List of participating organizations in Google Summer of Codes.

5. Communities like Abiword are small, and there are huge communities like Apache as well, which have sub-communities themselves. In small communities, you will be dealing with the entire community, where in case of a large community, you will again have to pick a suitable project which will have a 'sub-community' itself.

6. Read the online references and make sure that new developers are mostly welcomed at the community, at the given time. Almost all the FOSS communities encourage newcomers as there is nothing like 'NO VACANCY' in FOSS communities. You are always more than welcomed, as a developer, technical writer, or a translator.

7. Check the possible areas where you can enter. Join the user and developer mailing lists and hang on the community IRC, listen to the ongoing developer architecture and design level discussions. You can try to break ice with other developers, via IRC.

8. Build the project from the source, check for the possible additions and improvements, check the mail archives and the bugs database for the bugs or the future implementation, to which you can contribute.

9. Now make sure that you have got some idea and understanding about the community, codebase, their practices, and how you are going to contribute.

10. Write a descriptive mail to the developer list clearly explaining your interest in becoming a potential contributor to the community. Don't forget to include the design level details of your suggestions, your time frame, and the amount of contribution you can offer to the community, also give a hint of your strong interest by making the ice break impressive to the community.

11. You can also query about the potential contribution you can give to the community. Mostly you will be replied personally or through the mailing list pointing you the possible areas you can work. Pick a suitable one from the suggested projects and considering your own interests and decisions, and make sure to describe and confirm your involvement in the project to the community.

12. After discussing with such a project community about your interest in contributing, you can start by Localizing the products into your local languages,  polishing the documentation, writing reviews and blog posts, providing ideas, spreading the word, or by the other possible means which are specific to the community, apart from being a developer in the community. Open source projects are for the users. Being a user itself is a great contribution for a project. You can help the community by timely updates on the bugs and request for the feature enhancements that you expect. By being an active contributor you can earn self-satisfaction and recognition.

13. Make sure to be in a close contact with your community, once you start implementing your idea (or contributing to the community in some other way). Feel free to ask questions from the developers via the mailing list or even personal emails.

14. Make sure to be active in your community and very soon once you become a committer/community developer, continue contributing. Always try to welcome and help the freshers and help them becoming active contributors.

Let's do FOSS.

[This post is based on the experience I got from Abiword community as a GSoC Student.]

Saturday, August 29, 2009

Mooshabaya - Diagrams

Mooshabaya code base can be browsed at (, powered by ViewVC.
Source code can be checked out from
for the developers.

Or a particular folder in a particular version:
svn co -r 289

Mooshabaya class diagrams have some similarities with that of XBaya.

Class diagram for Monitoring Component:

Class diagram for Mooshabaya Core:


Diagrams without the operations and attributes

Class diagram for Monitoring Component:

Class diagram for Mooshabaya Core:

WS-Messenger is the messenger used in XBaya as well as Mooshabaya to publish and subscribe to the event notifications.

Y. Huang, A. Slominski, C. Herath, and D. Gannon, " WS-Messenger: A Web Services based Messaging System for Service-Oriented Grid Computing," 6th IEEE International Symposium on Cluster Computing and the Grid (CCGrid06).

P.S: The diagrams of our final year project, including the ones in this blog post, were drawn using dia. Dia for gnome can be installed on Ubuntu using, 
sudo apt-get install dia-gnome
and can be run by executing dia in the terminal.

Friday, August 28, 2009

Introduction - Mooshabaya

Mooshabaya is basically a Mashup generator for XBaya Workflow Composer. The design constraints and the other initial design decisions are emphasized in this document. This document is based on the Project Proposal and the Requirement Specification of Mooshabaya. As the successor of those documents, this document requires those two documents as the prerequisite documents.

Project internal mentor, Project subject coordinator, project's external mentors and the team members are considered to be the direct audience of this document. However being an Open Source project, this document will be made available online for the public, where interested potential users can have a look of our design. 
As in the case of most other Open Source SOA middleware projects, Mooshabaya will be developed through Agile Process. The design and the development will be done via several online and face-to-face meetings with the team members as well as the project mentors. Hence this design document will provide a foundation design, which will be modified later reflecting the decisions taken in the further developer meetings.

Mooshabaya Design Document - 31st of Aug

Mooshabaya Screenshots at the design level, based on XBaya Workflow Composer UI
1. Mooshabaya UI, depicting the workflow monitoring.

2. Adding a Registry to Mooshabaya

3. Loading Security Credential

4. Configuring Workflow Properties

5. Monitoring Configuration

Use Case Diagram

The Design Document can be found here.

Saturday, August 22, 2009

Tavultesoft Keyman

I recently tried Tavultesoft Keyman Desktop 7.01 for testing my Porting Abiword to Unicode project. It is really a cool tool, and I made sure that Unicode text can be entered via keyboard as well as the other input methods like this keyman in my development branch.

Tamil-Unicode-Inscript keyboard layout was tried. [Arial Unicode MS]. BIDI text input is fine, as expected.

Thursday, August 20, 2009

Post-GSoC2009 Era

I was glad to hear that my branch will be merged to the trunk soon, enabling Unicode for Windows. September 15th, Abiword 2.8 will be released. It seems, Abiword 3.x series will come soon, hopefully. I am currently having a handful of patches to commit to my branch, and fine-tuning them before committing.

Arabic testing was really useful to me. English testing was obviously not useful, since I am dealing with Unicode characters. Croatian testing gave me some hints fixing Cyrillic text bugs. Tamil testing was having some issues, as ta-IN localization is still half-completed, and hence producing English dialog boxes. Arabic was amazing with its RTL text. Arabic is 99% localized. So it pointed me all the bugs and omissions in the port.

After committing the fixes to all the known issues, I will stay with my branch awaiting the merge. :)

Monday, August 17, 2009

GSoC - Firm Pencils Down Date

Today is the firm pencils down date, and I just completed the evaluations. Arabic, Tamil, and Croatian were used in testing. Arabic testing was really cool, which pointed me the bugs, being a unicode only - BiDi text (Arabic/English). Of course, we will continue as committors to Abiword, working with our projects.

The student - mentor map for Abiword can be found here.
My SVN branch can be found here.
My important commits are listed here.
My Student Project Page in Google.
Bug 10616, Bug 1625, and some more are fixed now, in my branch.
Most of these bugs will be fixed after the merge of the branch.

Friday, August 14, 2009

VirtualBox OSE and Audio

My Windows XP guest operating system on Ubuntu Jaunty host was not giving any audio output. I checked the Settings of the VirtualBox OSE, and in the Audio Settings, it was set to Host Audio Driver - ALSA Audio Driver and Audio controller - SoundBlaster 16. I changed those parameters to PulseAudio and ICH AC97, and restarted Windows XP host machine. Wow.. all the audio applications on my Windows guest is playing cool now. But I tried to play an audio clip on my Ubuntu host. Alas! No sound in my Ubuntu host now! I shut down the Windows XP guest operating system. Then all the audio applications were running as usual in my Ubuntu host operating system.

I tried to start Windows XP guest while listening to an audio clip in my Ubuntu host operating system. A warning appeared as the Windows loaded and Windows started, yet again with no sound at all. Hence I came to the conclusion that, currently for my host/guest operating systems combination (Ubuntu Jaunty / Windows XP), audio will be available either to guest or host, but not to the both at once. Seems this bug is found and reported in VirtualBox OSE bug databases when I did a google search for this.

An update: Recently I was able to get the audio in both the host and guest simultaneously, without any further modification. I guess, at that time some other processes were blocking the audio sharing between the host and the guest.

Saturday, August 8, 2009

Summer of Codes - Wrapping up

Google Summer of Codes 2009 is reaching its finishing touches. I should thank Google for organizing the event and Abiword for mentoring me. 'Porting Abiword for windows to Unicode', is my project. My focus was, in simpler terms, to provide an Arabic [Unicode] Abiword in Windows. I mean, my testing language was Arabic, thanks to the fact, it is good for the testing of BIDI text.

My mentor dom, the administrator hub, cross-building robsta, the MSVC abicollab and Abiword releases uwog, Windows maintainer sum1, ryanp with documentation and plugins, and msevior... I have to thank these developers for the support they were providing to me and the other participants. A wonderful job, they are doing, at Abiword. By providing a friendly, yet challenging learning environment, Abiword enables us extending our commitment to Abiword.

The Abiword development will not complete with this GSoC - All the successful Abiword students will continue being Abiword Commitors. The next mile stone release 2.8 is the major focus now. Later the SoC codes will be merged from trunk and further modifications will be done. Finally before the merge to the trunk, a merge from trunk to the branch will happen once more to our SoC branches.

It should however be noted, we all prefer not Windows, but FOSS Operating systems (or more specifically, Linux). As a 'cute' word processor, Abiword runs everywhere, literally. So we still feel free to develop for Windows and Mac, when it comes for Abiword. FOSS will rule the world.

"Abiword -- It's cute."

Thursday, August 6, 2009

Design Constraints : Mooshabaya

August 6th [WSO2/Denis, Pradeeban, and Supun] : Discussion on the design constraints of Mooshabaya : [10 a.m - 11 a.m]
Security: MyProxy is currently used in XBaya. WSO2 Identity Server will be used in Mooshabaya, where OpenID will be provided to ensure the security. Users from Registry will be initially added, where in the later stage of the development, WSO2 identity server will be merged with WSO2 Registry to provide users with secure access.

XSUL: Currently the Jython Scripts and possibly the other code segments depend on XSUL libraries. Since XSUL is obsolete and substituted with its better alternative Axis2, we will consider adding the Axis2 libs and avoid XSUL code segments in the coding. Later we will consider removing the XSUL dependencies altogether from the Mooshabaya code base.

GFac: Gfac is used, as when it is used to host the descriptive language script (similar to wsdl, but with the business logic and further data, possibly), the services can be used, even without running them. This will reduce the overhead of running each of the service, otherwise. This GFac integration scenario into XBaya also will be considered on a later stage of development.

Operating System: XBaya runs on windows, Linux, and Unix variants, while some other Extreme! Labs components run only in Linux and Unix variants. Mooshabaya will [hopefully] run in Windows, Linux, and Unix environments.

The current interface which has two implementations which are used to export the workflows as Jython Scripts and BPEL. Initially we will implement the Mashup Generator parallel to these two implementation, where finally the Mashup Generator code will be used to depict the workflows, in Mooshabaya.

These meeting entries are also listed here, in Moodle.

Supervised By:
Mrs. Vishaka Nanayakkara
Dr. Srinath Perera
Dr. Sanjiva Weerawarana

Group Members:
De Alwis, K.D.B.C. 060081B
Malinga, A.S. 060286H
Pradeeban, K. 060372T
Weerasiri, W.A.D.D. 060527B

The evolution of Mooshabaya

Mooshabaya is a Mashup generator for XBaya workflow composer of Indiana University. Mooshabaya is implemented by a team of four, and Mentored by Dr. Srinath Perera and Dr.Sanjiva Weerawarana of WSO2 Inc. As the team members we have had several online chats and informal meetings with our mentors. This post will mention only the formal meetings we had regarding the project.

May 22nd [WSO2/Dr.Srinath/All members]: Initiating The Idea : [10 a.m - 11 a.m]
The team meets Dr.Srinath Perera offline. This was the first meeting we had with Dr.Srinath, regarding the project. The project idea was first developed to form to considerable level. Dr.Sanjiva Weerawarana was also present in the meeting.

We decided to implement a mashup generator for the XBaya workflow composer. Currently the workflows are exported as jython scripts or BPEL. Our project will export them as mashups, combining the mashup and workflow domains, including a considerable amount of research, hence this project has not been implemented before. The services will be found from WSO2 Registry and the generated mashups will be deployed into WSO2 Mashup server. It was mentioned that the current implementation of XBaya uses several other components from the Extreme! Labs of Indiana University, including XRegistry.

June 4th [WSO2/Dr.Sanjiva/Dr.Srinath/All members]: Combining the groups : [10 a.m - 12 p.m]
We, with the other group of 4 WSO2 interns, decided to have a merge between the groups and met Dr.Sanjiva Weerawarana and Dr.Srinath Perera. After discussing several ideas and possibilities, the project was finalized.

The other team will be developing "Scalabale and Hierarchical Tuple Spaces". We discussed a use case where our project will develop scripts which can be deployed in browser. That will become a common scenario for both the teams as the other team will have a use case to have a tuple space that runs in a browser. Hence both the teams will be a loosely coupled combined team [M2SC]. Mora Middleware for Scalable Computing (M2SC), will have two independent components those can be developed without much dependency on each other team's component.

July 17th [WSO2/Dr.Srinath/All members]: Further Discussion regarding the use cases and usability :[11 a.m - 12 p.m]
Since Mooshabaya - our project will be based on XBaya source code, we had to install and run XBaya. For XBaya to be running, we needed WS-Messenger. We have installed both WS-Messenger and XBaya. We discussed about XBaya, Messenger, and the other Extreme! Products that are involved in XBaya including XRegistry and XSUL. Discussed further about the requirements. Some basic design constraints were discussed.

July 22nd [CSE/Dr.Srinath/All members]: Discussion on XBaya and Extreme! Labs products : [9 a.m - 9.30 a.m]
We discussed the issues we faced in monitoring workflows using XBaya. After the meeting and discussion XBaya is successfully installed and configured to monitor the workflows.

Supervised By:.....................Group Members:
Mrs. Vishaka Nanayakkara.......060081B - De Alwis, K.D.B.C.
Dr. Srinath Perera................060286H - Malinga, A.S.
Dr. Sanjiva Weerawarana........060372T - Pradeeban, K.
.....................................060527B - Weerasiri, W.A.D.D.

Wednesday, August 5, 2009

[SPAM] Life is always like that

Chain letters are the letters or email that induce the recipients to forward the letter or the message to some or all of them in their contact list, which often try to convey an engineered story or spread a rumor to a huge set of audience, with or without a harmful intent. Currently printed chain letters are becoming extinct, and it is transformed into the form of email, facebook wall posts, or similar social media communication. Some chain letters contain viruses and trojans which may affect the recipients once opened or executed the downloaded attachment.

People tend to forward chain-letters without analyzing the validity of their claims. Some chain letters try to appear as a letter for a good cause, such as a mail which seeks help to identify a missing child, or alerting the public or educating them on something important and urgent. It should be noted most of these innocent appearing mail too are hoaxes.

Some email claim that they will donate a considerable amount of money to a charity for the number of recipients the mail is forwarded, which can never be true as the number of times a mail sent can't be tracked down as it is claimed. Forwarding a chain-letter without confirming its validity is a bad practice, which should be avoided at all possible means. Confirm using Snopes or Hoax-Slayer, before spreading a message, as most of the messages are listed their with their validity, whether they are genuine or just hoaxes. Also make sure to report any new hoax to those sites, to help prevent these messages spreading.

The messages that are forwarded with the tag "for each copy you forward, this baby with this dangerous disease will get 50 cents!" - No one actually bothers to trace the number of times the mail is forwarded. Why should they bother to pay 50 cents for the fact that you forwarded that shit email? It is really irritating, when we get these mails even from software professionals and undergraduates, who are smart enough to consider these facts.

A mail asking for a kidney AB+, dated back to few months back being forwarded to at least 300 people. Mere forwarding doesn't mean you have done some good job. Ask someone personally if you really care, or give yours promptly! If you are not up for the help, don't expect the recipient of your mail to be so. 

It is just wasting the online resources, bandwidth, storage and everything with that html spam with all the baby images [That baby is still in her age of 5, since 1995, seeking your divine help]. I would better suggest thinking of the alternative ways of helping the poor people, rather than forwarding emails for them. In the long run, forwarding unsolicited junk mails like this, will definitely cost more than that '50 cents'. Thank God, most of these spam mail are now listed. Before forwarding 'help this child' email, do a simple google search with the mail subject. You will get a hit with the fact that the mail information is FALSE [or TRUE, in rare occasions of chain mails]. These email hoaxes are gruesome and more than enough to spoil the receivers' mood with the false claim. Latest Email hoaxes can be found here.

HTML mails, the other irritating factor! Even for a "hi, nice to meet you" note, I usually get an HTML message with all the graphical signatures, colours, and dancing monkeys, where a simple text format is nice and appropriate. Please send ASCII mails whenever possible. Most mail groups have even banned the HTML emails. Unnecessary attachments also should be avoided. Attachments in proprietary software format should always be avoided in a FOSS environment.

Emails having the threatening message similar to "Send this mail within 15 min to 15 people, else a stray dog will bite you" becomes the highlight of all. Funny to see, still people bother to send 15 mails as demanded in the spam. Some will have this line, "Pls forward this back to me as well, else I will feel sad." The same trend continues in social media networks such as Facebook in the form of wallposts or status updates.

Sending unrelated message to a mail group, then someone will reply, "why the hell did you send this here." The sender will apologize for that serious mistake in tears. Then a flow of +1 and -1 to both the people. The initial problem is solved; the mail thread is running for months. Let's ignore the mistakes and smile more.


I have installed VirtualBox OSE in my Ubuntu Jaunty and installed Windows XP as a guest operating system. Installed guest additions, and started the guest operating system and added some shared folders from the Host operating system file system. Then with the windows XP [guest OS], Tools -> Map network drive, now I have the common location writable from both the host and the guest operating systems. 

This made my GSoC testing easy, as I no more have to copy the executable to Windows machine from the Ubuntu one, which is used to cross build it. Build once. Run from host and guest from the same location. Virtualbox (or the similar available Virtual Machine software) guest operating systems are the cool way to have multiple operating systems with the possibility of simple file sharing.