Saturday, 2 July 2011

Sakai CLE mobile application with phoneGap

In my previous post I mentioned how to setup the working environment and useful tools we can use to develop mobile applications using web technologies. Today I am going to present what I learnt during the past few weeks and the status of the CLE mobile application at the moment.
As discussed with my mentor, Steve Swinsberg, the basic requirements of the CLE mobile app. are as follows for the first version also listed here and the UI flows can be found here. (Screens v1.0.1) 

User login
User enters user details to enter the system.

 List of sites
s/he will be directed to a list of sites that they are in (assuming credentials are correct)

 List of tools
User selects a site will navigate them to a tools list of the selected site. Here they can see how many new announcements, assignments and etc are there at a glance.

 Mobile version of each tool
Once they select a particular tool they can view the above details in detail. This will hopefully be a read only tool for the first version of app.

Current status  
List of sites and tools for a selected site done.


















































Both this screens are rendered using JSONP feeds of my local host because JSON feeds did not work due to domain issues. Please find the code here and please add your suggestions.

Try out this in your emulators with phoneGap
If you want to run this in your emulator what you have to do is to create a phoneGap app. following their tutorial and add sites.html to assets/www directory.

To add JSONP support for your local sakai instance you can do the following change to core-providers in entitybroker and deploy *only* it in tomcat.

Checkout entitybroker trunk if you don’t have,

    edit the classes where it says:


    add Formats.JSONP to the end      
    • mvn clean install sakai:deploy (from entitybroker pom level)
    •  re/start Tomcat.
    Yeah that’s it! Now you have JSONP support.

    Here is how to add a customize callback function,


    That's it you should be able to see above screens. :-)

    This is a useful place you can try JS, CSS, HTML http://jsfiddle.net/. Here we don't need to put all code just the snippets work nicely for example http://jsfiddle.net/HQK5w/6/

    Thanks to my mentor, Steve Swinsberg, for the support and directions.

    As always waiting for your comments. 

    Tuesday, 21 June 2011

    Sakai OAE Column Storage Driver Project

    Hello, I am Aadish Kotwal, a now final-year-entering computer engineering student from Mumbai University. This is the first time I have entered into GSOC program and was (and am) very excited to associate myself with Sakai. Sakai Foundation is a great open-source organization. I had been through the past year’s projects and the blogs and thought working here would be a great learning experience. I have been working with many of the technologies Sakai uses for development and working here gives me a very big platform to take my interests and knowledge to a bigger level. I am associated with Sakai OAE, which in their own words is “A completely new system that incorporates all of the values of the Sakai CLE, and reimagines a new vision for academic collaboration.

    My project is titled “Sakai OAE Column Storage Driver”.

    Put in Sakai’s words, Sakai OAE user content uses a storage mechanism based on a sparse map concept(for more on Sparse Map Content concept refer link [1]) representing column database type storage with a memory window onto the storage. This abstraction has allowed to create traditional RDBMS representations of the storage system with a MySQL driver capable of doing sharded storage over with 1 write/many read DB clusters. The original column driver was based on Apache Cassandra which need some updating to keep it in sync with the latest developments, and Sakai would also like to create a driver for another column DB (eg HBase, Raik, Mongo, CouchDB, etc or some network protocol approach, eg protocol buffer, thrift).

    This idea involves modifying the existing Cassandra driver(why Cassandra? See link [2]) Sakai uses to include all the features present in the JDBC driver and then to create a new driver for a database which will be decided during the term of the project.

    I have been in regular discussions with Ian Boston(my mentor). Based on his guidance, I came up with an analysis and a flow of the project which is described below.

    What we currently have:
    Cassandra driver for the sparsemapcontent with incomplete implementation

    What I aim to achieve by the end of GSoC term:
    A complete Cassandra driver and a new driver for a NoSQL database implemented from scratch.

    The project flow which has been framed after discussion with project mentor is as follows:

    • Finding all the methods and unit tests that require implementation and completing them.
    • Working on the analysis of new driver.
    • Start with coding API for the new driver with a structure similar to that of existing NoSQL driver. Also take feedback after completing this phase if any additional features specific to this database are expected.
    • After finishing with a working API, I would start with the soak tests and will test the results by implementing it on local machines.
    • Implement unit tests for the new driver to test functions such as content-addition, deletion, etc. on a local instance of database.
    • Write integration tests for the new driver to check if it works well with the existing implementation of sparsemapcontent.
    • Document the new driver and the implementation details at the confluence.


    I have started working on technologies and codebase and have understood the basic structure. I plan to finish the entire learning phase prior to the coding stage and will also try my best to complete work on the existing database driver as early as possible so that I get more time for analysis and thoughts on implementation of new driver.

    Progress till date:

    1. My first task was to get serialization issues of Cassandra to be sorted, and this being my first task, Ian guided me wonderfully through it and made sure I stick to Sakai standards while focussing on efficiency. The task essentially was to write methods to convert an Object to ByteStream and vice versa. A quick link for the same for interested is: https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/types/Types.java

    2. My second task was to implement indexing for efficient retrieval. This too under Ian’s guidance got implemented. This task included to find columns that were supposed to be indexed. The implementation links for the same are:

    a) https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra/CassandraClient.java

    b) https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/storage/cassandra/CassandraClientPool.java

    c) https://github.com/ieb/sparsemapcontent/blob/master/src/main/java/org/sakaiproject/nakamura/lite/ConfigurationImpl.java

    3. My third task includes implementation of find on the Cassandra driver. The task is still under way.

    My primary interest is to create a product of great significance which would be useful and accepted by the entire community.

    A note on my mentor (Ian Boston):

    GSOC on onset seemed very intimidating, but it was Ian’s support which really held me through. A thorough, detailed-oriented person, Ian has always been supportive and encouraging in writing efficient codes. The fact that such a busy man explaining the concept in so much detail really enthrals me. Any mistake and Ian not only rushes to correct me, but also shows alternative and better approach of implementation. Working under his guidance is going to be really fruitful this summer, and not to mention fun.

    I will soon post of any further progress, and of course would love comments. My e-mail address is kotwal.aadish@gmail.com .

    Looking forward for an awesome summer... :)

    Links:

    [1]: https://confluence.sakaiproject.org/display/KERNDOC/Sparse+Map+Content+-+Developer+Information

    [2]: http://oreilly.com/catalog/0636920018537

    Wednesday, 1 June 2011

    Sakai OAE native mobile app

    First of all, I would like to introduce myself, I am Mayte Giménez a student of Computer Science and Fine Arts from Spain. I am doing my specialization in languages and artificial intelligence. I have been working with Sakai for the last 3 years as scholar with David Roldán (recently named fellow, big kudos for him!), and Sakai gave me this big opportunity to develop a mobile application for Sakai OAE.

    Before I will start talking about the project, I would like to say how impress I am about the big work the community have done with this branch of Sakai. The architecture is really strong and all technologies used are awesome.

    So, let's talk about the GSoC project!
    During this summer, I will develop, with the big help of Carl Hall, a mobile application for Sakai OAE. After research our different options, we are going to develop a native application for the main mobile platforms: Android and iOS. So I will be switching from one environment to the other every week.
    Since Sakai OAE services returns JSON we can take advantage from native application, specially with the Android background services. (I still have to investigate with iOS, any help?)

    I have created some mock ups about how the application should look like. These are my two proposals:


    Mockup 1:

    • Login window
    • If login is correct we arrive to my dashboard, where we can select where to go. If the user selects "My membership" he will get a list of places where he can access and when he selects one site he will see the information about this site.
    • If the user selects "My profile" he will see his profile and he could edit it.




    • Mockup 2:

      • Login window
      • If login is correct we arrive to my dashboard, where the user will see some tabs with all the basics of sakai oae. First tab will be the profile, and he will be able to edit his profile. If the user selects "My membership" tab he will get a list of places where he can access and when he selects one site he will see the information about this site.
      • If the user is at "My profile", and he press a button (in Android: menu button, in iOs I should investigate which one will be better) he will see all the options of his profile and he could change the view.




      I would love to have some feed back about these. So please comment! :)

      Quite big for a short introduction, isn’t it? Well I won’t bore you much more.

      I have began with the configuration screen on the android environment, so I will post soon about it.


      Thanks for reading. Please, comment. And we see us soon.




    Improve Sakai CLE WebDav Support

    Hello,I am Manoj Inukolunu a 4th year student(graduated) from Bits-Pilani Goa, India.

    My project is to rewrite the existing sakai CLE webdav code for better maintainability using Milton.

    Milton is a great choice because its open source,it has great support(the mailing list and the author of milton are very helpful).The main problem with the existing code is maintainability due to its large size. All the code is written in a single class and its pretty old based on an older tomcat version.
    with milton we dont have to worry about maintenance as it handles all the bookkeeping .We only have to implement the interfaces for the functionality.milton is agnostic about the nature of the data.
    From my understanding I created 4 classes SakaiFolderResource which implements the FolderResource(com.bradmcevoy.http.FolderResource) SakaiFileResource which implements the FileResource(com.bradmcevoy.http.FileResource) and SakaResourceFactoryImpl which implements the ResourceFactory(com.bradmcevoy.http.ResourceFactory) and a helper class SakaiDavHelper for code re-usability.

    Finally the best place for ideas is the confluence page and I can always be reached at manoj0011989@gmail.com for any query's

    Sunday, 29 May 2011

    Cross Platform Mobile Application for Sakai CLE


    First, I would like to introduce myself. I am Kasun Lakpriya Hettige from Sri Lanka, following a computer science and engineering degree in University of Moratuwa. I am willing to do my higher studies in Software Engineering field.

    For those who are not heard of the project here are few links:

    Idea of this project is to build an mobile application for Sakai CLE to use in many kinds of mobile platforms like Android, iOS, BlackBerry and etc. For this we are using a cross platform library called phoneGap. More details about phoneGap http://www.phonegap.com/.

    Tools and technologies
    Though the app is going to be ported with different platforms due to some limitations I am developing for Android to test in emulators. Here are my working environment details:
    • Eclipse (3.5 or higher)
    • Android SDK
    • ADT plug-in
    • MDS AppLaud 1.2 PhoneGap for Android plug-in - This is optional but useful due to its inbuilt,
      • phoneGap support
      • HTML, JS and CSS project support
      • Touch-Optimized UI frame support for popular jQuery mobile and Sencha Touch JS libraries at the moment
      • All in one support is a big plus for me
    NOTE: To use AppLaud you need Eclipse Helios.
    As discussed with mentor I will be moving forward with jQuery mobile for now. Here are few screens of the app. 
    Your ideas, comments are welcome all the time and will really helpful to come up with a nice product. And the best place to collaborate and to get more information about the project would be the above mentioned confluence space. I will be posting here with the progress and the things I will get to know in the meantime. So I hope that anybody who is willing develop mobile apps using these technologies will find this interesting.

    Thanking Charith for helping hand with Photoshop and Avinash for some sample screens! :-) 

    Tuesday, 10 May 2011

    Sakai Fellows 2011 announced

    Carl Hall has just been made a Sakai Fellow for "exceptional contributions to the community".  Congratulations Carl!

    Impressively for our 2011 Sakai GSoC projects, I'm pretty sure Carl's elevation means that all five of our mentors are Sakai Fellows.  You can't buy training like that..

    Brief bios of the 2011 Fellows can be found at  http://www.sakaiproject.org/sakai-fellows

    Wednesday, 4 May 2011

    Largest ever number of students accepted!

    Huge congratulations to all FOUR of our successful applicants, all of whom impressed our mentors with their combination of skill, experience, enthusiasm and ideas.

    Mai Giménez: Sakai OAE native mobile app
    • Mentor: Carl Hall (Hallway Technologies)
    • Mai is a final year student of computer science at the Polytechnic University of Valencia, Spain.  Mai is a great communicator and is actually returning from a related project in Sakai CLE last year so will be hitting the ground running.



    Kasun Lakpriya: Sakai CLE mobile app

    • Mentor: Steve Swinsburg
 (Australian National University)
    • Kasun is a final year student at the University of Moratuwa, following a computer science and engineering degree. Kasun is massively enthusiastic about this project and has the distinction of being our first GSoC student from Sri Lanka.


    Aadish Kotwal: Sakai OAE Column Storage Driver

    • Mentor: Ian Boston (University of Cambridge)
    • Aadish impressed us immensely with his pre-application research and is probably ready to get started right now.  He is a fourth-year Computer Engineering student at the University of Mumbai, India. 

    Manoj Inukolunu: Improve Sakai CLE WebDAV support
    • Mentors: Anthony Whyte (University of Michigan) and Seth Theriault (Columbia University)
    • A fourth-year CS student at Birla Institute Of Technology and Sciences (BITS), Pilani, Goa, Manoj is also returning from last year.  This time around though he couldn't have a more different project, or one with a better chance of wide deployment.  We're counting on you, Manoj!

    Big kudos to all our other applicants also - several of the projects this year had more than one outstanding application and it really wasn't easy for us to choose.  Four slots is what Google have given us though and we're really grateful for all four of them, especially as that's the most slots ever for Sakai.  

    Between now and May 23rd the students will be getting to know the Sakai project and community and talking to their mentors to flesh out their plans and prepare for the main project phase.  These projects aren't just fixing bugs; they're breaking new ground with improved and extended functionality.  It won't be enough simply to write code - the students will have to produce code which is useful and maintainable enough that others will take it on even when GSoC is over, as users and as maintainers. It's no mean challenge and they'll need to draw heavily on their mentors' experience to be successful.

    So that everyone can see how they're getting on I'll be asking the students (and mentors!) to post updates here, starting with introductions, but expect to see them in JIRA, Confluence, IRC and the mailing lists as well.