Monday, June 29, 2009

Summer of code - Mid Evaluations

Next Monday (6th of July) the mid evaluations will start. The last year survey questions from mentors can be found here, and students here.

Students and Mentors from the Abiword team are eagerly awaiting the evaluation.

My SVN Commits so far, can be found here.
My initial interaction with abiword community is discussed here.

Apart from this, I have recently learned the usage of the ACM membership, provided for GSoC students free for a year. We have free download access to proprietary softwares, some books and journals, a forwarding acm email address, and a redirect url.

Saturday, June 27, 2009

Quick installation : WS-Messenger

1. Download Messenger here and extract to a location, which will later be pointed as WSNT_HOME.
2. create a mysql database, use db/mysqlCreationScript.txt to create the tables in the database
3. update the config/db.config to point to the data base (sample here).
4. run ant war to create war file. messenger.war will be created inside WSNT_HOME/distribution folder.
5. Download and install a web container (we use apache tomcat), deploy the war file by dropping it into the tomcat webapps folder, and start tomcat.
6. run ./ at WSNT_HOME to start the messenger. [In Windows, it is the *.bat file]. If the downloaded version's startMessenger has any trouble, try this.

Starting the message broker includes two processes.
The war file deployed in the web container, can be reached at http://localhost:8080/messenger/ after starting the web container. It is called the broker.
Delivery thread of WS-Messenger can be reached at http://localhost:12347/ by running the startMessenger.

Testing - Running a sample
Download and put it into the folder WSNT_HOME/test/org/indiana/extreme/queue.
Create a project using WSNT_HOME/test as the source root.
Add the WSNT_HOME/lib jar files, and WSNT_HOME/build/lib/wsmg.jar to the path.
After running the messenger as mentioned above, run the

This will depict the case, where 10 subscribers subscribing to one of the 3 available publishers.


Today morning, while trying to log into my irc account on freenode using xchat, I was getting the message,
"(notice) *** Banned: You have a host listed in the DroneBL. For more information, visit Please contact with questions. "
The message was repeating itself, as it tried to connect with different Freenode servers.

So I visited
It was saying
"There have been listings for the host, found in DroneBL. To get removed from our DNSBL, you will need to address all of these incident listings.

I got it! Since we are given dynamic IP from the service provider (Sri Lanka Telecom), an abusive usage of someone else has caused this trouble to me. I used the request removal option.

Removal results for
You are requesting the delisting of incident 532599 involving Please confirm that you are human.

It was quick and removed the ban promptly, without any fuss.
Removal results for
This incident has been removed from the DroneBL. Please make sure that you have fixed your problem, or it will reappear here. Have a great day.
You may have other incidents in DroneBL reported, in which case you will need to remove them.

I learned more about DroneBL from its blog. "DroneBL is a realtime monitor of abusable IPs, which has the goal of stopping abuse of infected machines."

Friday, June 26, 2009

Mooshabaya - A new beginning

We have recently enrolled to the Final Year Project module (CS4200) and started working towards preparing the project proposal. We, 8 of the WSO2 interns (2008/2009), formed a group of two.

Our team (Buddhika, Denis, Pradeeban, and Supun) has chosen "Xbaya graphical composition tool to compose workflows and Mashups" (Listed as project idea 9) as our project. The other team (Charith, Dulanjanie, Pradeep, and Udayanga) has chosen Scalable & Hierarchical tuple space (project idea 48). Our ideas were suggested and are mentored by Dr.Srinath Perera and Dr.Sanjiva Weerawarana. Based on a use case, as suggested by Dr.Sanjiva Weerawarana, we will work as a merged group, where each co-project is independent, yet uses the other for the particular scenario.

We have named our project as (Project idea #9) Mooshabaya. Mooshabaya is a name derived from Mooshups and XBaya. The other project (Project idea #48) has been named Bissa. We have named the merged project as M2SC (Mora Middleware for Scalable Computing). The M2SC project IRC is ##m2sc on Freenode.

Sunday, June 21, 2009

Collaboration in document creation

Feel the lighter side of life with Abiword!

My Summer of Code so far

3rd to 21st of April was an intermediate period trying to find alternate ways for windows build, where 16th of April I successfully cross-built using wine. However I dropped the idea of MinSYS/MinGW build in the middle, as I found cross-building pretty cool. 21st of April, the best news, yes, I got selected for the Google Summer of Codes!

My mentor immediately wished me and the other Summer of codes participants also wished me at IRC. Abiword is a nice place to have the Summer of Codes, where we are considered regular developers, and not just students.

27th of April, uwog created gsoc2009unicode branch for me, and helped me setting the password using ssh. 4th of May I did my first commit, which fixed the cross-building. So that commit was actually the patch I developed for the minor change to enable cross-building during the application period.

19th of May, I started to commit the changes I made to the code, and the new classes. Jordi Mas' initial effects on this project were a good reference for me. 23rd of May, the coding period began officially.

Now we have completed a month, expecting a nice mid term evaluation.
Have a nice time with Abiword.

My Summer of Code - Challenges

At that time, uwog's MSVC build was missing the menus. There was a minor issue in compiling, which I was able to fix with sum1's patch. Since this was not a sane build, as it is now, I was searching for alternatives, where I found robsta's cross-building suggestions on a mail thread. The cross-building was not supported and tested for a long time. Still robsta was kind enough to provide me support so that I was able to fix a minor issue, and successfully build Abiword for windows Using Ubuntu 8.04/Wine.

During this period, I was able to interact with many abiword developers and each of them were really friendly and helpful to me. In most of the cases, I sent personal mails as the reply to their suggestions and helps on mailing lists, unless my reply will be useful to the developers or the other potential students to avoid mail flooding, which I usually DO in the mailing lists.

By this time, the Application deadline has come, and the cross-building was also successful. Apart from the "Porting Abiword Windows to Unicode", I applied for another project idea, "Better support for borders and shadings", which was suggested by robsta in the IRC. I wrote the proposal for the second idea only the last day. I was planning to use libccss for this project, as the drawing tool. libccss can be downloaded here.

My project proposals for the both ideas can be found here and here.

My Summer of Code - Abiword

8th of March, I sent a mail to the Abiword dev list, as I had found Porting Abiword for Windows to Unicode, an interesting idea, and done a basic research on that. I carbon-copied the mail to Jordi Mas, as he has already worked on the project idea. On the very same day, I got a positive encouraging reply from sum1 (Kamran Khan, an Abiword developer). By that time, I had realized that Abiword is the best place for the summer of codes.

I tried my best to hang on the #abiword IRC at gnome, and always interested in interacting with the users and developers of Abiword through the lists. I used this time as the best opportunity to make new friends with the other potential students through the mailing list and IRC.

19th of March, the list of selected organizations were announced, where Abiword was included for the fourth time, as expected. I was awaiting the result the whole day, and really excited to see that Abiword had been chosen. I sent a mail describing the project idea to the developer list immediately. I got some more useful suggestions from my mentor Dom and Jordi Mas.

Abiword had a requirement of building abiword to get selected for the summer of codes. I built Abiword successfully on Ubuntu 8.04 and satisfied the requirement. Dom suggested that since this would be a win32 project, it is expected to have a windows build, or a cross-building.

My Summer of Code - Initial Stage

For a student interested in Open Source project activities, Google Summer of Codes is really a wonderful opportunity, where he is allowed to spend his summer (this is of course not a summer vacation at Sri Lanka and many other countries), in his preferred way while earning a considerable amount of money. Google Summer of Codes is considered a real world working experience in the Software industry. That is, we are of course considered working in an open source project for the three months, yet paid by Google.

4th of March, while I was trying to find a place to do some localization, I got the idea of localizing Abiword into ta-LK (Tamil-Sri Lanka). There is a Tamil localization which is partially completed (ta-IN, Tamil-India). I later got an idea of giving my support in localizing the missing words. But finally settled for a fresh localization of ta-LK, which is, of course, still in very initial stage.

By that time, I had already started to jump into the possible open source community mailing lists, those can be the possible Google Summer of Codes Mentoring Organizations. WSO2, my training organization, Abiword, and OMII topped my lists. Abiword mostly matched my personal interests, where I could find some Unicode related project ideas. I was able to find some scientific workflows related projects in OMII, which matched my experience at WSO2, during my internship, with the project tryLEAD - LEAD Services.

XBAYA - A Graphical Workflow Composer for Web Services

XBAYA - A Graphical Workflow Composer for Web Services is a graphical client program, developed as a Grid Web Services Project (xgws), at the Extreme! Labs of Indiana University. It does workflow composition, monitoring, and more, by providing a GUI to compose workflows from Web Services described in WSDL. The composed workflow can be exported to workflow languages, where BPEL and Jython Scripts are supported currently.

Source code of XBaya can be checked out here:

XBaya is included in the OGCE Portal of the OGCE Collaboration.

More Information:
Interpreting Workflow Scripts
The wiki page for XBaya
Information on workflow can be found here.

The Open Grid Computing Environments Portal and Gateway Toolkit [The OGCE collaboration]

This contains the collection of components including, OGCE Portal, Workflow Suite, Axis Web Services, GTLAB, OGCE Gadget Container, and Cyberaide.

OGCE Portal Capabilities include Grid credential management, Secure remote file management and code execution, Views of Grid information services such as machine load, usage, and queue wait time, and Workflow composer (XBaya).

It requires Java SDK 1.5 or higher and should be installed on Linux, Unix, or Mac OS X operating systems.
Portal toolkit 2.4 can be downloaded as a tarball here.
You may also checkout the source using
svn co

Friday, June 12, 2009

C++ Acronyms / Windows API

[Acronym] ([Description]) - [Equivalent to]
LPSTR (Long Pointer to STRing) - char*
LPCSTR (Long Pointer to Constant STRing) - const char*
LPWSTR (Long Pointer to Wide STRing) - wchar_t*
LPCWSTR (Long Pointer to Constant Wide STRing) - const wchar_t*
LPTSTR (Long Pointer to a null-Terminated STRing) - TCHAR*
LPCTSTR (Long Pointer to a Constant null-Terminated STRing) - const TCHAR*

The above acronyms can commonly be seen in Windows API programming. The above 6 acronyms will define the respective data types without 'Long', when 'L' is omitted. For eg. PSTR denotes Pointer to string.

Thursday, June 11, 2009

Important commits to gsoc2009unicode branch

My SVN Branch can be browsed here.

The later commits are listed here.

The important commits are listed below for an easy reference.
27174 - Porting ap_Win32Dialog_Insert_DateTime.
27169 - Porting ap_Win32Toolbar_FontCombo.
27168 - Porting ap_Win32Dialog_New.
27167 - Porting ap_Win32Dialog_Replace.
27127 - Porting ap_Win32Dialog_WordCount.
27094 - Porting ap_Win32Dialog_FormatTable.
27092 - Porting ap_Win32Dialog_InsertTable.

27044 - Restoring ut_iconv.cpp to an earlier version, since the change made in revision 26696 (replacing the existing file with the fix of trunk) makes the program crash. Since this is a file in xp directory which dom fixed in trunk, have to consider this again.

27009 - Porting ap_Win32Dialog_Goto. Had to fix the parameter 2 of createModal and createModeless of xap_Win32DialogBase from using MAKEINTRESOURCE()to MAKEINTRESOURCEW() for wchar_t.

26987 - Porting xap_Win32PropertySheet.
26976 - Porting xap_Win32EncodingManager.
26910 - Fixes 26909. Porting ap_Win32App.
26909 - Porting xap_Win32App [fails].
26862 - Fixing ap_Win32Dialog_Paragraph; this fix is needed to enable the r26861 build.
26861 - Removing the unnecessary, redundant functions from ut_Win32OS. [Yet to be checked whether this fix breaks the Abicollab plugin]
26860 - Porting xap_Win32FrameImpl.
26859 - Fixing ap_Win32StatusBar.
26854 - Including the header ut_color.h for colors.
26853 - Porting ap_Win32FrameImpl.cpp. Fixing some earlier omissions.
26818 - Porting xap_Win32Dlg_Language.
26817 - Porting xap_Win32Dlg_Insert_Symbol.
26816 - Porting xap_Win32Dlg_Image.
26802 - Porting xap_Win32Dlg_FontChooser.
26753 - Porting winezmouse.
26752 - Porting ut_Win32OS.
26746 - Porting ev_Win32Keyboard.
26740 - Porting ap_Win32Dialog_Options.
26722 - Porting xap_Win32Dlg_History.
26696 - Replacing ut_iconv.cpp with that of the trunk's latest version. This commit introduced some crashes into the program so I reverted the ut_iconv.cpp later.

26691 - Porting xap_Win32Dlg_FileOpenSaveAs.
26669 - Porting xap_Win32DialogBase.
26656 - Minor modifications in util/xp directory.
26607 - Porting ap_Win32FrameImpl.
26600 - Porting gr_Win32Graphics.
26491 - Porting ev_Win32Toolbar.
26447 - Porting xap_Win32Dlg_About.
26389 - Porting ev_Win32Menu.
26252 - Enabling cross-building for jaunty.
26186 - Fix for cross-building.

26150 - The gsoc2009unicode branch was created by uwog.
[Mon, 27 Apr 2009]

Modified Folders:

-xap/xp - Enabling cross-building
-util/xp - Other xp changes; to be considered in merging.

Wednesday, June 3, 2009

Initial Progress - gsoc2009unicode

Yes. The coding started last month (23rd of May), and today is 4th of June. I have started coding and practically this is somewhat like a first-run, where I port to unicode, the classes one by one, and commit as I port. I will have to go into a second-run, after this fast-phase porting. During this fast phase, I have been working towards making some A* and T* towards W*, and *str* becomes *wcs*. That is a lovely W postfix. ;) The second phase would be, pointing out the issues of my porting and fixing them towards a unicode build.

And an "unrelated" comment, we got the first batch of allowance (500$), during the end of the last month. :)

Happy coding to all. Have a nice time with your projects!
Abiword - A word processor for all!