From Fedora Project Wiki

Integrate Proxy Settings and Network Connections(Locations)

Contact Information

Why do you want to work with the Fedora Project?

Fedora is a powerful operating system based on the Linux kernel. Under the Fedora Project include very successful open-source software releases such as NetworkManager, Policy Kit, FreeIPA, SELinux, HAL, D-bus, PulseAudio etc. As I hope to become a network engineer in my career in the shortest time I can with the real experiences, I believe Fedora Project is the best place for it. Because I can see a clear path to achieve my targets especially under the NetworkManager. Even though I won’t be able to do the GSoC 2012 I want to contribute with Fedora to improve the technical and communication skills.

Do you have any past involvement with the Fedora project or with any another open source project as a contributor (if possible please add some references as well)?

  • No

Did you participate with the past GSoC programs, if so which years, which organizations?

  • No

Will you continue contributing/ supporting the Fedora project after the GSoC 2012 program, if yes, which team(s)/area(s), you are interested with?

  • Yes,

BZR Python-Fedora Package(bzrpython-fedora)

Why should we choose you over the other applicants?

  • Because I’m so much interesting about networking and to be a good network engineer is my only dream. I have some experience in network programming using Java, Python, C and I successfully followed CCNA in 2011 December. Also I’m a very friendly person.

Proposal Description

An overview of your proposal

According to the project description, the summarized idea is to create a network connection stably and less involving the user. For the wireless system this is like roaming when user cross the networks, detect the new network and using the database automatically connect to the new network without involving the user.Here are some facilities which I hope to implement,

  • Data base to store the network profiles
  • User Interfaces to enter proxy settings
  • Pop up windows to notify when changing profiles
  • Separate user interfaces for wireless and wired connections
  • User friendly environment

The need you believe it fulfills

  • To achieve my target I want to improve my Python and C knowledge. Especially about the package python-take-bilinear-pairing.

Any relevant experience you have

  • As an undergraduate I have some good experiences about network programming using Java, C and Python. I have developed some client-server protocols such as Go-Back-N, Selective repeat etc. Also I have the basic knowledge of configuring routers, configuring switches, MySQL, Shell scripting and IPv6.

How do you intend to implement your proposal

  • When Wi-Fi adapter detects another network, network manger should check whether it is defined in the database or not. Then it should calculate the signal strength of both signals. If and only if the strength of new signal is greater than the current signal should change the network profile of the current network to the new network.. A very high-level view I designed the following diagram which depicts about the solution.

Actually to act as a roaming system(without disconnecting) all the access points should be in the same subnet. If not to act like that we can temporary store the current port numbers and then disconnect the connection. After that we can create new sockets for the new subnet using previous stored port numbers and then establish the connection.

  • For wired connections as describe in the project idea it is enough to get the domain name of the network. After detecting the network connection, using the domain name can be selected the appreciate network profile and connect to the network using its proxy settings. I think Python or C are the best languages to implement this.
  • Because these are some special features of NetworkManager and it can be used as a separate application, I hope to implement these features using its source files.

Final deliverable of the proposal at the end of the period

  • Modified NetworkManager according to the requirements.
  • Documentation.
  • Video demo about “how to use new features”.
  • Tutorial for those who are interested to learn how we modified NetworkManager.

A rough timeline for your progress

  • 23th April - 20rd May :-

Finalizing the technologies to be used with mentor and the community,Finalizing the deliverables with community,Report - 01 to Fedora GSoC blog.

  • 21rd May - 28th May:-

Creating the database,Finishing UIs (might need to add some more later),Report - 02

  • 29th May – 1st July:-

Developing the required implementation for the Wi-Fi connections,Discuss the implementation,Report - 03

  • 2nd July - 8th July:-

Testing and finalizing the Wi-Fi task,Report -04

  • 9th July - 13th July:-

Preparing for mid evaluation,Get the feedback from community,Submit work for mid evaluation,Report - 05

  • 14th July – 4th July:-

Developing the required implementation for the wired connection,Report - 06

  • 5th July – 12th August:-

Testing and finalizing the wired connection task,Discuss the implementation,Testing the entire implementation of NetworkManager,Report -07

  • 13th August – 24th August:-

Code clean up,Documentation,Other deliverables discussed at the very beginning,Submit the work for final evaluation,Report - 06

Any other details you feel we should consider


Have you communicated with a potential mentor? If so, who?