Monday, 26 August 2013

GSoC 2013: Update

Ahh, it's really been a long time since I posted about the updates of my project. Well, it doesn't mean I stopped working on the project ;). Jokes aside, I have already cleared the mid-term evaluation and the Portfolio plugin project is going on well and is on it's way to completion in the next few days!

So, coming back to the updates, I have been able to complete major parts of the plugin. All the major milestones have been completed, and only a few bugs remain to be resolved. Major bugs resolved since the last update are as follows:
  • Dependence of the plugin on PECL oauth library removed.
  • Restored the original version of Evernote Library (The original library had to be hacked because of the dependence on PECL oauth library).
  • The user is not asked to re-validate his Evernote account repeatedly on each export.
  • The case where the user declines permission to access his Evernote account has been resolved.
  • XSS security issues while handling form elements have been dealt with.
  • Removed all the on* attributes from the HTML content which are banned by Evernote API.
  • UTF encoding errors while exporting the notes have been taken care of.
Many features have been also added during this period. The major ones are:
  • The users are now given the option of tagging their notes.
  • The attachments with the note can now be exported.
  • The embedded elements in the posts can also be exported.
  • The users can now also export individual files to their Evernote accounts.
But, a couple of major bugs still remain to be resolved. They are listed below:
  • The plugin doesn't work if the Moodle site is behind a proxy and needs to get access to the internet through a proxy server.
  • A solution is needed to avoid clashes between the Evernote Portfolio plugin and the Evernote Repository plugin.
I'll be working on the above mentioned bugs and some more smaller features in the next few days. I hope I'll resolve these issues soon and complete the project.

And yes, I'll be happy if someone joins in and tries out the new plugin! :)


Tuesday, 9 July 2013

GSoC 2013: End of Week 3 of Coding Period

Week 3 of the Coding Period of GSoC 2013 got over on Monday, 8th July 2013. After almost getting done with the first of the three major milestones for the project, this week was devoted mainly to a bit of testing, getting rid of the major bugs and the overall code improvement and optimization.

Firstly, there was a major bug in the plugin I had developed. It was working only on export of just the forum posts and not on other modules like exporting glossaries, chat sessions, etc. This point had for some strange reason just got out of mind while finalizing the Milestone 1. It was a minor bug and I have fixed it now.

So, this week I mainly tested out the plugin for different export conditions and the plugin was working well after the above bug fixing. I'm still to test the plugin in a couple of contexts like Database Activities, but I guess this plugin shouldn't come up with any problem in those tests. But I'll test them out soon and fix the bugs if any.

Also, I have now improved the code and have tried to follow the Moodle coding guidelines as much as possible. Now most of the code is according to the coding guidelines and I also optimized a couple of minor things in the code. So, this basically looks like a more finished piece of code for Milestone 1 of the project.

Now, I'll be proceeding for Milestone 2 of the project. As mentioned in the project doc, Milestone 2 would enable the user to export the attachments to their Evernote accounts. For a start, I've been successful in developing some sample test codes for enabling the users to export it to their Evernote accounts. So, I think I'll be ready with some raw code for the plugin as soon as by the end of next week.

So, my next week would be devoted to developing the exporting of the attachments feature for the plugin. More updates and progress about this in the next week!


Wednesday, 3 July 2013

GSoC 2013: End of Week 2 of Coding Period

Week 2 of the Coding Period of GSoC 2013 got over on Monday 1st July, 2013. And it gives me great pleasure to notify people that I've made a pretty good progress with regards to my project of developing a Moodle Portfolio Plugin for Evernote.

Till the end of last week, I had made a very basic portfolio plugin which was just creating a basic plain text note in Evernote in the default notebook of the user and with a predefined title of the note. Also, there were some problems in the portfolio which saw clashes with the Moodle Evernote Repository. I have now taken care of some of these issues.

The portfolio plugin now has the feature where the user can select the notebook he wants the note to be created. Also, the user now has the flexibility to define the note title for the note. And one of the most nice features is that the notes now retain some of the font effects of the exports instead of just the plain text notes that were created before. Although Evernote API doesn't support any CSS or style statements, I have tried to retain some of the Font effects by converting the CSS to the HTML format. And I am trying to retain as many font effects as possible by the above method.

But, I've still not arrived at a solution where the Portfolio API of Evernote doesn't clash with the Moodle Evernote Repository. I tried hard to counter the problem, but I am currently out of any feasible idea. The only solution now is to disable the Evernote Repository for the Evernote Portfolio plugin to work. It creates a hell lot of mess if you don't disable the Evernote Repository before enabling the Portfolio plugin. I hope to find a good solution soon.

As of now, I think I've completed the Milestone 1 as specified on the project wiki page. I'll now proceed to Milestone 2 after making some slight changes to the code.

Unfortunately, I just forgot to give the link of my project repository before on Github. The Github link is:

I would be glad to receive feedback if somebody tests out this repository!


Monday, 24 June 2013

GSoC 2013: Coding Period Week 1

The Google Summer of Code 2013 coding period started on 17th June 2013. As already mentioned in a post before, I was assigned to develop the Evernote Plugin for Moodle Portfolio.

And I have already made a good progress in the project. As mentioned on the project wiki page, the initial task would be to develop the initial version of the plugin which would just create a note in the Evernote account for the text only posts and discussions.

The project required a thorough knowledge of the Evernote Markup Language (ENML) and the knowledge of OAuth authentication and the Evernote API. I did face some initial problems regarding the OAuth authentication and the SSL certifications. But, I overcame them in some sample test codes I had developed and started developing the Moodle Portfolio plugin for Evernote.

And that is where the real problems started. The plugin used to clash with the Moodle Evernote Repository I had installed on my Moodle account. I struggled to find the source of the problem for a good couple of days, before I finally got a hang of the problem. I had to disable the Evernote Repository in order to get the plugin working properly. Till now, I haven't found any solution to the problem except changing the Evernote Repository as well. In my opinion, changing the Evernote Repository is absolutely essential because the libraries of the Evernote Portfolio and Evernote Repository are clashing and hence causing problems. And I'm not in favor of making my Evernote Portfolio dependent on the Evernote Repository libraries as this will definitely cause problems if a user hasn't installed the Evernote Repository but is using the Evernote Portfolio Plugin. So, for now, I've kept my Evernote Repository disabled.

But, apart from that I've made a really good progress in making the notes in the Evernote account. The plugin now is able to convert the HTML format of the text only posts and discussions and is able to create a new note with a fixed title (this is currently defined in the code) in the default notebook. But, the text currently being exported is just plain text and all the formatting is removed for creating the new Note  in the default notebook.

The next steps for me would be to give the user the power to choose his own note title and the notebook for the new note to be created and also to ensure that the formatting of the text is not removed for the Note. Hopefully, I'll be able to that in the next week or so and hopefully I'll be able to achieve the Milestone 1.0.

I'll post more about the progress on the project next week! :)


Wednesday, 12 June 2013

GSoC 2013: Moodle Portfolio Plugin for Evernote

It was indeed a dream come true when my proposal was accepted for the Google's annual flagship program, the Google Summer of Code 2013. This is indeed a huge opportunity for me to work with some of the best software developers and also contribute to the dynamic world of open source software. Under this program, I'll be working with Moodle under the guidance of Frédéric Massart.

The project is to develop a Portfolio Plugin for Evernote in Moodle so that the users can upload and share the content in Moodle to their respective Evernote accounts. A large number of people use Evernote in their day-to-day activities, especially people in the education sector. Many teachers and students around the world use Evernote to share their notes. Currently, Moodle has a plugin (repository) from where the users can download their files from Evernote. The Moodle Portfolio plugin currently has plugins for popular services like Google Drive, Flickr, Dropbox, etc. to upload the content to the user's respective accounts on these services, but not for Evernote yet. My task would be to develop the Portfolio plugin for Evernote over a period of next 3 months.

And on top of it, these are exciting times for the Moodle community as well as Moodle 2.5 Stable version has just released. So, all in all, it's an exciting project to work on and I hope to have a great time working with Moodle. Exciting times ahead! :)