Name: Anshu Kumar
Email: firstname.lastname@example.org, email@example.com
Skype Name: ansharyan015
IRC Nick: Anshu
Homepage URL: http://anshukumar.zxq.net
I am Anshu Kumar, an undergraduate student and an avid developer. I am currently pursuing my Integrated Dual Degree in Computer Science and Engineering at Institute of Technology, BHU, India. I am enthusiastic about open source projects and open standards and want to be a part of open source movement. I like to play cricket and roam around in my free time.
This project involves making a number of drizzle plug-ins dynamic, so that they don’t require restarting Drizzle to change their settings (options and variables).
The targeted high level goals for this project will be
1. Dynamic Plug-ins – Currently, in the Drizzle codebase, only 2 plugins are dynamic, query_log and auth_schema. Other plugins require restarting drizzle in order to change their configuration. This feature will target at making some more plugins dynamic, so that their behavior can be changed dynamically by changing their variables.
It will consist of
- default config or default values. There will be some default settings for each of the plug-in. Drizzle will start with those default values only.
- ability given to user to dynamically change the plug-in configuration. So, even if the default configuration is ridiculous and don’t suit some users, they can be reconfigured, without having to take the pain of restarting Drizzle.
2. Look and Feel – The plugins were developed by different people at different times, so their looks and feel is not uniform. This goal will target at making their look and feel a consistent, so that new users don’t have to learn each plug-in separately.
3. Namespaces – Namespaces in current plug-ins are not consistent. While making the plug-ins dynamic, the focus would also be on making the plug-in namespaces consistent.
The work will be done by picking up a plug-in at a time and doing what required to done for that particular plug-in in order to make it dynamic. Below is a list of plug-ins with their respective development strategies
1. Filtered_replicator : This plug-in filters replication events based on schema names and table names. Even if Drizzle is started with this plug-in, there are some initial configurations which need to be set while starting it. There is a requirement for dynamic variables, so that Drizzle can be started with some default settings and these variables can be set afterwards.
2. Regex_policy and Auth_file : Regex_policy is an authorization plugin which uses regex pattern to match policies. Once Drizzle is started with this plug-in, if the administrator wants to change the policy file, the new policy won’t be effective due to the static behavior if the plugin. Policies are loaded in the system, only when Drizzle is started. It would be modified to reload the regex policy file dynamically so that the corresponding changes in policy are reflected immediately in the system without restarting Drizzle. There would be a reload variable which will be used to dynamically reload the policy file. After changing the policy file, making the status of reload to true will reread the policy file and stores it. The value of reload variable will be set to false from the code itself to reflect that the policy file was reloaded.
Auth_file is an authentication plug-in that authenticates connections using a list of username:password entries in a text file. Here also, once Drizzle is started, changes in the users file are not reflected in the system. This would also be made dynamic by implementing auto reload of users file upon any modification. Same kind of development strategy will be followed as was followed for regex_policy plugin.
3. Syslog, logging_query and logging_gearman: This plug-in handles the interface for query logs, error messages and functions. This plug-in defines its own set of variable specifying the behavior of logging of different logs into syslog. But this behavior cannot be changed dynamically. These variables would be made dynamic so that the logging behavior can be changed at runtime. There will be some handler functions for each of the variables which will be made dynamic and when they are changed dynamically, the handler function will ensure that the proper action takes place after changing them.
Logging_gearman and Logging_query module enables the logging of queries to a gearman server and to a CSV file respectively. The behavior of plug-in variables will be made dynamic so that they can be changed at runtime and the corresponding behavior change will appear immediately in the system.
4. Auth_http and auth_ldap : These are the authentication plug-ins respectively which are used for user authentication on basis of HTTP URL authentication and LDAP authentication respectively. The server support would be made dynamic so that the respective variables can be dynamically changed. Handler function will be attached with each of the dynamic variable which will handle the required changes which needs to be done upon changing that variable.
5. Memcached_stat : This plug-in provides memcached server statistics as INFORMATION_SCHEMA tables. The respective variables corresponding to the plug-in would be made dynamic so that they can be changed at runtime and the changes start to appear without the need to restart Drizzle. Also there is no default value added to the variable. There would be a default variable which can be changed later having drizzle started up.
6. Rabbitmq and zeromq : Making rabbitmq will involve making the attached variables dynamic so that all the settings like the hostname, port and name, password, etc can be configured at runtime and this way the replication events can be controlled for the Drizzle. This would involve some more complex work as compared to other plug-in as here we will have to dynamic establishment of connection to a Rabbitmq server after changing the variables.
Making zeromq dynamic will involve the similar approach for making the zeromq endpoint dynamic for changing the endpoint (to expose public transactions) dynamically.
Additionally, the ‘look and feel’ and namespace issues of the plug-ins will be handled together while doing the modifications for making them dynamic so that it would not require any more effort doing all these.
Schedule of Deliverables
Pre project period: Understanding codebase of Drizzle and understanding the plug-in architecture of Drizzle. This will broaden my knowledge about how to modify the plug-in to get the thing done. This period will also involve some brainstorming of ideas with mentor to come to the most optimal solution for each of the plug-in. Towards the end of this period, I would be able to determine how to make them dynamic.
Week 1: Filtered_relicator plug-in would be made dynamic. This period will also involve understanding the capabilities of this plug-in to make the dynamic thing sensible. Testing will also be done for this. Towards the end of this period, this plug-in would be made dynamic.
Week 2-3: In this period regex_policy and auth_file plug-ins will be modified. In both the plug-ins, the requirement is the same, so I will be doing them in the same time slot. Towards the end of this period, both of these plug-ins will be ready to be called as dynamic.
Week 4-5 : In this period, all the logging plugins, i.e. syslog, logging_query and logging_gearman will be made dynamic.
Week 6-7 : Memcached_stat plug-in will be concentrated upon. Server would be made dynamic. This period also includes some buffer time, because things may go in wrong directions. This buffer time will be used for backup.
Midterm Evaluations: Nearly 70% of the work would be done upto this.
Week 8-9.5: Auth_http and auth_ldap will be handled in this slot. This will involve some complex testing as both of these modules are related to authentication. By end of this period, both of these will be made dynamic.
Week 9.5-10: This period will involve understanding the architecture of rabbitmq and zeromq. Additionally, these plug-ins will be made dynamic by end of this period.
Week 11: This period will consist of final testing of plug-ins modified. Bugs shall be fixed and final deliverable will be made ready. Additionally, final changes and documentation will be done.
Apart from this, weekly progress report to the mentor shall be submitted.
My OpenSource Contribution
My OpenSource contribution started off with Drizzle itself where I fixed a bug. The submitted patch was accepted and merged with the main branch.
After this, for having a detailed overview of this dynamic plug-in project, I started off with making the regex_policy plug-in dynamic. Thread was used to check continuously for modifications in a file and if file is modified, then it is reloaded. This particular branch can be found here.
Reasons for picking this project
I am enthusiastic about working in an open source project this summer and I feel that my contribution towards Drizzle by this project will provide me the desired experience and learning opportunities.
Most importantly, I have the knowledge of what this project demands. With my earlier coding experience with Drizzle, making the regex_policy plugin, I have explored the Drizzle codebase to a large extent and I know how things are working. Additionally, my past experience with C++ and database concepts will help me to meet the demands of this project.
I do not have any summer jobs or any other plans for this summer. I am ready to dedicate all my time this summer to GSoC and put in as much time as required to complete this project in allotted time. I will be starting the work 2 weeks prior to the official date of commencement of GSoC ’12. I assure you that I will work for atleast 7 hrs a day to complete the project comfortably within the deadline.
1.Web based software for Hotel Management
Developed a central system that will help management of a group of hotels by a central authority to provide complete concoction of solutions to all hotel management problems like financing, accounting, inventory management etc. In addition to general hotel management features like room reservation etc, following were also implemented:
a.Implementation of IVRS using Ribbit voice API. Room could be booked through IVRS also. SMS and Email features were also integrated using this API.
b.Flexibility in creation of graphical and statistical report for any particular hotel by the central authority.
c.Creation of complete database backup using user interface into database dump, xml, excel sheets or csv.
Exposure: UML, J2EE, XML, e-Forms, AJAX, Web 2.0, Web Services, SOA.
Experience: This project was done in a team of two and the aim was to learn software engineering principles. This project was selected for Face to Face evaluation round of The Great Mind Challenge organized by IBM Academic Initiative.
Project Partner: Mohit Srivastava (firstname.lastname@example.org)
Project Mentor: Dr. R. S. Singh (email@example.com)
2.Partitioning graph to speedup Dijkstra’s Algorithm
Dijkstra’s Algorithm is a graph search algorithm that solves the single source shortest path problem for a graph with non-negative edge path costs, producing a shortest path tree. This graph is often used in routing. The aim of this project was to speed up the running of Dijkstra’s algorithm. Bidirectional search was implemented for this purpose.
Exposure: Graph algorithms
Project Partners: Akash Nawani (firstname.lastname@example.org) and Mohit Srivastava (email@example.com)
Project Mentor: Dr. B. Biswas (firstname.lastname@example.org)
3.Implementation of Stream KM++
This was an extension of KMeans clustering algorithm that can be applied to data streams. This algorithm made use of two techniques
a.A non uniform sampling approach similar to the seeding procedure in K-Means++ is used to obtain small corsets form the data stream. Unlike other coreset constructions, this construction is rather easy to implements and unlike other corset constructions; its runtime has only a low dependency on the dimensionality of the data.
b.A new data structure called a corset tree was proposed. The use of this corset tree significantly speedup the time necessary for the non-uniform sampling during the corset construction
Exposure: Graph Clustering and Distributed Data Mining
Project Partner: Mohit Srivastava (email@example.com )
Project Mentor: Dr. K. K. Shukla (firstname.lastname@example.org)
4.Web Based Software for Internet Banking System
Internet Banking System is an online comprehensive solution to manage internet banking. It shall be a system that will be available to customers having a valid username and password to avail banking facilities such as fund transfer, managing their account, request for cheque book, bill payments, request for demand draft and many more.
a.Ext JS was used for designing of complete portal. AJAX was used extensively for grid reloading. Tabbed interface was implemented so that user can work on multiple things at a time.
b.HighCharts API was used to create graphical reports which provide facilities for easy reloading and saving the chart in various formats. Jasper API was used for statistical report generation.
c.IVRS was implemented using Ribbit voice API.
Exposure: UML, J2EE, XML, e-Forms, AJAX, Web 2.0, Web Services, SOA, Ext JS
Experience: This project was done in a team of 4 and main aim was to polish our software engineering skills. This project was selected for Face to Face Evaluation round of The Great Mind Challenge organized by IBM Academic Initiative.
Project Partners: Akash Nawani (email@example.com), Mohit Srivastava (firstname.lastname@example.org) and Vikas Singh (email@example.com)
Project Mentor: Dr. B. Biswas (firstname.lastname@example.org)
5.Intern at OpenLifeCycle
OpenLifeCycle is a company which is into its early startup phase and is into the business of creating some Application LifeCycle Management tools. I joined here in last summer as an intern for PHP developer. The work mainly involved creating of frontend of some of their applications and writing some backend code for a few of them. Apart from this, I was involved in
a.Development of framework for AAAC (authentication, authorization and access control) so that only users having respective rights can access the resource. This involves implementation of CRUD rights for users.
b.Testing team of the complete application.
Exposure: PHP, XML, AJAX, JQuery, SimpleTest, SVN.
Experience: During my phase in the company I came across many tools which are used for managing projects in an organization. Apart from ReviewBoard and BugZilla which were used for code review, I used Hudson server for automating the build, Hiphop server for building PHP code, User Friendly SVN for repository management, Docuwiki for documentation purposes, etc.
Technical Skills and Experience
Programming Languages: C, C++, JAVA
Database Technologies: MYSQL, IBM DB2
Operating System: Windows, Linux, CentOS
Application Servers: Tomcat, Websphere, Apache server
Tools: ReviewBoard, BugZilla, Hudson, Hiphop, Buggennie, DocuWiki, USVN.
Others: NetBeans IDE, Eclipse IDE, Visual Studio IDE, SubVersion.