I conclude that if I start writing an extension on my Ubuntu-installed Inkscape 0.92.4, it might be broken when 1.0 is available my distributions repo.
So what is this 1.0 version actually? Is it something that is just around the corner or way far off?
Since the traditional About Screen contest (which accompanies every new version) was over some time ago, the release could happen any time. There an ongoing discussion in the chat about fixing the last bugs. So watching that could give an indication.
We were just discussing (in another thread) what to do about all the 3rd party extensions which will break when 1.0 is installed. The first step is for someone to communicate with developers enough to write a document which explains what all the needed changes would be. Then write the document. Then we hope to communicate with all the extension authors, and point them to the info.
Even all that work does not guarantee than every author will want to upgrade their extension. Maybe in some cases other authors might adopt some broken ones, and fix them. But still, it sounds like some extensions will be permanently broken, except for the versions where they were created.
I guess we don't really have a time frame for coming up with this document. My best guess is that it won't be until after 1.0 is actually released.
Actually I think I'm going to ask in the chat, if some attention could be diverted from the bug fixing (which does not look all that serious to me) to start working on the extensions issue. I have no idea what the response might be. But I guess I"ll just do that now....
Thanks brynn and Martin. And thanks to Maren's efforts for her updates to the docs (I see recent activity in the history on that wiki page).
Having read that, and some of the extension code already, I'm going to hold off on in learning how to write extensions until the API and its associated documentation is stable, perhaps when version 1.x (where x>0) is available in my Linux Distributions package repositories. My tolerance for unstable API's is much, much lower than other developers, because I've been burned too many times over the years by "API flux".
However, I do have the luxury of waiting for "the good stuff" in 1.x, so that's what I plan to do until I change my mind on it. :)
I appreciate everyones efforts on this. Good Luck!
If you're not into writing actual extensions. Maybe you'd be interested in reviewing the API? It's python and the more eyes that can spend the odd hour looking at things there, I think we'll get a better quality extensions API.
I'm critical of the decision to change the API and break a lot of extentions. While the old API had some odd design decisions, I don't think that it justifies changing it and creating the need of updating all extensions.
Criticism is fine. The decision wasn't made lightly or with any sort of cavalier attitude. The goals were simple, move the quality control of Inkscape extensions from "oh my god it burns, it burns, why am I still alive, ahhhh!" to something approaching "well that's annoying". This includes requiring code to have tests, for the API itself to have tests, for it to be logically consistent and of a high quality following appropriate python PEP standards for code writing. It was also important to target python3, which would likely (and has already) killed off most old python extensions anyway since very few of them are compatible.
But we also knew there was no way to get all extensions to upgrade. So great care and attention was paid to the deprecation layer. Old extensions (that run on python3 at least) will still run with deprecation warnings and the warnings tell the developers how to upgrade the code. Our code will still run on python2 and 3 to make sure that Linux versions would still work with python2 (windows and mac are python3 only though)
The missing piece is documentation and tutorials. I've gotten only part way through the process of creating better materials before being called away to work on Inkscape itself. Any help here would be greatly helpful to the project.
This has been no thoughtless exercise in arrogance and one of the greatest regrets has been the lack of solid extensions community over which changes could be discussed and more people could be invited in to help. But we must work with what we have.
I wasn't aware that so many extensions would break from python3 on it's own would break many extensions. Having that in mind if the decision is made to do something that breaks the extensions, like the shift to python3, what I think was a good idea, one can just as well put in the work to clean up the API. Yeah, the consistency and documentation was kind of a mess. It's clear that it is grown over time. I learned most of what I know about the little tricks with the API by having a look at how other extensions do it. Hopefully that gets better. Maybe I will take some time and write a few tuts once the API is stable.
Per comment at https://inkscape.org/forums/extensions/help-to-get-started-coding-extensions/#c9080
I conclude that if I start writing an extension on my Ubuntu-installed Inkscape 0.92.4, it might be broken when 1.0 is available my distributions repo.
So what is this 1.0 version actually? Is it something that is just around the corner or way far off?
Since the traditional About Screen contest (which accompanies every new version) was over some time ago, the release could happen any time. There an ongoing discussion in the chat about fixing the last bugs. So watching that could give an indication.
We were just discussing (in another thread) what to do about all the 3rd party extensions which will break when 1.0 is installed. The first step is for someone to communicate with developers enough to write a document which explains what all the needed changes would be. Then write the document. Then we hope to communicate with all the extension authors, and point them to the info.
Even all that work does not guarantee than every author will want to upgrade their extension. Maybe in some cases other authors might adopt some broken ones, and fix them. But still, it sounds like some extensions will be permanently broken, except for the versions where they were created.
I guess we don't really have a time frame for coming up with this document. My best guess is that it won't be until after 1.0 is actually released.
Actually I think I'm going to ask in the chat, if some attention could be diverted from the bug fixing (which does not look all that serious to me) to start working on the extensions issue. I have no idea what the response might be. But I guess I"ll just do that now....
Maren has done a good job writing that document already:
https://wiki.inkscape.org/wiki/index.php/Updating_your_Extension_for_1.0
Thanks brynn and Martin. And thanks to Maren's efforts for her updates to the docs (I see recent activity in the history on that wiki page).
Having read that, and some of the extension code already, I'm going to hold off on in learning how to write extensions until the API and its associated documentation is stable, perhaps when version 1.x (where x>0) is available in my Linux Distributions package repositories. My tolerance for unstable API's is much, much lower than other developers, because I've been burned too many times over the years by "API flux".
However, I do have the luxury of waiting for "the good stuff" in 1.x, so that's what I plan to do until I change my mind on it. :)
I appreciate everyones efforts on this. Good Luck!
If you're not into writing actual extensions. Maybe you'd be interested in reviewing the API? It's python and the more eyes that can spend the odd hour looking at things there, I think we'll get a better quality extensions API.
Any help makes things better.
I'd rather revert back to being a user and wait for the experts to let the API stabilize.
Who told you there was experts? 🤣
I'm critical of the decision to change the API and break a lot of extentions. While the old API had some odd design decisions, I don't think that it justifies changing it and creating the need of updating all extensions.
Criticism is fine. The decision wasn't made lightly or with any sort of cavalier attitude. The goals were simple, move the quality control of Inkscape extensions from "oh my god it burns, it burns, why am I still alive, ahhhh!" to something approaching "well that's annoying". This includes requiring code to have tests, for the API itself to have tests, for it to be logically consistent and of a high quality following appropriate python PEP standards for code writing. It was also important to target python3, which would likely (and has already) killed off most old python extensions anyway since very few of them are compatible.
But we also knew there was no way to get all extensions to upgrade. So great care and attention was paid to the deprecation layer. Old extensions (that run on python3 at least) will still run with deprecation warnings and the warnings tell the developers how to upgrade the code. Our code will still run on python2 and 3 to make sure that Linux versions would still work with python2 (windows and mac are python3 only though)
The missing piece is documentation and tutorials. I've gotten only part way through the process of creating better materials before being called away to work on Inkscape itself. Any help here would be greatly helpful to the project.
This has been no thoughtless exercise in arrogance and one of the greatest regrets has been the lack of solid extensions community over which changes could be discussed and more people could be invited in to help. But we must work with what we have.
I wasn't aware that so many extensions would break from python3 on it's own would break many extensions. Having that in mind if the decision is made to do something that breaks the extensions, like the shift to python3, what I think was a good idea, one can just as well put in the work to clean up the API. Yeah, the consistency and documentation was kind of a mess. It's clear that it is grown over time. I learned most of what I know about the little tricks with the API by having a look at how other extensions do it. Hopefully that gets better. Maybe I will take some time and write a few tuts once the API is stable.