Plug-in broken in 17.3

This forum is for programmers who have questions about the source code.
Post Reply
User avatar
tim
Posts: 24
Joined: Wed Mar 08, 2017 5:11 am

Plug-in broken in 17.3

Post by tim » Wed Mar 14, 2018 7:50 am

Our plug-in that was functioning in 17.2 is broken in 17.3, due to the OpenDentBusiness.PIn signatures changing.

In 17.2, the signatures were in the form:

Code: Select all

long Long (string myString)
In 17.3, they have changed to:

Code: Select all

long Long (string myString, bool hasExceptions = true)
The following exception is thrown when trying to load the plug-in in 17.3:

Code: Select all

Method not found: Int64 OpenDentBusiness.Pin.Long(System.String)
What are the API compatibility guarantees for the OpenDentBusiness DLL? Or should we not have been using these functions from the beginning?

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Plug-in broken in 17.3

Post by jsalmon » Wed Mar 14, 2018 8:59 am

tim wrote:What are the API compatibility guarantees for the OpenDentBusiness DLL? Or should we not have been using these functions from the beginning?
We don't have an API and have zero backwards compatibility guarantees for all code available. Those functions are absolutely available for use and I encourage you to continue to use them. It would be nice to enhance our plug-in framework with a marketplace and make an official API and make a everything backwards compatible with legacy libraries, etc, etc. There just isn't time to do all of that right now.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

User avatar
tim
Posts: 24
Joined: Wed Mar 08, 2017 5:11 am

Re: Plug-in broken in 17.3

Post by tim » Wed Mar 14, 2018 9:07 am

jsalmon wrote:
tim wrote:What are the API compatibility guarantees for the OpenDentBusiness DLL? Or should we not have been using these functions from the beginning?
We don't have an API and have zero backwards compatibility guarantees for all code available. Those functions are absolutely available for use and I encourage you to continue to use them. It would be nice to enhance our plug-in framework with a marketplace and make an official API and make a everything backwards compatible with legacy libraries, etc, etc. There just isn't time to do all of that right now.
Is it unreasonable to add those original method signatures back to OpenDentBusiness.PIn (possibly including them in a 17.3 patch), and then add a new method overload that adds the hasExceptions parameter?

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Plug-in broken in 17.3

Post by jsalmon » Wed Mar 14, 2018 10:53 am

tim wrote:Is it unreasonable to add those original method signatures back to OpenDentBusiness.PIn (possibly including them in a 17.3 patch), and then add a new method overload that adds the hasExceptions parameter?
It is unreasonable to add overloads to all the methods that we broke with optional parameters. We now enter the classic "if you bring candy, make sure you bring enough for the entire class". That's why it would be nice if we had some sort of backwards compatibility guarantee like you mentioned earlier but we don't ATM.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

User avatar
tim
Posts: 24
Joined: Wed Mar 08, 2017 5:11 am

Re: Plug-in broken in 17.3

Post by tim » Wed Mar 14, 2018 11:05 am

jsalmon wrote:
tim wrote:Is it unreasonable to add those original method signatures back to OpenDentBusiness.PIn (possibly including them in a 17.3 patch), and then add a new method overload that adds the hasExceptions parameter?
It is unreasonable to add overloads to all the methods that we broke with optional parameters. We now enter the classic "if you bring candy, make sure you bring enough for the entire class". That's why it would be nice if we had some sort of backwards compatibility guarantee like you mentioned earlier but we don't ATM.
Is it suggested that we should pin our plug-in DLLs with specific Open Dental releases, and prevent them to run due to potential runtime failures due to missing methods?

User avatar
jsalmon
Posts: 1551
Joined: Tue Nov 30, 2010 12:33 pm
Contact:

Re: Plug-in broken in 17.3

Post by jsalmon » Wed Mar 14, 2018 11:40 am

tim wrote:Is it suggested that we should pin our plug-in DLLs with specific Open Dental releases, and prevent them to run due to potential runtime failures due to missing methods?
Open Dental doesn't really have a suggestion one way or the other that I'm aware of. Right now Open Dental just supplies the source code and says "good luck" to everyone else. Your suggestion is one way to approach it and would probably give the users of your plug-in a better experience unless you had a hard time keeping up with our version releases.
The best thing about a boolean is even if you are wrong, you are only off by a bit.

Jason Salmon
Open Dental Software
http://www.opendental.com

User avatar
tim
Posts: 24
Joined: Wed Mar 08, 2017 5:11 am

Re: Plug-in broken in 17.3

Post by tim » Wed Mar 14, 2018 11:44 am

jsalmon wrote: Open Dental doesn't really have a suggestion one way or the other that I'm aware of. Right now Open Dental just supplies the source code and says "good luck" to everyone else. Your suggestion is one way to approach it and would probably give the users of your plug-in a better experience unless you had a hard time keeping up with our version releases.
Alright, thanks for all the details, Jason!

Post Reply