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 http://mooshabaya.svn.sourceforge.net/mooshabaya/ (http://mooshabaya.svn.sourceforge.net/viewvc/mooshabaya/), powered by ViewVC.
Source code can be checked out from https://mooshabaya.svn.sourceforge.net/svnroot/mooshabaya/
for the developers.

Or a particular folder in a particular version:
svn co -r 289 https://mooshabaya.svn.sourceforge.net/svnroot/mooshabaya/trunk/src/main/java/edu/indiana/extreme/xbaya/mashup/script

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.


Reference:
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.

Thursday, August 27, 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.

Friday, August 21, 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.