This is the final round up of the work I did for my Google Summer of Code project – “Autosuggestion of Search Engines” for Mozilla Firefox. It was a great experience.
The module initiates with the launch of the browser and raises notification when it finds that you have been submitting some search forms. The GUI part of it has not been implemented yet, as it was one of the non-goals of the project. The algorithm that I had proposed has been completely implemented. The code has test coverage for operation of the algorithm and to check for the proper functioning of the disk I/O.
The raised notification can now be used by any of the modules in the Firefox code to do something. I have kept the documentation of the module in the Mozilla Wiki.
It was a great experience, and I plan to work on all the follow up bugs that come up for the module. My patch is up for review at Bug 335448 and will merged to the source tree after that.
I would like to thank my mentor Matthew Noorenberghe of Mozilla, for giving me all the advice and support for the project, tips on improving performance and code quality.
Today is the soft pencils down date for GSoC 2013. My work is almost done. From the last update, I made some changes to the following things:
- Removed a lot of unnecessary methods and clubbed many of the functions into a single one. So now the code is more manageable.
- Add a few browser preferences to toggle Autosuggest Search Engine feature on and off.
- Saved a lot on the I/O front. Now the module will save to disk after every 5 minutes to prevent a lot of disk I/O. It will also save the data just before the browser is closed.
- Better tests – now has tests to check if the disk I/O functions are behaving properly and also if the most likely search field element is being predicted correctly.
- Also got my patch reviewed by Gregory Szorc [:gps], to get feedback on the build front. A lot of boilerplate in the Makefile has thus been reduced.
It has been a long time since the last update! The project has shown a lot of progress since then.
- The algorithm for detecting the form submissions and detecting heuristically whether it is a search form now works perfectly (according to what I had proposed initially).
- I struggled for sometime on integrating the frecency metric for a website from the Places API. But now this is done, and it checks against the frecency score of a website before marking it as a positive result. Simply put, we now measure how frequently you have visited the website and that will also be used to say whether the form is relevant enough to be a search form.
- I had written some basic automated mochi-tests for the mid-term evaluation. Now the tests are better, the pains of testing the algorithm is over. Yay!
Progress is found in Bug 335448.
At the moment, when a positive result is detected, a notification is raised in the browser. Any consumer can listen to the notification to get information about the site that has been detected with a search engine. An ideal use case would be to implement a GUI to allow the user to add the website as a search to the browser. This was a non-focus goal for the project, so will be tracked by a follow-up Bug 879155.
I know, this update is coming after a long time. Here is a quick list of what works and what needs to be worked on:
- The basic form handling and score calculation works. It still not the exact algorithm that I had proposed, but we will get there.
- Right now I have been doing some manual testing. Will be writing automated test cases once the detection stabilizes.
- I haven’t started working on the UI front. I guess that would be once the above two is done.
You can track the progress of the work on Bug 335448.
The community bonding period is currently on, and I am talking to my mentor. We having trying to decide the nitty gritty details of the project.
Here is my original project proposal that I had submitted. We have also set up the tracking bugs on Bugzilla to track the progress of the work. Bug 335448 will be the main bug and any other depending bug will be added to this only.
There has been slight change of plans as well, we plan not store the user searches fully anymore, instead use the Places API that currently handles the bookmarks and history to extract our relevant information. We plan not use SQLite for data storage, but flat JSON files because now the data to be stored will be minimal. Also Autosuggest Search Engines will be a module in itself.
So that’s all for now! I’ll be posting the next developments here.
This summer I will participating in Google Summer of Code working on the Autosuggest Search Engine project for the Mozilla Firefox web browser. So I will begin by introducing myself.
I am Sankha Narayan Guria, (sankha93 on IRC), a second year from Indian Institute of Technology Jodhpur. I have been contributing patches to Mozilla Firefox project for quite sometime now, and recently I have been trying to work on a few bugs relating to implementing the ECMAScript 6 spec. You can find me on the channels #introduction, #developers, #jsapi, #devtools.
I will be trying to make searches from Firefox a bit more easier by automatically detecting whether you are doing a search or not when you submit a form and then present the user to add the search engine to the browser. A beautifully detailed description of the project has been written by Felipe in his blog.
I will be posting regular updates of my GSoC work on this blog. So stay tuned!
You can find all the GSoC related posts under the tag ‘gsoc‘.