Here's the current version of my proposal, just wondering what people's thoughts are.
Thanks everyone Aaron Maturen
Revamping phpMyAdmin to utilize MVC architecture Name:
Aaron Maturen Location:
Saginaw, Michigan, United States of America ( GMT -5 ) Education:
Pursuing BS in Computer Science & BA in French Email :
atmature@svsu.edu Website:
http://www.aaronmaturen.com Synopsis:
My proposal is to rewrite the architecture of phpMyAdmin with the model-view-controller(MVC) design pattern. With this pattern we will be able to separate all the code into three parts:
The Model. This is where the business logic goes. All the code to connect to the database resides here. If we code the adapter pattern here we could potentially give PMA the ability to work with other RDBMS with simple plugins. The View. This is where the template system goes. Implementing a complete template system and recreating themes for PMA is beyond the scope of the The Controller. Links the Model(all the data) with the View(what the user sees) Additional Design Patterns that could be implemented:
Singleton:
For handling sessions. makes sure that there is only ever one instance. Strategy:
For handling languages. allows different languages/themes to be easily interchanged. Prototype:
For handling the presentation system. Consists of concrete forms of presenting data for example; html, csv, pdf, svg, etc.
We can easily add an AJAX library into this to allow the MVC framework to utilize AJAX and be able to transfer data between the classes without a page refresh. Although it would be useful to have an AJAX library in the code, utilizing it for most things would be out of the scope of this proposal.
Benefits to the users: The MVC architecture will better support scalability and ease modification and maintenance(due to the separation of tasks). Also with the template system and business logic located in separate files comes the separation of the front and back end of the website; resulting in a more robust website.
The separation of the design and applications layers allow for increased levels of interactivity without compromising security. By using MVC Architecture and working in an Object oriented format, the website becomes increasingly modular where users can easily add new modules without disturbing the rest of the application. Project Details: A more detailed description. Deliverables: What will be the final output from your project?
Project Schedule: Week I (and before) - Start Breaking down phpMyAdmin into logical groups and design patterns. Publish my goals to PMA listserv and get feedback on my plans. Week II - Continue to break current code down in design patterns. Implement the MVC skeleton and start to implement user system. Week III - Language system. Implement strategy pattern to allow for localization. Since this is done before any text gets typed to be displayed we won't have to go back and re-implement it. Week IV - Database Connection/Manipulation. Start to implement talking to the database using the adapter and porting the existing code Week V - Continue Database porting. Week VI (MIDPOINT) - Implement template system. Week VII - Have MVC completed with all current functionality restored. Week VIII - Work on the presentation data to allow for different presentation modes: ie) web, print Week IX - Test current version. Finish any part needed for soft finish that ran behind. Week X - Soft Finish. Leave last 2 weeks for tweaking the application and fixing bugs. Week XI - Tweak App, Fix Bugs. Week XII (END) - Finish.
Time:
My only commitment this summer is my job at Audio Central Alarm in Saginaw, Michigan where I work as a dispatcher. Normally this entails sitting in front of a computer for 8 hours on third shift getting paid to do my homework. This summer I am not planning on taking any spring/summer courses so I am able to devote 50+ hours a week to this project.
Bio:
I started programming HTML in 2001 when I was in 7th grade, my friend got me interested in it. From there I kept trying different things; in 8th grade I vaguely remember dabbling with Java. When I got into high school in 2002 I joined the FIRST Robotics team and that first year I was on the animation team. After that year the only student who knew how to program was graduating so I sat down over the summer and learnt pBasic, a version of Basic for the Parallax BASIC stamp microcontroller. But, I never got a chance to use it. Soon as the next season started up they announced that they had switched controllers to Microchip’s PIC controllers, which were programmed in C instead of being programmed in pBasic. I continued to spend the remaining three years on the FIRST Robotics team programming in C. During this time I was also part of the Lemelson-MIT InvenTeam from my school where I programmed a vector-based autonomous field striper, and created a Socio-economic model for robots to follow which took 4th place at the Intel International Science and Engineering fair for team Projects. But, even though I spent a lot of concentration on those projects thats through High School it was around this time that I started diving deeper into web programming with MySQL, PHP, and CSS. And I’ve been playing with it since then. Experiences:
Recently I have been working on my own website using MVC architecture. It started out as a bet from my friend that I couldn’t make a site similar to facebook in a week. I did that but he argued that even though I had classes in my design that it wasn’t object-orientated. This inspired me to evolve the site to the next level with MVC architecture and design patterns. While its still and progress the site can be viewed at http://www.zoebabin.com and the source code for it can be found at http://www.aaronmaturen.com/mvc.zip. I have been using PHP and MySQL for 6 years now and I’m always trying to expand my knowledge on them. Currently I am studying for my MySQL 5.0 DBA certification which I am hoping to have by May. Also during this last semester I helped run a study group on design patterns where we went through the Gang of Four book and the Headfirst into Design patterns and went over 3 of the design patterns every week. Also I am currently working on a research project with biology professor, Dr. Gary Lange and a fellow student at Saginaw Valley State University where we are designing a program to record events in controlled lab experiments. We’re using Java to program it in order to ensure that the program will be able to be ported easily to several different operating systems. In regards to programs I have done for class; my favorite one was coding Dijksta’s shortest path algorithm into a flight management system. It was with this program that I was able to become the most comfortable with the standard template library in C++. Open source:
In preparing for Google Summer of Code for 2010 I started looking at projects that have been part of it in the past; mainly XBMC. I got as far as using svn to copy the trunk and install all of the dependancies for it to be compiled, but unfortunately before I was able to complete any pre-qualification tasks the projects were announced and XBMC isn’t one of them.
Aaron Maturen a écrit :
Here's the current version of my proposal, just wondering what people's thoughts are.
Thanks Aaron.
(Note to all students: you don't have to publish your proposal as this is your private stuff to be seen by the student, mentors and Google representatives).
My personal reaction to your proposal: unless your are a super-coder, wanting to convert all phpMyAdmin to MVC is too ambitious for 12 weeks. Also, even if you *can* do it, how do we blend your project with other students' projects?
Marc Delisle wrote:
My personal reaction to your proposal: unless your are a super-coder, wanting to convert all phpMyAdmin to MVC is too ambitious for 12 weeks. Also, even if you *can* do it, how do we blend your project with other students' projects?
Thanks Marc, Do you see a possible conversion to MVC in the future for pma? If thats the case, I've seen some proposals for integrating a template system (ie smarty) which is pretty close to what the view is. If thats the case the main thing to be done for MVC is the model which would be restructuring pma's business logic with OOP. If it's done with the adapter design pattern it could easily slide into back into pma to work with everything. PHP wouldn't know anything was different when calling all the methods.
If there is a template system integrated with pma, and we Object Orient the logic, then the final step to MVC would be the controller and getting them to talk correctly, which I would be more than happy to continue working on after this summer.
In your opinion would this be more feasible as a summer project? And what is your ultimate goal for the structure of pma?
-Thank you for your time Aaron Maturen
Aaron Maturen a écrit :
Marc Delisle wrote:
My personal reaction to your proposal: unless your are a super-coder, wanting to convert all phpMyAdmin to MVC is too ambitious for 12 weeks. Also, even if you *can* do it, how do we blend your project with other students' projects?
Thanks Marc, Do you see a possible conversion to MVC in the future for pma? If thats the case, I've seen some proposals for integrating a template system (ie smarty) which is pretty close to what the view is. If thats the case the main thing to be done for MVC is the model which would be restructuring pma's business logic with OOP. If it's done with the adapter design pattern it could easily slide into back into pma to work with everything. PHP wouldn't know anything was different when calling all the methods.
If there is a template system integrated with pma, and we Object Orient the logic, then the final step to MVC would be the controller and getting them to talk correctly, which I would be more than happy to continue working on after this summer.
In your opinion would this be more feasible as a summer project? And what is your ultimate goal for the structure of pma?
There is no definite plan about the ultimate structure of phpMyAdmin; however as you can see in the ideas list [0], templating and MVC are not there.
[0] http://wiki.phpmyadmin.net/pma/GSoC_2010_Ideas_List