Issues and Contributions

Issues and Contributions

For any issues, contributions, or discussions, use the github issue tracker. Contributions are welcome in any form, whether submitting issues, discussing changes, requesting features, or submitting pull requests. Before working on any major task, please open an issue first to prevent overlapping efforts and to help with organization.

Submitting issues

Please submit an issue to the tracker if you find anything that does not behave as expected or if there is anything missing. There is a igraph.version function that will print the version of the toolbox which should be included in issues. Try to provide enough information to reproduce the results if applicable.

Adding features

If you are willing to add a feature, please submit it as a pull request. The general workflow should be to start by forking this repo, cloning the fork, creating a feature branch that you work off. Then after making commits to your private repo, submit a pull request.

When writing, try to be consistent with the rest of the toolbox. Please look at related code and try to follow the general style. For C code, there is an .astylerc that will handle basic formatting. Make sure to follow the common API, such as providing options for the representation of a graph in any function that returns a graph. If you need any help, submit a pull request early and I'll take a look and provide feedback.

Also see Adding igraph functions.

Adding to documentation

Documentation is written in both org-mode and in matlab formats (live scripts or m-files). For org-mode, the files are in docs/content, these can be viewed locally by installing Hugo and running hugo server in the docs directory. For live scripts, the files need to be written in the MATLAB editor. Live scripts and m-files can be exported to markdown using the make docs command (which will also place the files into the correct location so hugo can find them).

Versioning

Currently, I will be using Semantic Versioning. We are still pre 1.0.0, so this means non-major version changes may break the API. Once the toolbox is deemed more stable, I may start tracking the upstream igraph C library's versions instead of using semantic versioning to make it clear which version the toolbox is compatible with.

Why is <BLANK> missing?

Missing functionality comes in three flavors: not needed, unsure how to implement, and haven't gotten to yet. For the most part, I tried to minimize the "haven't gotten to yet", but igraph is quite large so there are still many features missing that should be simple enough to add.

They are not useful

There's a number of methods that seem like they are intended for writing higher level C methods rather than to be used by the end user. I have no intention of adding these.

Prefer to let MATLAB handle it when reasonable

Some graph operations can be performed simply using Matlab's matrix syntax. For example if you would like to find the degree of all nodes you can use degree = sum(adj, 1);. With the addition of supporting MATLAB's graph class, it may now be beneficial to provide functions that behave the same no matter the representation and therefore I may add basic functions like degree. Adjacency matrices can also be subsetted using normal matrix operations. Since the goal is to integrate with Matlab, calling igraph methods should be limited to complicated algorithms or when performance demands it. Which methods fall under this category is subjective and I could be swayed, but I do not intend on adding many of the more basic methods.

I'm not certain how to call a function

I'm not familiar with all the algorithms in igraph, every once in awhile there is a method that I don't understand well enough to implement them. Like with the dimacs file type.