dokan-dev / dokan-dotnet

Dokan DotNet Wrapper
http://dokan-dev.github.io
MIT License
452 stars 114 forks source link

Dokan 1.1.0 - Breaking API #158

Open Liryna opened 6 years ago

Liryna commented 6 years ago

DokanMapStandardToGenericAccess has been merged with DokanMapKernelToUserCreateFileFlags.

We need to reflect this change on dokan-dotnet for 1.1.1.0

See https://github.com/dokan-dev/dokany/commit/0da77870161c101d3133fd76938951c200f12868

kyanha commented 4 years ago

Did this break binary compatibility? If so, it should have bumped to version 2, not just 1.1.

Liryna commented 4 years ago

Yes, we should have up to 2.1.1.0 😢 ...too late to do it ? even changelog seems to have missed it. Versioning of dokan-dotnet is for now dokan-net major version + dokany version (next version will be 2.1.3.0 for example) Yes, that's not the best I know but it started like this before me...I do not know if it can still be improved

kyanha commented 4 years ago

Ideally, we'd have dokan-dotnet and dokany have the same major and minor versions, with the patch number of dokan-dotnet incrementing whenever it needs to be re-released for some reason.

I think the DokanMapStandardToGenericAccess roll into DokanMapKernelToUserCreateFileFlags might have also impacted the C API?

Liryna commented 4 years ago

Yes, this would be the best 👍 It can even be done now as latest version is 1.1.2.1 We can release a 1.3.0.0 and the last number will be used for patch as you said. I think we can even do the release now, I do not see something missing.

You are right, this change impacted the C API. Dokan has move his MINOR version at this moment. (https://github.com/dokan-dev/dokany/wiki/How-to-package-your-application-with-Dokan#dokan-versioning)

kyanha commented 4 years ago

By breaking the binary API, you broke adherence to semantic versioning.

And by breaking the source API for dokan-dotnet, we're also breaking adherence to semantic versioning.

Can we maybe just push v2 much more quickly than originally planned, for both? What would that break?

Liryna commented 4 years ago

Yes, It can be see in this way but the dokan library <-> kernel is still compatible thats our point of view of "major break changes". As an example the dokan device name used for the communication to init the mount use the major api version to be sure that only dokan library 1.x.x can talk to driver 1.x.x https://github.com/dokan-dev/dokany/blob/master/sys/dokan.h#L46-L52

For 2.x.x there is still some work and hands needed. Help would be very appreciated.

Liryna commented 4 years ago

https://github.com/dokan-dev/dokan-dotnet/releases/tag/v1.3.0.0

1.3.0.0 is now released following this discussion. Glad we left this broken semantic version 😎

This can probably be closed @kyanha or if you wanna continue the v2 discussion I would be glad.