Re: Extensions for the 1.0 release (report)

Bryce Harrington <[email protected]> Mon, 8 Apr 2019 21:52:04 -0700
Newsgroups gmane.comp.graphics.inkscape.devel
Message-ID <[email protected]>
Ok, so with those improvements and triages, it's changed from 95/149
(64%) to 119/142 (84%)?  That's very good progress.

From today's discussions, moving uniconvertor to a separate repository
sounds like it's the right move.  And sounds like a good idea to
leverage it for testing of the extensions manager.

Bryce

On Mon, Apr 08, 2019 at 11:58:52PM -0400, [email protected] wrote:
> Sorry for the incomplete messages, evolution decided to devolve.
> 
> ---
> 
> Thanks Bryce,
> 
> I have an updated list. Currently tests are passing for python2 and
> python3 for all comparison tests.
> 
>  * 23 Extensions without comparison tests
>  * 119 Added Comparison Tests
>   - 0 Causing an Error (all fixed)
>   - 119 Working extensions with perfect matches (some of our output was
> actually better and more consistent than 0.92)
> 
> As you know bryce we've put the uniconvertor extensions into their own
> repository on GitLab and they're actually one of the trial packages for
> the new Inkscape Extensions Manager.
> 
> There was one extension that opens up a serial port to a piece of
> hardware... that's a bit of a bs to test.
> 
> But all other parts of the report are the same so far.
> 
> Best Regards, Martin Owens
> 
> On Mon, 2019-04-08 at 09:46 -0700, Bryce Harrington wrote:
> > On Mon, Apr 01, 2019 at 10:15:24PM -0400, [email protected] wrote:
> > > Extensions 1.0 - 2019-03-24 to 2019-04-01
> > > 
> > > I've completed a very exausting slog through all of our extensions
> > > for
> > > the Inkscape 1.0 release. Below is a detailed report on where we
> > > currently stand with our extensions repository.
> > 
> > Thanks for putting this list together.
> > 
> > Am I adding things up correctly, that there are 149 total
> > dependencies,
> > of which 95 (64%) are in perfect shape?
> > 
> > Of the remaining 56, then, half work but produce different output,
> > and
> > the other half we either don't know how to test it or the extension
> > has
> > other troubles.
> > 
> > The work that's gone into the extension repository so far has been
> > long needed.  We've accepted extensions with a wide diversity of
> > coding
> > standards (including a lot of messy cut-and-paste coding), so this
> > effort ups our game in a big way here.  We've never required
> > extensions
> > to include testing, so establishing testability at any level is a
> > huge
> > advance.  This effort will make our core extensions much more
> > maintainable through the future.
> > 
> > It would be nice to get all of these old extensions to 100% perfect
> > in
> > our new processes, however that may be too unrealistic in a practical
> > timeframe.  "Perfect is the enemy of the good".  So, what if we did a
> > bit of triage on this list?  Some extensions may not be that
> > important
> > to users and could be moved to branches (with corresponding bug
> > reports
> > so we don't forget about them.)
> > 
> > Perhaps a the goal of 95% working with perfect test matches could be
> > set
> > for us to start the beta release?  That would be a significant
> > improvement over 64%, but still leave breathing room for problematic
> > extensions.  That number could be reached by:
> > 
> >   a) Writing and improving tests for important extensions
> >   b) Fixing extensions with bad test results
> >   c) Dropping unimportant extensions with bad or no tests
> >   d) Bringing in some new extensions (boosting the denominator)
> > 
> > > There are some decisions to make wrt how we support dependancies,
> > > how
> > > we test extensions that call out to outside programs and how we fix
> > > the remaining issues.
> > 
> > Extensions that rely on external programs do sound like they'll be
> > particularly tricky to test.  On the other hand, my guess is that
> > many
> > of these enable interoperability with other applications, or do file
> > format conversion, both of which are going to be of high importance
> > to
> > chunks of our userbase.
> > 
> > So, while difficult, figuring out an effective way to do testing of
> > these would be hugely valuable.
> > 
> > > == Overview ==
> > > 
> > >  * 23 Extensions without comparison tests
> > > 
> > >  * 119 Added Comparison Tests
> > >   - 0 Causing an Error (all fixed)
> > >   - 95 Working extensions with perfect matches
> > >   - 24 Failed to match (output is different)
> > > 
> > >  * 7 Missing, Removed or untestable extensions
> > >   - 1 Delayed fix because of Merge Request
> > >   - 1 None Inkex based python extension
> > >   - 4 Removed extensions
> > >   - 1 Windows extension
> > > 
> > > === Failed Extensions ===
> > > 
> > > Large number of differences or just borked:
> > > 
> > >  - perspective, pixelsnap
> > > 
> > > Large number of differences or format is not svg:
> > > 
> > >  - dpiswitcher, extrude, dxf_outlines, hpgl_output
> > 
> > Guessing these extensions are important for plotting/engraving?
> > 
> > > Medium number of differences related to path transformatons:
> > > 
> > >  - foldablebox, polyhedron_3d, summersnight
> > 
> > These sound fairly specialized?  Maybe not as crucial?
> > 
> > > Medium number of differences, various attributes missing from
> > > output:
> > > 
> > >  - grid_polar, grid_cartesian, lindenmayer, whirl
> > 
> > The first two are probably of more general usefulness than the latter
> > two, but guessing all four would have some value in bringing up to
> > date.
> > 
> > > Tiny or single difference related to finding layer center:
> > > 
> > >  - render_barcode, render_barcode_datamatrix,
> > > render_barcode_qrcode,
> > > render_gear_rack, render_gears, spirograph, split, triangle,
> > > wireframe_sphere, grid_isometric, hershey
> > 
> > Sounds like these are the low hanging fruit of this list, and some of
> > those we know are high importance.
> > 
> > > === Removed: External dependancy, shell script (not python) ===
> > > 
> > >  - eqtexsvg, plt_output, sk1_output, wmf_output,
> > 
> > Are these the uniconverter based extensions?  Are there any others?
> > 
> > A question is whether people are actively using these file formats.
> > 
> > > === Other ===
> > > 
> > > gcodetools - Held up because of merge request, cleanup is very
> > > large.
> > 
> > May be worth pushing through on this one.
> > 
> > > dm2svg - None inkex python extension, could be converted
> > 
> > "import a DHW file from ACECAD DigiMemo".  I'm not sure what that is
> > so
> > no idea on its importance, but looks like Thomas Holder did some work
> > on
> > it so presumably it's close?
> > 
> > > print_win32_vector - Windows only (untestable) but also an
> > > infurating
> > > copy of dxf_outlines.py AND untestable because it requires access
> > > to
> > > printers to print things.
> > 
> > Looks like it hooks into winspool.drv and gdi32.dll, that may become
> > hard to test even on windows going forward.  Is it possible this is
> > not
> > used much?  If so, then this might be a good candidate to move out of
> > the main repo to a branch.
> > 
> > > === Extensions without comparison tests ===
> > > 
> > > color_randomize, dxf12_outlines, fractalize, frame,
> > > generate_voronoi,
> > > gimp_xcf, inkwebeffect, interp_attr_g, jitternodes, layout_nup,
> > > loren_ipsum, markers_strokepaint, measure, pathmodifier,
> > > pathscatter,
> > > prepare_file_save_as, print_win32_vector, render_alphabetsoup,
> > > rtree,
> > > rubberstretch, synfig_output, synfig_prepare, text_randomcase
> > 
> > Are color_randomize, fractilize, generate_voronoi, jitternodes,
> > pathscatter, and text_randomcase problematic due to their use of
> > randomness?  Would adding support for fixed seeding help make testing
> > them more tractable?
> > 
> > Several of the others are file format or external app interop
> > extensions, so may be difficult to test for that reason (but still
> > important to give attention to.)
> > 
> > Of the remainder, those sound like priorities for doing test work on,
> > they may be reasonably straightforward to get off this list.
> > 
> > > == Work Done ==
> > > 
> > >  - Unit Tests: 149 files changed, 1311 insertions(+), 1462
> > > deletions(-)
> > >  - Test Framework:  3 files changed, 308 insertions(+), 23
> > > deletions(-)
> > >  - Extensions: 57 files changed, 862 insertions(+), 1185
> > > deletions(-)
> > >  - Inkex API: 9 files changed, 216 insertions(+), 40 deletions(-)
> > 
> > Thanks again for this list, hoping progress continues strong so we
> > can
> > get this resolved and proceed with the release.  Keep us updated, I'd
> > like to keep track of what percentage of the extensions are
> > considered
> > perfect, so I have a feel for roughly when we'll be hitting 85, 90,
> > and
> > 95%.
> > 
> > Bryce