-
Notifications
You must be signed in to change notification settings - Fork 4
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
New data model for the exe #55
Conversation
The current new format looks like this (obsoletes on individual fields and methods still missing) ------------------- new format ------------------ Breaking changesThe following public types is no longer available
The following types have breaking changesExample.ClassToBeObsoletedWithErrorInNextVersionObsoleted with Error - This type should no longer be used, use XYZ instead. Example.ClassWithMembersToBeObsoletedWithErrorInNextVersionExample.IMethodChangesParametersNextVersionRemoved methods
Example.MemberInternalNextVersionRemoved fields
Removed methods
Example.MemberMissingNextVersionRemoved fields
Removed methods
Non breaking changesExample.ClassToBeObsoletedWithWarnInNextVersionObsoleted with Warning - This type should no longer be used, use XYZ instead. @ParticularLabs/apicomparer what do you all think about the separation of breaking / non breaking changes? |
Give that we have a non breaking section would it make any sense to show "new types" ? cc @SimonCropp |
Dont think so |
I think that would provide value.
|
Had a chat with @SimonCropp and we came to the conclusion that "obsolete with warn" a special form of removal sinces it "notifies of a upcoming apichange". While it's technically a breaking change for users that have
I created this mindmap as a result: https://drive.google.com/a/nservicebus.com/file/d/0Bxjcg5ArjglPSDBSdGJrNlBQSzg/view?usp=sharing Snapshot: Thoughts/Ideas/Comments? |
Don't we (particular) implement them with throw new NotImplementedException()? Which would be opposed to your brainstorming conclusion?
|
For "obsolete with error" we do throw but not for "obsolete with warn". Does that make sense? |
I might be too tired but as far as I'm involved we mostly used obsolete with error, see https://github.com/Particular/NServiceBus/blob/develop/src/NServiceBus.Core/obsoletes.cs Even for APIs that have been introduced just for one version. Look at the obsoletes. Most of the messages are like: hey we don't compile anymore for V6 and will remove in v7, here is what you should be using. And the impls throw. So where do we actually use obsolete with warning?
|
@danielmarbach that is because we r in the phase of a major release. |
Let me rephrase: How many times have we used obsolete as warn in the past?
|
5.X has a few http://apicomparer-preview.particular.net/compare/nservicebus/5.0.0...5.1.3 On Sun, Dec 27, 2015 at 8:40 AM, Daniel Marbach notifications@github.com
|
I've got another idea, if we treat "obsolete with warn" as a notification of a upcoming breaking change we get the following layout (note that I added optional parsing of the obsolete string based on knowlege of ------------ start ----------- The following types are no longer availableExample.MissingNextVersionClassNo upgrade instructions provided. Example.InternalNextVersionClassNo upgrade instructions provided. Example.ClassToBeObsoletedWithErrorInNextVersionThis type should no longer be used, use XYZ instead. Types with removed membersExample.ClassWithMembersToBeObsoletedWithErrorInNextVersionRemoved fields
Removed methods
Example.IMethodChangesParametersNextVersionRemoved methods
Example.MemberInternalNextVersionRemoved fields
Removed methods
Example.MemberMissingNextVersionRemoved fields
Removed methods
The following will be removed in upcoming versionsVersion - 2.0.0Example.ClassToBeObsoletedWithWarnInNextVersionThis type should no longer be used, use XYZ instead. Will be treated as an error from version 2.0.0. ------------ end ----------- |
Really cool!
|
Below is the final version of the new layout where also individual member obsoletions is shown with their correct version. ---------------- start new layout ------------- Changes in current versionThe following types are no longer availableExample.ClassObsoletedWithWarnShouldBeIncludedIfRemovedSome message. Example.MissingNextVersionClassNo upgrade instructions provided. Example.ClassObsoletedWithWarnShouldBeIncludedIfInternalizedSome message. Example.InternalNextVersionClassNo upgrade instructions provided. Example.ClassToBeObsoletedWithErrorInNextVersionThis type should no longer be used, use XYZ instead. Types with removed membersExample.MemberMissingNextVersionRemoved fields
Removed methods
Example.IMethodChangesParametersNextVersionRemoved methods
Example.ClassWithMembersToBeObsoletedWithErrorInNextVersionRemoved fields
Removed methods
Example.MemberInternalNextVersionRemoved fields
Removed methods
Upcoming changes in Version - 2.0.0The following types are no longer availableExample.ClassToBeObsoletedWithWarnInNextVersionThis type should no longer be used, use XYZ instead. Will be treated as an error from version 2.0.0. Types with removed membersExample.ClassWithMembersToBeObsoletedWithWarnInNextVersionRemoved fields
Removed methods
---------------- end new layout ------------- |
Removals and top level obsoletes working Only include changed types Separated breaking and non breaking changes in the markdown formatter Adding test case for type to be obsoleted with warning Display obsolete severity Better distinction between breaking and non breaking changes Heading tweak Prepare to add field/method obsoletes Made headers more terse Get obsoletes going for fields Collapsed removed into the a single collection for breaking changes Together with obsoletes and changed types Separated removed and changed types again Better formatting of upgrade instructionBetter formatting of upgrade instructions Introduced future versions Minor tweaks Display future changes Separated obsolete with error from warn Filter out future obsoletes Using list of apichanges instead List version properly Handle changed types Also separate future member changes Handle targets that are no longer supported More cleanup of the obsolete message Make sure non public member are not included Do not include non modified internal methods Dont include not modified internal fields Do not include members that are already obsoleted with error Do not include members already obsoleted
80d935b
to
1bac38c
Compare
Since this only affects the exe I'm going to merge this. I'll do a different pull for the site once I've tested it IRL for a few weeks |
There was alot of repetion in the old data model. Spiking a new model that focus more on "api changes" instead of type changes.