GSOC 2012/Student Application thomk/IntegrateProxySettingsandNetworkConnections(Locations)

Proposal Description
I would like to work on one of the proposed project, Integrate Proxy Settings and Network Connections(Locations). I have developed applications with networking aspects multiple times. I always enjoyed working on these projects a lot and therefore I feel this experience will help me while working on this project. Therefore I would very much like to work on the "Integrate Proxy Settings and Network Connections(Locations)" project.

An overview of your proposal
As the project of my choice is on the summer coding ideas page I will refer to this page since there is no way I could give a better overview at this point than the one that is given there.

The need you believe it fulfills
I think implementing this project would fullfil a large need. A lot of businesses need specific networking settings. Since it would waste a lot of precious time to manually configure the required settings every time a user changes places, it is desirable to have this done automatically. For me Fedora is all about stability and user friendliness once it has been correctly configured. Therefore in my opinion this would be a very important addition to further increase the user experience.

Any relevant experience you have
As stated before I have the following relevant experience.
 * Experienced in developing object oriented applications.
 * Experienced in using C++, C#, Java, php and python.
 * Experienced in writing and documentation.
 * Experienced in developing applications with networking capabilities.

How do you intend to implement your proposal
From what I can tell now, an implementation would probably result in an addition on the current code base of the network manager. This would be best described as an extension on the current application. This extensions should be able to provide the functionality to set up settings profiles. It should automatically retrieve the current network and determine the corresponding settings profile based on this information. At this point I think it would be quite neat if, for instance, it would be possible for users to add/edit a settings profile for the current network where the network is automatically retrieved. The implementation should basicly automate as much as possible taking as much burden of the end user as possible. That being said, everything should be fully configurable when desired. For instance it should be possible to add settings profiles based on a network identifier that is provided manually. Functionality like this would be quite valuable for experienced users like an IT department that is in charge of preparing the device.

Even though at this point I have a lot of ideas for the implementation, in the end I will first have to properly research the current code base and functionality with which I would be working before being able to determine the precise implementation and possibilities.

Final deliverable of the proposal at the end of the period
The final deliverable at the end of the period would be an extension of some sort providing the following functionality.
 * Set up setting profiles in an easy to understand way.
 * The extension should be automated as much as possible.
 * Experienced users should be able to configure everything there is to configure.
 * GUI interface as well as terminal.

A rough timeline for your progress

 * April 23: Hopefully get selected for the project(Thumbs up).
 * April 24 - May 21: Getting started, reading into the current code base, exploring the possibilities, first version of the extension architecture.
 * May 21 - July 9: Completing architecture, start the implementation, starting the documentation.
 * July 9 - July 13: Mid-term evaluations.
 * July 13 - August 13: Proper testing, finalizing implementation, finalizing documentation/
 * August 13: Finalize project.

Have you communicated with a potential mentor? If so, who?
I have mailed some questions to the mentor Dan Winship who was able to help me. I have also communicated with the contact for this project for additional information.