Skip to content

Commit

Permalink
add a changelog (#97)
Browse files Browse the repository at this point in the history
  • Loading branch information
webern authored May 31, 2020
1 parent c4f197f commit 9ad81f0
Show file tree
Hide file tree
Showing 2 changed files with 88 additions and 53 deletions.
88 changes: 88 additions & 0 deletions CHANGELOG.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,88 @@
# Changelog
All notable changes to this project will be documented in this file.
On 2020-05-31, two tags were deleted from origin, `v1.0.0` and `v1.0.1` and replaced with `v0.4.0` and `v0.4.1` respectively.
If you cloned/forked the repository before 2020-05-31, consider making a new clone/fork or otherwise repairing the tags.

## [Unreleased]
- Support non-traditional key signatures in `mx::api` [#81]
- Add a constructor for `PitchData` [#90]
- Provide a hint in the exception message when a zip file is attempted [#67]
- Update the readme fairly substantially [#91]
- Add a changelog [#97]
- Hide the independence of the XML parser to reduce confusion about dependency management [#79]
- Bump C++ standard to 17 [#93]

[#67]: https://github.com/webern/mx/pull/67
[#79]: https://github.com/webern/mx/pull/79
[#81]: https://github.com/webern/mx/pull/81
[#90]: https://github.com/webern/mx/pull/90
[#91]: https://github.com/webern/mx/pull/91
[#93]: https://github.com/webern/mx/pull/93
[#97]: https://github.com/webern/mx/pull/97

## [v0.4.1] - 2019-11-23
- Mostly internal changes related to the xml parser.

## [v0.4.0] - 2019-04-08
- A simplified data model, called `mx::api`.

## [v0.3.0] - 2017-11-20
- MusicXML files can be parsed into the C++ classes.

## [v0.2.0] - 2016-08-21
- MusicXML 3.0 represented in C++ classes, mostly generated from XSD using custom Ruby scripts.
- MusicXML DOM classes can serialize to XML.

## [v0.1.0] - 2016-06-20
- Initial Commit

[v0.1.0]: https://github.com/webern/mx/commit/5d46609
[v0.2.0]: https://github.com/webern/mx/compare/5d46609..v0.2.0
[v0.3.0]: https://github.com/webern/mx/compare/v0.2.0..v0.3.0
[v0.4.0]: https://github.com/webern/mx/compare/v0.3.0..v0.4.0
[v0.4.1]: https://github.com/webern/mx/compare/v0.4.0..v0.4.1
[Unreleased]: https://github.com/webern/mx/compare/v0.4.1...HEAD

#### Historical Notes

**Historical Note: April 7, 2019** Trying to button up a '1.0' 'release' by tying up some of the loose ends with the build, continuous integration, testing, and header leakage.
The use of the semver `1.0` implies that we hope there won't be many breaking changes.
I suppose the way I will use semver is as follows: a patch release may cause slight compilation annoyances, but nothing that would cause any rewriting of code.
A minor release may similarly require some tweaks but hopefully nothing too major.
A major release could be anything up-to a complete re-write.

**Historical Note: October 6, 2016:** Significant progress has been made on the `api` namespace, which is a simplified set of data structures to represent a MusicXML document.
These are being implemented as mostly-POD structs.
Currently the importing of data into these structures is well-underway, but the exporting from these data structures has not been implemented.

**Historical Note: August 16, 2016:** All tests are passing (core, xml and import).
The remaining items to do on the ximport feature are
- search for all `\\TODO's` and fix those that can be fixed
- Standardize the code file copyrights and bump to version 0.2
- Rename XElement functions to better names
- Update the readme including information about the XDoc XElement classes and how to implement those interfaces.

**Historical Note: August 11, 2016:** The feature to import MusicXML files is essentially complete with most "round-trip" integration tests passing.

**Historical Note: June 27, 2016:** An "integration" tester has been added to the MxTest executable.
This exists in ImportTest.cpp, and ImportTestImpl.h/cpp.
A top level directory "Resources" has been added to hold test input (i.e. "golden") files.
The input files are gathered from Recordare, Lilypond and MuseScore and to this I have added a few of my own scores as exported by Finale Dolet.

Each of these test input files has been "scrubbed" using the XDoc classes (i.e. it has been round-tripped through pugixml and has been updated to a normalized MusicXML 3.0 header format.
The resultant scrubbed files are in Resources/expected.
During the test run, a csv file is written in Resources/testOutput recording a row for each test (Pass/Fail, duration of test, messages, etc).
Each time a test failure is encountered the expected file and the error file will be saved to the Resources/testOutput directory to allow for visual inspection.

Currently this tester is a "wire-up".
All 263 of these round-trip import/export tests fail because the implementation does not yet exist in mx::core.
The next body of work will be the mx::core implementation.

**Historical Note: June 20, 2016:** A simple interface to for XML DOM has been added in the ::ezxml:: namespace.
The key classes (pure virtual) are XDoc, XElement, XAttribute, XElementIterator, XAttributeIterator.
These are implemented by concrete classes PugiDoc, PugiElement, etc. which serve as a wrapper for the pugixml library (http://pugixml.org/).
Although this is a static library, a class XFactory can be used to create a Pugi instance of the XDoc interface.

The idea behind using a pure virtual interface is that the client of the Music XML Class Library can, in theory choose a different XML DOM library (Xerces, TinyXML, etc) and wrap with instances of the XDoc interfaces and the Music XML core classes will not know the difference.

**Historical Note: June 20, 2016:** The GitHub repo was bloated and has been entirely wiped-out and restarted.
53 changes: 0 additions & 53 deletions README.md
Original file line number Diff line number Diff line change
Expand Up @@ -775,56 +775,3 @@ int main(int argc, const char * argv[])
An executable program named MxTest is also included in the project.
MxTest utilizes the Catch2 test framework.
The core tests are slow to compile, see the [`cmake` options](#cmake-options) section for more info on how to skip compilation of the tests.

(*TODO*: move this to a changelog and describe the problem with premature 1.0.0 semver tagging)
(*TODO*: decide and describe how we will use semver)

#### Release Notes

* **Version 1.0** April 2019: A more-or-less stable version of `mx::api`
* **Version 0.3** Early 2019
* **Version 0.2** August 21, 2016 Adds the ability to import MusicXML documents into MusicXML Classes.

#### Historical Notes

**Historical Note: April 7, 2019** Trying to button up a '1.0' 'release' by tying up some of the loose ends with the build, continuous integration, testing, and header leakage.
The use of the semver `1.0` implies that we hope there won't be many breaking changes.
I suppose the way I will use semver is as follows: a patch release may cause slight compilation annoyances, but nothing that would cause any rewriting of code.
A minor release may similarly require some tweaks but hopefully nothing too major.
A major release could be anything up-to a complete re-write.

**Historical Note: October 6, 2016:** Significant progress has been made on the `api` namespace, which is a simplified set of data structures to represent a MusicXML document.
These are being implemented as mostly-POD structs.
Currently the importing of data into these structures is well-underway, but the exporting from these data structures has not been implemented.

**Historical Note: August 16, 2016:** All tests are passing (core, xml and import).
The remaining items to do on the ximport feature are
- search for all `\\TODO's` and fix those that can be fixed
- Standardize the code file copyrights and bump to version 0.2
- Rename XElement functions to better names
- Update the readme including information about the XDoc XElement classes and how to implement those interfaces.

**Historical Note: August 11, 2016:** The feature to import MusicXML files is essentially complete with most "round-trip" integration tests passing.

**Historical Note: June 27, 2016:** An "integration" tester has been added to the MxTest executable.
This exists in ImportTest.cpp, and ImportTestImpl.h/cpp.
A top level directory "Resources" has been added to hold test input (i.e. "golden") files.
The input files are gathered from Recordare, Lilypond and MuseScore and to this I have added a few of my own scores as exported by Finale Dolet.

Each of these test input files has been "scrubbed" using the XDoc classes (i.e. it has been round-tripped through pugixml and has been updated to a normalized MusicXML 3.0 header format.
The resultant scrubbed files are in Resources/expected.
During the test run, a csv file is written in Resources/testOutput recording a row for each test (Pass/Fail, duration of test, messages, etc).
Each time a test failure is encountered the expected file and the error file will be saved to the Resources/testOutput directory to allow for visual inspection.

Currently this tester is a "wire-up".
All 263 of these round-trip import/export tests fail because the implementation does not yet exist in mx::core.
The next body of work will be the mx::core implementation.

**Historical Note: June 20, 2016:** A simple interface to for XML DOM has been added in the ::ezxml:: namespace.
The key classes (pure virtual) are XDoc, XElement, XAttribute, XElementIterator, XAttributeIterator.
These are implemented by concrete classes PugiDoc, PugiElement, etc. which serve as a wrapper for the pugixml library (http://pugixml.org/).
Although this is a static library, a class XFactory can be used to create a Pugi instance of the XDoc interface.

The idea behind using a pure virtual interface is that the client of the Music XML Class Library can, in theory choose a different XML DOM library (Xerces, TinyXML, etc) and wrap with instances of the XDoc interfaces and the Music XML core classes will not know the difference.

**Historical Note: June 20, 2016:** The GitHub repo was bloated and has been entirely wiped-out and restarted.

0 comments on commit 9ad81f0

Please sign in to comment.