Skip to content
Himanshu Mishra edited this page Mar 2, 2015 · 14 revisions

About NetworkX

NetworkX is a software package for the creation, manipulation, and study of the structure, dynamics, and function of complex networks. With NetworkX you can load and store networks in standard and nonstandard data formats, generate many types of random and classic networks, analyze network structure, build network models, design new network algorithms, draw networks, and much more. The potential audience for NetworkX includes mathematicians, physicists, biologists, computer scientists, and social scientists.

NetworkX is written in pure Python. Python is a powerful programming language that allows simple and flexible representations of networks, and clear and concise expressions of network algorithms (and other algorithms too). Python has a vibrant and growing ecosystem of packages that NetworkX uses to provide more features such as numerical linear algebra and drawing. In addition, Python is also an excellent “glue” language for putting together pieces of software from other languages which allows reuse of legacy code and engineering of high-performance algorithms.

Communicating with NetworkX

NetworkX’s development community is largely open and informal. Briefly introduce yourself in your first Issue or Pull Request if you prefer and dive in!

You are expected to use GitHub issues and pull requests for all code-related discussions so that not only your mentor but also other developers and users can get involved. For other issues such as mentor–student relationship, performance review, etc., where a necessary degree of privacy is expected, use emails.

While your mentor will try to respond to your messages as soon as possible, please understand that he/she may not be available every day.

Writing your application

GSoC 2015 Application Template

Getting started with NetworkX development

Before you start

Before you start developing code for NetworkX, make sure that you are familiar with Git and GitHub. Consult the Pro Git book and GitHub Help for any needed information. You are expected to send in your code contributions as pull requests. Your mentor and other developers will review them, request changes and merge them into the main repository.

To develop code for NetworkX, you need both Python 2 and Python 3 as NetworkX aims to be compatible with all currently supported versions of Python. The mandatory dependencies are nose and decorator, although it is recommended that you also install NumPy and SciPy as a considerable portion of NetworkX's functionalities depends on them.

Developing code

To start development, fork NetworkX on GitHub and clone your fork to your local machine using

git clone https://github.com/<your-github-id>/networkx.git

You can then proceed to create and commit your changes locally and push them to your fork.

You should write unit tests for any changes you make (consult existing tests and the nose documentation for the how-to). In most cases, you can simply invoke nosetests from your working directory to run your tests without having to install your version of NetworkX.

Once you believe that your changes are ready, send a pull request to kick start the code review process.

Project ideas

See GSoC 2015 project ideas.

Potential mentors