Skip to content

Commit

Permalink
Write release notes for the first QuikGraph package.
Browse files Browse the repository at this point in the history
Add some historical background.
  • Loading branch information
KeRNeLith committed Dec 11, 2019
1 parent 384b30a commit 58d48b2
Show file tree
Hide file tree
Showing 9 changed files with 138 additions and 42 deletions.
6 changes: 3 additions & 3 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -18,7 +18,7 @@ QuikGraph comes with algorithms such as depth first search, breath first search,

It was then updated to become YC.QuickGraph.

This version of QuickGraph, renamed QuikGraph, is a fork of YC.QuickGraph, and I tried to clean the Core of the library to provide it as a clean NuGet package using modern C# development.
**This version** of QuickGraph, renamed **QuikGraph**, is a fork of YC.QuickGraph, and I tried to clean the Core of the library to provide it as a clean NuGet package using modern C# development (.NET Core).

The plan would be to fully clean the original library and all its non Core parts and unit test it more.

Expand All @@ -41,14 +41,14 @@ The plan would be to fully clean the original library and all its non Core parts

### Notes

It uses NUnit3 for unit testing (not published).
The library get rid of PEX that was previously used for unit tests and now uses NUnit3 (not published).

I would be very pleased to receive pull requests to further **test** or **improve** the library.

### Where to go next?

* [Documentation](https://kernelith.github.io/QuikGraph/)
* [External Information](https://quickgraph.codeplex.com/documentation)
* [External Information](https://quickgraph.codeplex.com/documentation) (The website was closed)

### Maintainer(s)

Expand Down
39 changes: 18 additions & 21 deletions RELEASE_NOTES.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,23 @@
#### 3.7.5-deta January 17 2019
* Code cleanup
* Minor fixes
* DotParser is turned off
# Release notes

#### 3.7.4 August 27 2018
* More algorithms (TransitiveClosure, YenShortestPaths, etc.)
* Code cleanup
* Minor fixes
## What's new in 1.0.0 December 10 2019

#### 3.7.3 August 23 2016
* Minor fix in packet dependences specification
This release is was based on YC.QuikGraph 3.7.5-deta with a lot of updates.

#### 3.7.2 August 18 2016
* Update DotParser to latest version (1.0.6)
### General:
* Fully clean the library code.
* Extend support of the library to .NET Framework 3.5+.
* Extend support of the library to .NET Core 1.0+.
* Various fixes for graphs and algorithms implementations.
* Uniformize APIs and behaviors of graphs and algorithms implementations.

#### 3.7.1 July 12 2016
* Minor fixes
* New graph algorithms for graph partition, coloring, searching paths, etc
* Graphs now can be loaded from DOT
* Drop Portable Class Library support
Note: Only keep the Core of QuikGraph for this package (feature split).

#### 3.7.0 July 12 2016
* New graph algorithms for graph partition, coloring, searching paths, etc
* Graphs now can be loaded from DOT
* Drop Portable Class Library support
### API Breaks
* Some public API breaks (but should remain simple to do a migration).
* Some edges structures are removed, the classes implementations are preferred due to C# limitations.
* Some algorithms are not usable for now (wrong implementations) and are removed from public API.

### Misc:
* Generate a documentation for the library via DocFX.
* Use JetBrains annotations all over the library as much as possible.
2 changes: 2 additions & 0 deletions docs/docfx.json
Original file line number Diff line number Diff line change
Expand Up @@ -32,6 +32,8 @@
},
{
"files": [
"documentation/**.md",
"documentation/**/toc.yml",
"toc.yml",
"*.md"
]
Expand Down
78 changes: 78 additions & 0 deletions docs/documentation/history.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,78 @@
# Library history

Below is some summarized information about the history of this library in order to have a better idea of where it comes from.

## QuickGraph

### General information

This is the original library supporting .NET Framework 4.0, Silverlight 4.0, Windows Phone 7, Windows 8 Metro Apps, XBox 360.

QuikGraph was originally created by Jonathan "Peli" de Halleux in 2003.

Intially the library was providing generic directed/undirected graph datastructures and algorithms for .NET.
QuickGraph was coming with algorithms such as depth first seach, breath first search, A* search, shortest path, k-shortest path, maximum flow, minimum spanning tree, least common ancestors, etc...
QuickGraph was supporting [MSAGL](https://www.microsoft.com/en-us/research/project/microsoft-automatic-graph-layout), [GLEE](https://en.wikipedia.org/wiki/Microsoft_Automatic_Graph_Layout), and [Graphviz](https://www.graphviz.org) to render the graphs, serialization to [GraphML](http://graphml.graphdrawing.org), etc...

The library was also using [Code Contracts](https://www.microsoft.com/en-us/research/project/code-contracts/?from=http%3A%2F%2Fresearch.microsoft.com%2Fcontracts).

Note that the library was widely used such as in those projects:
- [Reflector.Graph Addin](https://archive.codeplex.com/?p=reflectoraddins)
- [Graph#, layout algorithms](https://archive.codeplex.com/?p=graphsharp)
- [Jolt.Net, a backing store for a generic finite state machine implementation](https://archive.codeplex.com/?p=jolt)
- [JSL StyleCop, Custom rules for Microsoft's StyleCop utility](https://archive.codeplex.com/?p=jslstylecop)
- [NDepend, codebase macro analysis](https://www.ndepend.com)
- [Dependency Viewer](https://archive.codeplex.com/?p=dependencyvisualizer)

### Versions

- QuickGraph 3.6. Portable Class Library support.
- QuickGraph 3.3.51106.0 available on nuget, no more support for .NET 2.0.
- QuickGraph 3.3 (updated) added Code Contracts reference assemblies
- QuickGraph 3.3 adds new graph data structures based on delegates
- QuickGraph 3.2 (bis) supporting Silveright
- QuickGraph 3.2 started using Code Contracts.
- QuickGraph 3.1 brings a Fibonacci Heap and support for 2.0 is back.
- QuickGraph 3.0 takes advantage of extension methods to simplify tasks.
- QuickGraph 2.0 introduced support for generic graph data structures
- The original QuickGraph for .net 1.0 was posted on CodeProject in 8 Dec 2003. It was time to do a refresh and make the graph generic.

The design of QuickGraph is inspired from the [Boost Graph Library](https://www.boost.org/doc/libs/1_68_0/libs/graph/doc/index.html).

## YC.QuickGraph

### General information

The YC.QuickGraph is a library that took sources of the original QuickGraph and put them on NuGet as package.

The goal was to continue the development (as described [there](https://github.com/YaccConstructor/QuickGraph/issues/173)).

It kept the majority of legacy code from QuickGraph and was applied some fixes.

### Versions

- YC.QuickGraph 3.7.5-deta Fixes, clean, no more DotParser.
- YC.QuickGraph 3.7.4 Some new algorithms, fixes and clean.
- YC.QuickGraph 3.7.3 Fixes.
- YC.QuickGraph 3.7.2 N/A.
- YC.QuickGraph 3.7.1 Some new algorithms, add DotParser and remove portable class library support.

## QuikGraph

### General information

QuikGraph library was built based on YC.QuickGraph (fork) that is itself based on the original QuickGraph.

The goal of this library was to clean and provide a more stable version of QuickGraph, which also follows new C# development standards.

As a consequence a massive clean and unit testing was added to the library.

Note that for now the cleaned library only concern the QuickGraph **core**, not its legacy adapters. This in order to better split features provided by NuGet packages.

This version of QuickGraph also get rid of:
- Code Contracts in favor of JetBrains contract annotations and standard asserts.
- PEX in favor of NUnit3 for unit testing.

### Versions

- QuikGraph 1.0.0 See [release notes](https://www.nuget.org/packages/QuikGraph/1.0.0).
2 changes: 2 additions & 0 deletions docs/documentation/toc.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,2 @@
- name: History
href: history.md
6 changes: 3 additions & 3 deletions docs/index.md
Original file line number Diff line number Diff line change
Expand Up @@ -12,15 +12,15 @@

## Introduction

**QuikGraph** provides generic directed/undirected graph data structures and algorithms for .NET.
QuikGraph provides generic directed/undirected graph data structures and algorithms for .NET.

QuikGraph comes with algorithms such as depth first search, breath first search, A* search, shortest path, k-shortest path, maximum flow, minimum spanning tree, etc.

*QuikGraph was originally created by Jonathan "Peli" de Halleux in 2003 and named QuickGraph.*

It was then updated to become YC.QuickGraph.

This version of QuickGraph, renamed QuikGraph, is a fork of YC.QuickGraph, and I tried to clean the Core or the library to provide it as a clean NuGet package using modern C# development.
**This version** of QuickGraph, renamed **QuikGraph**, is a fork of YC.QuickGraph, and I tried to clean the Core of the library to provide it as a clean NuGet package using modern C# development (.NET Core).

The plan would be to fully clean the original library and all its non Core parts and unit test it more.

Expand All @@ -36,6 +36,6 @@ You can find library sources on [GitHub](https://github.com/KeRNeLith/QuikGraph)

QuikGraph is available on [NuGet](https://www.nuget.org/packages/QuikGraph)

PM> Install-Package QuikGraph
PM> Install-Package QuikGraph

<img src="images/quikgraph_logo.png" width="128" height="128" style="display: block; margin-left: auto; margin-right: auto" />
2 changes: 2 additions & 0 deletions docs/toc.yml
Original file line number Diff line number Diff line change
@@ -1,3 +1,5 @@
- name: Documentation
href: documentation/
- name: API Reference
href: api/
homepage: api/index.md
28 changes: 14 additions & 14 deletions releaseDoc.ps1
Original file line number Diff line number Diff line change
Expand Up @@ -50,14 +50,14 @@ param(
# Only master Release
if ($env:Configuration -ne "Release")
{
"Documentation update ignored: Not Release build.";
Return;
"Documentation update ignored: Not Release build.";
Return;
}

if ($env:APPVEYOR_REPO_BRANCH -ne "master")
{
"Documentation update ignored: Not master branch.";
Return;
"Documentation update ignored: Not master branch.";
Return;
}

# Chocolatey DocFX
Expand All @@ -84,8 +84,8 @@ $TEMP_REPO_DIR="$pwd/../QuikGraph-gh-pages"

if (Test-Path $TEMP_REPO_DIR)
{
"Removing temporary documentation directory $TEMP_REPO_DIR..."
rm -recurse $TEMP_REPO_DIR
"Removing temporary documentation directory $TEMP_REPO_DIR..."
rm -recurse $TEMP_REPO_DIR
}

mkdir $TEMP_REPO_DIR
Expand All @@ -106,15 +106,15 @@ Invoke-Git "add -A ."
"Checking if there are changes in the documentation..."
if (-not [string]::IsNullOrEmpty($(git status --porcelain)))
{
"Pushing the new documentation to the remote gh-pages branch..."
git commit -m "Update generated documentation."
# -q is to avoid git to output thing to stderr for no reason
git push -q origin gh-pages
"Documentation updated in remote gh-pages branch."
"Pushing the new documentation to the remote gh-pages branch..."

git commit -m "Update generated documentation."
# -q is to avoid git to output thing to stderr for no reason
git push -q origin gh-pages

"Documentation updated in remote gh-pages branch."
}
else
{
"Documentation update ignored: No relevant changes in the documentation."
"Documentation update ignored: No relevant changes in the documentation."
}
17 changes: 16 additions & 1 deletion src/QuikGraph/QuikGraph.csproj
Original file line number Diff line number Diff line change
Expand Up @@ -34,7 +34,22 @@ Supported platforms:

<IsPackable>true</IsPackable>
<PackageId>QuikGraph</PackageId>
<PackageReleaseNotes>➟ Release 1.0.0</PackageReleaseNotes>
<PackageReleaseNotes>➟ Release 1.0.0
This package is a version of the original QuickGraph renamed QuikGraph and ported to .NET Core.

It does not include every sub modules of the original library such as F# stuff, adapters, etc.
This build is only the Core of QuikGraph taking advantage of .NET Core.

This package should be seen as an alternative one to the old frozen QuickGraph from CodePlex but with fixes.

The library has been cleaned a lot (code smells, etc) and is much more unit tested.
Some implementations have been fixed (Yen algorithm, etc).
Note that some public API of the original QuickGraph may have slighly changed but the migration should remain easy.
This goal of this release was also to uniformize the more it is possible the behavior of various graph structures and algorithms.

It also has been fully documented and most of the library is using JetBrains annotations.

Finally the targets supported by the library has been extended to .NET Framework 3.5+ and also works for .NET Core 1.0+.</PackageReleaseNotes>
<PackageTags>QuickGraph QuikGraph Graph Structure Algorithm C# .NET</PackageTags>

<PublishRepositoryUrl>true</PublishRepositoryUrl>
Expand Down

0 comments on commit 58d48b2

Please sign in to comment.