Here are some thoughts on improving the documentation. As a general guide, we should aim for something like https://diataxis.fr.
Each of the "Interfaces" could use a tutorial that walks through a simple example, as well as some "How to" guides.
The "Terminology" section is good background explanation.
Guide
My thoughts on the guide is that it is too generic for a novice user. I think we're better off expanding the docs of each interface. For example:
HiGHS has comprehensive tools for defining and extracting models. This can be done either to/from MPS or (CPLEX) format LP files, or via method calls. HiGHS also has methods that permit the incumbent model to be modified. Solutions can be supplied and extracted using either files or method calls.
This isn't helpful because it doesn't say what the tools are, how they're called, or how things differ between the interfaces.
We could keep the Guide, and have something like:
## Load a model from file
The simplest way to use HiGHS to solve a model is to load it from a file using the method `readModel`.
HiGHS infers the file type by the extension. Supported extensions are:
* `.mps`: for an MPS file
* `.lp`: for a CPLEX LP file
HiGHS can read compressed files that end in the `.zip`, and `.gz` extension.
### Python
```python
model = highspy.readModel("filename.mps")
```
### C
```c
model = Highs_create()
ret = Highs_readModel(model, "filename.mps")
if (ret != 0) {
printf("Something went wrong.")
}
```
Python
C
The Gurobi docs have a very nice layout and structure: https://www.gurobi.com/documentation/10.0/refman/c_api_details.html
Julia
Other
Here are some thoughts on improving the documentation. As a general guide, we should aim for something like https://diataxis.fr.
Each of the "Interfaces" could use a tutorial that walks through a simple example, as well as some "How to" guides.
The "Terminology" section is good background explanation.
Guide
My thoughts on the guide is that it is too generic for a novice user. I think we're better off expanding the docs of each interface. For example:
This isn't helpful because it doesn't say what the tools are, how they're called, or how things differ between the interfaces.
We could keep the Guide, and have something like:
Python
Enumsto a higher level? It seems they could go with the options, since they're the same for all interfaces.C
The Gurobi docs have a very nice layout and structure: https://www.gurobi.com/documentation/10.0/refman/c_api_details.html
NULL, etc.Julia
Other