Showing posts with label OGSA-DAI. Show all posts
Showing posts with label OGSA-DAI. Show all posts

Sunday, April 15, 2012

"Reading Level" ~ Google gets more interesting!

"Verbatim" and "Reading Level" are two new cool search tools from Google. Verbatim lets us search the exact term as it is, eliminating the spelling corrections, and all the smart features of Google.

Reading Level
"Reading Level" categorizes the search results according to the level of expertise needed in reading the page. Simple and easy-to-comprehend pages are categorized as "Basic", where the advanced and high-standard pages are categorized "Advanced". "Intermediate" stays in between. Highly technical or articles with complex language structures are often categorized as "Advanced".

I searched "Kathiravelu Pradeeban" using Reading Level, and found the below.

Similarly, searched a few projects that I am interested in.
AbiWord
Basic - 14%
Advanced - 3%

OGSA-DAI
Basic < 1%

It is pretty reasonable to have the highly complex and technically advanced OGSA-DAI to have more pages classified as "Advanced" and only a tiny bit classified as "Basic". However, AbiWord, the word processor has more content classified as "Intermediate". This again is reasonable for an end-reason software product. Google Reading Level is surely an interesting feature. 
 
Update as of Aug 30, 2025: The Reading Level feature seems to be removed by Google! 

Friday, March 23, 2012

GSoC Feedback Session in IRC for the rejected organizations

Google schedules an irc feedback session with the organizations that couldn't make to the summer each year, addressing what went wrong with the each organizations. It was an interesting session today.

First we all adjust our irc nick to have the format {org}|{nick}
/nick ogsadai|Pradeeba

Then we queue ourselves with the gsoc bot by sending a message in the following format.
/msg gsocbot queue
/msg gsocbot queue ogsadai http://sourceforge.net/apps/trac/ogsa-dai/wiki/GoogleSummerOfCode

To see the next 10 positions,
/msg gsocbot showqueue
(11:17:59 PM) gsocbot: 01. AmineKhaldi reactos http://reactos.org/wiki/Google_Summer_of_Code_2012_Ideas
(11:18:00 PM) gsocbot: 02. ReactOS|Amine reactos http://reactos.org/wiki/Google_Summer_of_Code_2012_Ideas
(11:18:01 PM) gsocbot: 03. mikhas maliit https://wiki.maliit.org/Ideas
(11:18:02 PM) gsocbot: 04. prism PRISM Model Checker http://www.prismmodelchecker.org/gsoc/
(11:18:03 PM) gsocbot: 05. ogsadai|Pradeeba ogsadai http://sourceforge.net/apps/trac/ogsa-dai/wiki/GoogleSummerOfCode
(11:18:04 PM) gsocbot: 06. Andrew__ boost https://svn.boost.org/trac/boost/wiki/SoC2012
(11:18:05 PM) gsocbot: 07. plan9|anth plan9 http://www.plan9.bell-labs.com/wiki/plan9/gsoc-2012-ideas/index.html
(11:18:06 PM) gsocbot: 08. plone|kevin7kal plone http://plone.org/events/summer-of-code/2012/
(11:18:07 PM) gsocbot: 09. wordpress|jane WordPress http://codex.wordpress.org/index.php?title=GSoC2012&oldid=114656
(11:18:08 PM) gsocbot: 10. tcl_aku tcl http://wiki.tcl.tk/28789
(11:18:09 PM) gsocbot: ... and more ...

This year OGSA-DAI applied as a mentoring organization. Carol mentioned that the organization's application as well as the idea's page look perfect, while suggesting we could have proposed more ideas. OGSA-DAI will come up with more ideas next year. In the mean time, feel free to volunteer for OGSA-DAI, if you are interested. OGSA-DAI community always welcomes the enthusiastic volunteers.

Friday, March 16, 2012

Google Summer of Code (The best of both the worlds)

Month of March is so special to me. I was introduced to two great open source projects in March, 2009 (AbiWord) and 2010 (OGSA-DAI).. ♥

Not everyone gets a chance to live........ a second life!
Now, the beauty of open source projects come into play that it gives you a chance to work on something that you are really interested in, in your own way. But not many of us get time to dedicate to an open source project due to our other commitments and as we are busy with our regular work, study, and related activities. The Google Summer of Code (GSoC) gives the best of both the worlds.

Why GSoC?
GSoC is an annual program from Google for the university students of age 18 and more. You will be coding for your preferred open source organization for 3 months. Google coordinates and awards the successful participants. Though open source organizations are run mostly by volunteer developers, Google pays the students with 5000 USD along with a certificate, an awesome t-shirt, and gifts! Hence you can focus entirely on the program during the 3 months time.

3 milestones. 
  • Getting Accepted (500 USD)
  • Mid-Evaluations (2250 USD)
  • Final Evaluations (2250 USD)

Some statistics of 2011
  • 175 Organizations
  • 2096 mentors and co-mentors.
Submitted
  • 3,731 students, from 97 countries.
  • 5,651 proposals.
Accepted
  • 1115 students/projects
  • 68 countries.
  • 595 universities.

The success rate is pretty high!
Last year, more than 90% of the students passed the mid evaluations, where around 88% passed the final evaluations. The high success rate is because, the mentors and the organization are with the student to provide him assistance and guidance, whenever is needed. 

The passion towards open source and the desire to be an outstanding student are considered to be the major reasons for a student to participate in the Google Summer of Code. Not to mention, while earning the money for the summer.

A computer with the Internet connection, knowledge and experience in the domain, and the motivation are the required to participate. Of course, you should really be interested in contributing to the particular open source organization.

Don't forget to check the


Before you begin..
  • Google Summer of Code is all about being Open Source.
    • Get your basics and motives right.
  • Netiquettes.
  • Sign up to the lists.
  • Join the relevant channel(s).

Technologies
  • Version Control Systems
    • SVN, CVS, GIT, Mercurial, ..
  • Build Tools
    • Ant, Maven, ..
  • IDEs (Integrated Development Environments)
    • IntelliJ IDEA, Eclipse, ..
    • Microsoft Visual Studio, Anjuta, ..
  • Issue Tracker
    • Bugzilla, Jira, Trac, ..

Communicating with the team..
.. and the mentor, over the Internet..
  • Mailing Lists
    • Dev, User, Commit lists, sub-groups, ..
  • Internet Relay Chat (IRC)
  • Issue Tracker
  • Forums and wiki
  • Blogs
  • Skype, Personal Mails, gtalk, conference calls, .. [with the mentors, if that is preferred.]

Network Etiquettes
  • Be Specific and clear.
  • Research (google.. ;)) before asking.
  • Be helpful to others.
  • Be ethical; respect.
  • NO CAPS! (UNLESS YOU ARE SHOUTING!)
  • Don't take messages personally.
  • Dn't snd ur sms msgs to thrds or lsts.

Proper Addressing..over the lists/irc/..
  • Address the devs and users properly.
    • First Name or Preferred calling name.
    • NO Sir, Madam, bro, sis, pal..
      • Even if you know them, personally.
    • No Mr., Dr., or Prof. either.
  • Be gender neutral.
    • “Folks” over “Guys and Girls”.
  • Not too personal.
    • Use “Hi”, instead of “Dear”.

Mailing lists
  • Post only to the relevant list.
  • Check the mail archives first.
    • To avoid getting RTFW/RTFM responses.
  • Avoid HTML mails.
    • Most of the mail servers do not like it. For eg, all the html mails posted to abiword mailing lists are dropped by the mail server. Make sure to turn off the html or rich text mail feature in your email program. It is by default HTML/RTF mail in the web mail like Gmail/Yahoo. Make them send plain text email.
  • No [URGENT]/[IMPORTANT] tags.
  • No unnecessary attachments.
  • No Cross Posting.
    • Stick to the proper mailing list only.
  • Don't hijack threads.
  • Don't post off-topic.

IRC Etiquettes
  • Be an observer first.
  • Refer to others using their irc nick.
    • Whenever my irc nick is mentioned, I get a pop up message from my irc client such as pidgin.
  • Don't expect immediate replies; wait.
  • Don't post bulk of text into irc.
  • Avoid these common mistakes.

Find a mentoring organization..
  • Have a look at the list of GSoC2011.
    • Since the list of this year hasn't been selected yet.
  • 175 Last year!
  • New Organizations.
  • Google as the mentoring organization.
  • Introduce GSoC to an organization (Sounds Smart!).

Find THE right project..    
Once you have found the right organization(s), that matches your interest and expertise, you have to go through the ideas list (e.g: the project ideas of AbiWord).

You can even contribute to the organizations, that aren't selected this year, as most of them still welcome the student contributors. OGSA-DAI had some great project ideas, but wasn't accepted this year as a mentoring organization.
    These were the organizations that I had my summer with. The beauty of these organizations is, they are friendly and provide a great learning environment. I was able to become a committer, developer, and mentor for these organizations. I learned open source with these organizations, and they have influenced me a lot positively. Apart from the coding, we always share thoughts and literally the AbiWord and OGSA-DAI communities have given me a colorful second life, which I would love to maintain as a developer, whenever I get a free time from the "first life".

    Get to know more about the projects
    • Talk to the mentor(s) Assigned by the organization for each project idea.
    • Mailing lists and archives.
    • Issue Tracker
      • Open issues or tickets
        • New features/enhancements (RFE)
        • Bugs (easy/difficult and normal/critical)

    What makes you special?
    • Experience
      • Being a great user doesn't mean that you can be a good developer.
    • Your interests and motivation
      • Pick something you really enjoy doing.
      • Being a great developer doesn't mean that you can be a good contributor.
    • Opportunities
      • What makes you the right person?
    • Willingness to contribute to the community beyond the time frame of GSoC.
      • We want committers and long time volunteers - Not just students!


    Experience
    • Languages
      • Java, C++, C, ..
      • Not much time to learn a new language (?)
    • Prove It!
      • Patches.
      • Assist other students!!!
      • Project expertise
        • Bug reports and fixes.
        • Go through the archives, wikis, and web sites.

    Opportunities..
    • Project that matches your previous work experience.
      • Choose the right project.
    • Timezone Difference 
      • Use it effectively - Most of us prefer to work in nights too, as we have the lectures in the mornings.
    • Multiple Applications (20!)
    • Preferences! 
    • Communicate early and often.
    • Be heard, visible, responsive,  and quick!
      • Ask questions, and more importantly answer others' questions.


    Apply

    Register as a student for GSoC, as the first step. Use the project's wiki for draft proposal, if applicable. Some organizations prefer that, where some discourage it. 

    Apply on Google's melange, at the earliest possible, as you can edit it later, till the last minute. Make sure to get the mentors' opinions and improve. Check melange often for the mentors' comments and attend to them. Make sure that you subscribe to the comments on your proposal in the melange site, such that you will receive email alerts for each comment that is made by a mentor/developer on your proposal. Your proposal can only be seen by the orgnization mentors, unless you decide to make it public.

    How to impress the mentors/developers?
    • Stick to the organization's template.
    • Abstract.
    • Introduce yourself properly.
      • Focus on the relevant facts.
      • Why do you fit? Your skill sets.
      • List of the patches (if any) you have submitted.
    • Project Goals
      • Proves you got them correct.
    • Deliverables
      • Code, Documentation, test cases, ..
    • Description - can also be given along with the timeline
      • Benefits to the organization and other projects  
    • Timeline
      • Finer details - Break upto periods of 3 - 4 days.
      • Testing takes time - Don't be over-optimistic.
      • Some organizations require considerable work hrs/week (40 ?).
    • Links - References and additional details.

    After the submission..
    • Don't go invisible!
      • Evaluation is still going on.. ;)
    • You may be asked to provide additional information.
      • Patches.
      • Screenshots.
    • Start coding on your project - only if you didn't apply for multiple projects.
    • Be motivated.

    Got Selected? Community Bonding Period!!!

    Don't Panic. You have one more month, just to mingle with the developers and the code base. Mentors are there to help you! Keep touch with the developers and users. Learn the project by going through the code base and documentation such as coding styles and coding guide lines. e.g: OGSA-DAI coding guidelines. This will help you understand the project idea more. Come up with a design and start with simple hacks.

    Coding

    Finally comes the coding - the easiest task of all. Commit often, if you are given committership. In AbiWord GSoC projects are usually given a branch in the public svn, which will be merged to the trunk, upon the successful completion of the project. In OGSA-DAI, based on the project, it is either committed to the trunk directly or given a branch. These two projects give committership to the students. However, some organizations/projects do not give committer access to the students. In such cases send daily patches otherwise.

    When committing or sending the patches, make sure to include meaningful Commit messages. Get feedback from the mentor(s) on your commits or patches frequently. Keep the community updated. Committing or sending patches daily would be a good approach.

    Plan for the mid and final evaluations early, with the mentor. This will help you reach the target successfully. You might also need to revisit the project goals if required, during the milestones.



    Conclude/Continue

    Pencils Down Date - to stop the coding. Still you can refactor and improve the code, fix any last minute bugs, and work on finalizing the documentation. This is follwed by the firm pencils down date, which literally finishes the Google Summer of Code. 

    Whatever coding or related job done on your project after the firm pencils down date will not be considered part of your summer of code, and will be considered a volunteer work on the project. Get a tarball of all the diff files to submit to Google. Successful submission of the tarball along with the successful final evaluation ensure your success in the Google Summer of Code.

    Focus on becoming a committer if not already given committership. Keep contributing to your project.



    A few links
    This blog post has gone a bit longer, since I tried to include all the information in a single post. Wish you all the best.

      Wednesday, September 7, 2011

      OGSA-DAI over WSO2 Application Server

      Web Applications list - WSO2 Application Server
      Open Grid Service Architecture - Data Access & Integration (OGSA-DAI) is an innovative open source data access and management solution for the real use cases, maintained by EPCC, The University of Edinburgh. It is developed with multiple presentation layers, where you can extend it to use your preferred presentation layer, let it be SOAP or ReST such as the presentation layers built using Axis, Axis2, CXF, Jersey (An open source, production quality, JAX-RS (JSR 311) Reference Implementation for building RESTful Web services), or GT.





      OGSA-DAI Services



      I recently tried deploying a current version of OGSA-DAI with CXF presentation layer over WSO2 Application Server. It went pretty well. OGSA-DAI is often deployed on Apache Tomcat. Some of the screenshots showing OGSA-DAI/CXF deployed on WSO2 Application Server are shown here.





      Web Application Dashboard (/dai)

      Tuesday, July 12, 2011

      Building and deploying OGSA-DAI/CXF

      Building OGSA-DAI/CXF from Trunk
      Check out the source code from the svn using,
      svn co  https://ogsa-dai.svn.sourceforge.net/svnroot/ogsa-dai ogsa-dai
      Go to the folder ogsa-dai/third-party/packages/cxf/2.4.1 and download and extract cxf distribution into a folder. This will make your CXF home as, ogsa-dai/third-party/packages/cxf/2.4.1/apache-cxf-2.4.1. Here the cxf libs will end up in ogsa-dai/third-party/packages/cxf/2.4.1/apache-cxf-2.4.1/lib. The cxf layer has been tested earlier with Apache CXF-2.2.6 and currently is used with Apache CXF 2.4.1. You might try with the other versions where it gets the directory structure of ogsa-dai/third-party/packages/cxf/{version.number}/apache-cxf-{version.number}. 

      Building
      ogsa-dai/ogsa-dai/trunk/release-scripts/ogsa-dai/cxf$ ant

      This will create the OGSA-DAI/CXF source distribution inside ogsa-dai/trunk/release-scripts/ogsa-dai/cxf/build/ogsadai-4.1-cxf-2.4.1-src and binary distribution is built in ogsa-dai/trunk/release-scripts/ogsa-dai/cxf/build/ogsadai-4.1-cxf-2.4.1-src/build/ogsadai-4.1-cxf-2.4.1-bin. 

      Deploying
      ogsa-dai/ogsa-dai/trunk/release-scripts/ogsa-dai/cxf/build/ogsadai-4.1-cxf-2.4.1-src/build/ogsadai-4.1-cxf-2.4.1-bin$ ant
      The built binary is deployed as directory under the Tomcat container in $CATALINA_HOME/webapps/dai. Pls note that with the later releases of ogsadai and cxf, the version numbers in the respective directory structure too will change. However the directory structure will more or less will stay the same.

      After deploying, restart the Tomcat Server. Make sure that ogsadai is deployed correct, by referring to the url http://localhost:8080/dai/services/. Services wsdl's can also be viewed from the services listing of dai in Tomcat.

      Feb 4, 2011 4:59:13 PM org.apache.catalina.startup.HostConfig deployDirectory
      INFO: Deploying web application directory dai
      Feb 4, 2011 4:59:18 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      INFO: Creating Service {http://ogsadai.org.uk/namespaces/2007/04/service/dataresource/service}DataResourceInformationService from class uk.org.ogsadai.service.cxf.dataresource.WSDataResourceInformationServicePortType
      Feb 4, 2011 4:59:19 PM org.apache.cxf.endpoint.ServerImpl initDestination
      INFO: Setting the server's publish address to be /DataResourceInformationService
      Feb 4, 2011 4:59:19 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      INFO: Creating Service {http://ogsadai.org.uk/namespaces/2007/04/service/datasink/service}DataSinkService from class uk.org.ogsadai.service.cxf.datasink.WSDataSinkServicePortType
      Feb 4, 2011 4:59:20 PM org.apache.cxf.endpoint.ServerImpl initDestination
      INFO: Setting the server's publish address to be /DataSinkService
      Feb 4, 2011 4:59:20 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      INFO: Creating Service {http://ogsadai.org.uk/namespaces/2007/04/service/datasource/service}DataSourceService from class uk.org.ogsadai.service.cxf.datasource.WSDataSourceServicePortType
      Feb 4, 2011 4:59:20 PM org.apache.cxf.endpoint.ServerImpl initDestination
      INFO: Setting the server's publish address to be /DataSourceService
      Feb 4, 2011 4:59:20 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      INFO: Creating Service {http://ogsadai.org.uk/namespaces/2007/04/service/execution/service}DataRequestExecutionService from class uk.org.ogsadai.service.cxf.execution.WSDataRequestExecutionServicePortType
      Feb 4, 2011 4:59:20 PM org.apache.cxf.endpoint.ServerImpl initDestination
      INFO: Setting the server's publish address to be /DataRequestExecutionService
      Feb 4, 2011 4:59:20 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      INFO: Creating Service {http://ogsadai.org.uk/namespaces/2007/04/service/request/service}RequestManagementService from class uk.org.ogsadai.service.cxf.request.WSRequestManagementServicePortType
      Feb 4, 2011 4:59:20 PM org.apache.cxf.endpoint.ServerImpl initDestination
      INFO: Setting the server's publish address to be /RequestManagementService
      Feb 4, 2011 4:59:20 PM org.apache.cxf.service.factory.ReflectionServiceFactoryBean buildServiceFromClass
      INFO: Creating Service {http://ogsadai.org.uk/namespaces/2007/04/service/session/service}SessionManagementService from class uk.org.ogsadai.service.cxf.session.WSSessionManagementServicePortType
      Feb 4, 2011 4:59:21 PM org.apache.cxf.endpoint.ServerImpl initDestination
      INFO: Setting the server's publish address to be /SessionManagementService
      Feb 4, 2011 4:59:21 PM org.apache.cxf.transport.servlet.CXFServlet updateContext
      INFO: Load the bus with application context
      Feb 4, 2011 4:59:21 PM org.apache.cxf.transport.servlet.AbstractCXFServlet replaceDestinationFactory
      INFO: Servlet transport factory already registered
      Feb 4, 2011 4:59:21 PM org.apache.catalina.startup.HostConfig deployDirectory
      INFO: Deploying web application directory docs
      Feb 4, 2011 4:59:21 PM org.apache.catalina.startup.HostConfig deployDirectory
      INFO: Deploying web application directory ROOT
      Feb 4, 2011 4:59:21 PM org.apache.catalina.startup.HostConfig deployDirectory
      INFO: Deploying web application directory examples
      Feb 4, 2011 4:59:22 PM org.apache.coyote.http11.Http11Protocol start
      INFO: Starting Coyote HTTP/1.1 on http-8080
      Feb 4, 2011 4:59:22 PM org.apache.jk.common.ChannelSocket init
      INFO: JK: ajp13 listening on /0.0.0.0:8009
      Feb 4, 2011 4:59:22 PM org.apache.jk.server.JkMain start
      INFO: Jk running ID=0 time=0/69  config=null
      Feb 4, 2011 4:59:22 PM org.apache.catalina.startup.Catalina start
      INFO: Server startup in 28740 ms

      Monday, March 14, 2011

      SSI and Google Summer of Code - 2011

      This year OMII-UK is applying for the Google Summer of Code as the Software Sustainability Institute (SSI). It should also be noted that many projects including OGSA-DAI, OGSA-DMI, and GRID-SAM are coming under SSI. OMII-UK has seen many successful student projects for the years 2008, 2009 and 2010, and foresees the same for this year, under the new name!

      Last year I had my Google Summer of Code with OGSA-DAI (Open Grid Services Architecture - Data Access Integration), a project by The Edinburgh Parallel Computing Centre (EPCC) and National e-Science Centre Established by a consortium of departments from the universities of Edinburgh and Glasgow (NeSC), which is part of OMII-UK, which has currently been evolved into SSI. It should also be noticed that EPCC and Open Grid Services Architecture (OGSA) are also part of Globus Alliance. Globus Alliance has also applied for Google Summer of Code 2011.

      Friday, September 10, 2010

      With Llovizna, 2010..

      It is really a nice time to have a blog post on the recent past, looking back at 2010 and the yesteryears. 2010 has been one of the most remarkable years I have faced so far. Some events worth mentioning since the beginning of the year. First interesting event was the rebirth of my blog as 'Llovizna'. I feel it was a major face-shift for my blog. Followed was the completion of the L4S1 exam along with quite a good results. CSE IT seminar was one of the events those add some spice to 2010. It was really nice to see the effort of Sri Lankan undergraduates for their younger brothers island-wide. I joined the team that went to Jaffna, and it was really an excellent learning experience - learning the school kids, and the outcome was really successful.

      The first highlight of 2010 was obviously my GSoC 2010 with OMII-UK, with the project OGSA-DAI. An interesting point to note is, even last year I had an interest in applying to OMII-UK project, where I later applied to Abiword as I loved to join the Abiword community due to my personal interest in the word processor as a user, as well as a developer. At that moment, I decided that, if a GSoC 2010 is possible, it should be with OMII-UK for me. So that goal was successfully met. OGSA-DAI project is one of the best FOSS communities for an enthusiastic developer.

      The successful completion of the final year project 'Mooshabaya' must always be mentioned, when recalling 2010. Special thanks goes to my team mates, who are simply the best. The final semester exam followed after. It went pretty well too. After the exam followed the CS&ES Conference marking the 25 years of excellence of CSE, along with the ExMo Exhibition of University of Moratuwa, Faculty of Engineering. Sep 6th hence marked the completion of our undergraduate life. Apart from that, we are blessed to join the dream job that we are passionate about. My sincere thanks goes to WSO2 Team at this moment recalling 2010 so far, awaiting the remarkable 13th of September 2010.

      Monday, August 16, 2010

      Wrapping up GSoC 2010

      CXF Release Build
      After a fix for a missing module in revision 1314, CXF release-build was successful in the test server.

      Test Server
      Version 1317 and 1318 focused on fixing some bugs in the test code. In 1319,  Base64 tests were done, using org.apache.cxf.common.util.Base64Utilit as the implementation of Base 64 encoding for OGSA-DAI for cxf based layer [1]. The default Base64 implementation of OGSA-DAI is, org.apache.axis.encoding.Base64, as defined in Base64 class of OGSA-DAI.

      Base64
      Conversion of char[] to string, and mapping the encode and decode methods of Base64Utility, is handled by presentation/cxf/client/src/main/java/uk/org/ogsadai/client/toolkit/presentation/cxf/CXFBase64Mapper.java from the version 1322. This fixes the cxf base64 tests. Further, Base64Mapper interface will be in the core/common module, and  ogsadai.common.Base64 will have method public static synchronized void registerBase64Class(Base64Mapper mapper). Decode encode operations will use the instance of the interface, instead of the implementation itself. After 1322, cxf/server tests depend on the cxf/client module too. Hence adding it as a dependency in ant jarUnitTests for cxf/server in 1323. These changes made all the 13 tests of cxf/server module to run successfully [2], almost completing the development of the CXF - SOAP based layer for OGSA-DAI.

      CXF/JAX-WS Layer
      With the client toolkit for cxf, the pencils down date reached. Though we will continue with our projects, the changes we did to the code base after 16th of August 1900 UTC will not be counted as work under Google Summer of Code 2010.

      ReSTful Layer CXF/JAX-RS
      Version 1300 starts the presentation/rest for the ReSTful layer based on CXF/JAX-RS. XXXResource classes define the CRUDs, where the CRUD methods call XXX classes, the classes that calls the lower level implementation further. 1398 becomes the initial implementation of DataRequestExecutionResource for CXF-JAX/RS presentation layer. 

      1399 provides a Simple ReST Server implementation. 1402 Lists resources for ReST resource types, while 1403 Gets and Deletes resources with the given resource ids. 1404 Sets the Lifetime, from the Request Service. ReST layer specific exceptions need to be written, and current error handling is very primitive for ReSTful layer.

      CXF/JAX-RS Release Script
      Commits 1406 and 1407 starts the release script of the ReSTful layer at trunk/release-scripts/ogsa-dai/rest, based on cxf/jax-rs. Needs more changes, and this script is still evolving. This becomes my final commit that comes under Google Summer of Code 2010 (Tonight 1900 UTC was the firm-pencils-down date).

      Patches
      Patches that cover my contribution towards the timeline can be retrieved by executing the below lines from the trunk.
      svn diff -r 994:1407 presentation/cxf > gsoc2010.diff
      svn diff -r 1274:1407 presentation/rest > gsoc2010Rest.diff
      svn diff -r 1261:1407 release-scripts/ogsa-dai/cxf > gsoc2010Release.diff
      svn diff -r 1406:1407 release-scripts/ogsa-dai/rest > gsoc2010ReSTRelease.diff
      As the code is committed itself into trunk, the patches is practically not necessary, apart from the Google's requirements or for records.

      Modules
      Considering the modules, presentation/cxf, presentation/rest, release-scripts/ogsa-dai/cxf, and release-scripts/ogsa-dai/rest contain the code written during this Summer of Code. 1407 becomes the last commit that was done during the Summer, hence the later commits won't be counted for Google Summer of Code. 

      The generated tarball of code for the code submission to Google can be downloaded from here.

      Sunday, August 15, 2010

      Summer of Love 2010 with OGSA-DAI

      OGSA-DAI, a name that became the highlight of the year 2010. When we reach the climax of Google Summer of Code, I have to mention that it has become one of the sweetest memories of my 2010. Working with OGSA-DAI team is an amazing experience. We discuss about almost everything over the irc. It varies from Web Services to Neural Networks, Sri Lankan tea to Colombian Coffee, and Databases to Grid Computing. Apart from the scope of the Summer of Code project, I am pretty sure that Michal (my GSoC 2010 mate in OGSA-DAI) and I were able to gain a considerable amount of knowledge on OGSA-DAI as well as the technologies that are used. The super-friendly environment of OGSA-DAI team is one of the best learning platforms that I have experienced, During the last few months, while working with the presentation layers, I was also able to play with the code base, and experiment with it. 

      Developing a presentation layer for OGSA-DAI is a challenging, but an interesting task to do. I started to write an article on how to write a presentation layer for OGSA-DAI, soon after I completed developing the SOAP based layer, which I later found more SOAP and CXF biased, when I started working with the ReSTful layer, which made me postpone releasing the article, as it obviously needs further modification. Officially Google Summer of Code completes by tomorrow, and of course, that just completes the direct involvement of Google. After taking a short break for my final exams, I will be back to OGSA-DAI on 6th of September. A compatible community is always a great motivation for a FOSS developer. With a strong community, OGSA-DAI becomes an ideal project for someone who is passionate on Software Development. 

      At this moment, I should thank my mentors Ally Hume and Bartosz Dobrzelecki for the great support and motivation they offered throughout the project. My Special thanks goes to Mario Antonioletti for his constructive thoughts and help when I first applied to GSoC, as well as his encouragement throughout the project timeline. My sincere thanks to Mike Jackson for providing help in setting up the tests and release builds in the server, effectively managing the project. I should also thank Neil Chue Hong for administrating Google Summer of Code this year, providing updates and assistance to students and mentors from OMII-UK. Thoughts of the core team members Charaka Palansuriya, Carlos Buil Aranda, Tilaye Alemu, and Amy Krause were always fascinating and highly motivating, and the OGSA-DAI family is really a nice environment to work with. OGSA-DAI is a team with strong bonds, and we all love the cute hexapus!

      Friday, July 23, 2010

      OGSA-DAI ~Presenting in CXF~ (4)

      Build Scripts - Release Builds
      Build files and CXF web.xml for the release build of OGSA-DAI/CXF/JAX-WS are committed in the revision 1273. 1281 adds Spring aop (Aspect Oriented Programming) as a dependency for cxf/server module.



      OGSA-DAI/CXF deployed in Tomcat

      More modifications in the release script, towards deploying in Tomcat (currently testing with Apache Tomcat 6.0.24) are done in the revisions 1282 and 1283. Listing all the 6 OGSA-DAI (SOAP) Services in http://localhost:8080/dai/services. The functionality provided by the package uk.org.ogsadai.rest.files will be handled more for CXF layers here.
      OGSA-DAI SOAP Services along with the operations are tabulated here (in DOC format  and PDF format). These tables are drawn from the service listing of OGSA-DAI deployed in Tomcat (refer to the images).
      ogsa-dai/trunk/presentation/rest
      1274 - ReSTful Presentation Layer code development based on JAX-RS/CXF. Committed the folder.

      Testing
      1277 is a minor fix that adds log4j as a dependency in the cxf/server module build, which fixed the odd java fork failure in the test framework, due to the Logger class not found exception [1],[2].
      Fixes to Base64 Tests will follow.
      Todo
      Details of CXF based layer to be added here.

      [1] Test Results (Currently) [2] Test Framework

      Thursday, July 1, 2010

      OGSA-DAI and ROA

      OGSA-DAI, by nature can be exposed as resources, and it fits the ReSTful design pretty well, and the initiatives to an alternative ReSTful layer was taken a few months ago. Since the inclusion of the ReSTful layer as a goal of a GSoC project of OGSA-DAI, the design discussions started accelerating.

      The first formal discussion on the design was held on 1st of July at Edinburgh Parallel Computing Centre (EPCC), by the senior architects Ally and Bartek. The discussion was targeted towards a high level description of the ReSTful layer design.

      Monday, June 7, 2010

      OGSA-DAI ~Presenting in CXF~

      Coding has started to accelerate. Revision 1065 customizes the built-in JAXB mapping, by an external binding file. This changes the default mapping of xs:dateTime from XMLGregorianCalendar to java.util.Calendar. For the ease of further commits, I added the respective client and server implementation folder structure in the commit 1066 along with the utility class CXFUtils.

      1069 extends the Request Status Builder for the cxf client. 1070 includes the utility methods for handling the exceptions for the client toolkit. 1076 was an interesting  [ ;) ] fix, which fixes some years which I overlooked.

      As with the common case of CXF stub generation, Lists are generated instead of arrays.
      An example is,
      -  final DataType[] inputData = inputBean.getInputLiteral();
      +  final DataType[] inputData = inputBean.getInputLiteral().toArray(new DataType[inputBean.getInputLiteral().size()]);

       -              inputType.setInputLiteral(mCurrentData.getDataTypeArray());
      +           inputType.getInputLiteral().clear();
      +           inputType.getInputLiteral().addAll(Arrays.asList(mCurrentData.getDataTypeArray()));

      1093 fixes some issues in an earlier commit related to this.

      1094 and 1095 includes the CXF compliant Request management and Session Management Services respectively. 1096 is the CXF implementation of  the WS-ResourceLifetime portType operations.
      1118 includes classes in execution/workflows. 
      Classes in execution/Worflows.

      Considerable changes in the stub generation includes,
      (1) Inner class InputsType.Input replaces the class InputsTypeInput.
      (2) Getters of the list returns a reference to the live list, not a snapshot. Hence to an item, getOutputStream().add(newItem);
      from the method  public List getOutputStream() in OutputsType class.

      (3) Regarding the generated fault types, in case of Axis, it was in the format of XXXType from the stub which needed to be used in the code, in cxf stubs, we have XXXTypes associated with XXX, where XXX from the stub is used in the code. [XXX denotes the faults.]

      These changes in the stub code are reflected in the respective server side code.


      1119 - The CXF implementation of Request Builder implementation. 1122, handles the AddressingUtils, which parses the SOAP Message Header.

      @WebServiceProvider
      public class AddressingUtils
      {

      ....
          @Resource
          private static WebServiceContext context;



              SOAPMessageContext soapMsgContext = (SOAPMessageContext) context.getMessageContext();
              SOAPEnvelope envelope = soapMsgContext.getMessage().getSOAPPart().getEnvelope();


      Commit 1128 defines CXF_MESSAGE_CONTEXT_ERROR. Commits 1144, 1154, and 1173 are for the cxf compliant data sink service, execution, and data resource information services, while 1161 and 1162 implement the data source and intrinsics  portType operations. 1159 is for the initialization class for CXF-compliant presentation layers, which is being modified at the moment. 1172 does some minor fixes in the exceptions thrown.

      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

      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.

      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

      Tuesday, April 27, 2010

      Timeline: Community Bonding

      April 26th 1900 UTC the names of the accepted projects were announced, and the community bonding period began. Since I have been given svn, blog [1], and the wiki [2] access on 30th of April, I wrote down the timeline in a wiki page of OGSA-DAI. I will record the further project progress and decisions in the ogsa-dai wiki. Tickets will be created for each task that is specified in my proposal using Trac - an enhanced wiki and issue tracking system, used by ogsa-dai project, which I will mark as resolved with the progress.

      [1] OGSA-DAI Blog
      [2] AlternativePresentationLayers 
      [3] REST in OGSA-DAI
      [4] The Java API for RESTful Web Services
      [5] Governance Model 
      [6] Part VI. OGSA-DAI for server developers
      [7] Part II. Getting Started
      [8] Coding Guidelines - OGSA-DAI

      Monday, March 22, 2010

      [GSoC 2010] Alternative Presentation Layer for OGSA-DAI

      Having the vision of sharing data resources to enable collaboration, Open Grid Services Architecture Data Access and Integration (OGSA-DAI) provides access, transformation, integration, and delivery of data. It supports Apache Axis 1.4 and Globus Toolkit (gt-4.2), available to download for both the two platforms.
       
      Under Open Middleware Infrastructure Institute (OMII-UK), an alternative presentation layer using Apache CXF instead of the outdated Axis which is currently used, is discussed as a project for Google Summer of Codes 2010, which I found very interesting for this summer.  

      Project Proposal

      Project Mentor: Ally Hume

      OGSA-DAI has a layered architecture consists of the data layer, business logic layer, presentation layer, and client layer, when considering the architecture in bottom-up. Presentation layer encapsulates the required functionalities to expose the data service resources using the web service interfaces. Presentation layer currently consists of two realization, where each of them have  a WSDL that describes the interface. 

      Both the realizations are compliant with Web Services Resource Framework (WSRF), and communicate with the respective client stubs using SOAP over HTTP. Hence design and implementation of an alternative RESTful presentation layer using CXF JAX-RS (The Java API for RESTful Web Services) is also included in this project, as it will be lightweight and best for bespoke clients.

      This seems an interesting initiative as the performance and the simplicity will be highly improved. I have seen reasonable comparison of Axis 2 and CXF [1], [2], though they must be outdated by this time.

      [1] Technical Notes on OGSA-DAI
      [2] Resource on writing a presentation layer
      [3] OGSA-DAI Tutorial
      [4] FAQ: OGSA-DAI WSI-specific (Based on Axis 1.4 web service stack)
      [5] FAQ: OGSA-DAI WSRF-specific (Based on the globus toolkit)
      [6] General FAQ
      [7] Known Problems
      [8] Binary Transfer Benchmarks 
      [9] GSoC 2010 Announcement in OGSA-DAI blog
      [10] Google Summer of Code 2010 site