William S Fulton
2017-02-10 18:49:58 UTC
I would like developers to focus on releasing swig-3.1 in the near future
and propose some radical changes for this release and future development.
Usually we try not to break backwards compatibility in our point releases,
3.0.x. Version 3.1 is an opportunity to clear out some old cruft and drop
support for older target languages. Some riskier changes I've resisted
pulling into 3.0 can also be merged into 3.1, most notably the doxygen work.
There is a wiki page at
https://github.com/swig/swig/wiki/SWIG-3.1-Development containing the
aspirations of what should go into 3.1. I suggest we keep this up to date
as progress is made.
I have also sensed some frustration that some of the half finished work
never makes it into the mainline. I've resisted pulling in some of these
branches as the quality is sub-standard and not something that we can
support given how few developers there are. The reality is some of the
target languages are completely sub-standard too, yet they already exist in
the released versions and are not removed. I wonder if we should take a new
approach going forwards and propose a single code base but classify target
languages by one of two qualities.
1) First-class
These would be the target languages that are recognised as good quality and
fully functional. The classification needs to be backed up by a test-suite
that works and passes in Travis. Not all features will necessarily be
available though, eg director or nspace support might be missing.
2) Sub-standard
Any language not meeting the good quality label would fall into this
bracket.
I feel that it must be clear that a sub-standard language module is not up
to the expected quality and anyone choosing to use it should not be allowed
to file bug reports unless accompanied by patches to fix. This way
expectations are set and these language modules are made available 'as is'
and encouragement is made to help improve them if anyone wants them.
To this end, I propose any sub-standard module will require an additional
SWIG flag to make this clear. Something like:
-sub-standard-module-which-can-only-be-used-if-I-help-fix-problems. This
will also issue a wordy warning explaining exactly what this means to set
expectations. The flag should also how make it clear how to get involved in
order to move it into the first-class category.
This way we don't compromise on the quality of what we currently have and
we make neglected code more easily available and hopefuly encourage new
developer participation. Thoughts?
I would like to start the 3.1 branch by merging in the doxygen branch.
Vadim, any reason not to do this now? Going forwards, I'll merge master
regularly to the 3.1 branch and suggest we have Travis testing on both
master and the 3.1 branch. Unless there is a lot of developer participation
on the 3.1 branch, I expect it will take a few months to get ready in which
case we may need another one or two 3.0.x releases.
If we do this, we could emphasise the change in approach by calling it
version 4.0 instead.
William
and propose some radical changes for this release and future development.
Usually we try not to break backwards compatibility in our point releases,
3.0.x. Version 3.1 is an opportunity to clear out some old cruft and drop
support for older target languages. Some riskier changes I've resisted
pulling into 3.0 can also be merged into 3.1, most notably the doxygen work.
There is a wiki page at
https://github.com/swig/swig/wiki/SWIG-3.1-Development containing the
aspirations of what should go into 3.1. I suggest we keep this up to date
as progress is made.
I have also sensed some frustration that some of the half finished work
never makes it into the mainline. I've resisted pulling in some of these
branches as the quality is sub-standard and not something that we can
support given how few developers there are. The reality is some of the
target languages are completely sub-standard too, yet they already exist in
the released versions and are not removed. I wonder if we should take a new
approach going forwards and propose a single code base but classify target
languages by one of two qualities.
1) First-class
These would be the target languages that are recognised as good quality and
fully functional. The classification needs to be backed up by a test-suite
that works and passes in Travis. Not all features will necessarily be
available though, eg director or nspace support might be missing.
2) Sub-standard
Any language not meeting the good quality label would fall into this
bracket.
I feel that it must be clear that a sub-standard language module is not up
to the expected quality and anyone choosing to use it should not be allowed
to file bug reports unless accompanied by patches to fix. This way
expectations are set and these language modules are made available 'as is'
and encouragement is made to help improve them if anyone wants them.
To this end, I propose any sub-standard module will require an additional
SWIG flag to make this clear. Something like:
-sub-standard-module-which-can-only-be-used-if-I-help-fix-problems. This
will also issue a wordy warning explaining exactly what this means to set
expectations. The flag should also how make it clear how to get involved in
order to move it into the first-class category.
This way we don't compromise on the quality of what we currently have and
we make neglected code more easily available and hopefuly encourage new
developer participation. Thoughts?
I would like to start the 3.1 branch by merging in the doxygen branch.
Vadim, any reason not to do this now? Going forwards, I'll merge master
regularly to the 3.1 branch and suggest we have Travis testing on both
master and the 3.1 branch. Unless there is a lot of developer participation
on the 3.1 branch, I expect it will take a few months to get ready in which
case we may need another one or two 3.0.x releases.
If we do this, we could emphasise the change in approach by calling it
version 4.0 instead.
William