Short projects: Difference between revisions

From Octave
Jump to navigation Jump to search
(→‎Easy Closes: add note to patch 8369, add bug 41674)
m (→‎Easy Closes: remove closed bug)
 
(28 intermediate revisions by 7 users not shown)
Line 14: Line 14:
== Implement missing Matlab functions ==
== Implement missing Matlab functions ==


Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.
* Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.
 
== Test Octave functions for proper input handling ==
 
* Many functions either do insufficient input checking or the input requirements have changed over time.
* Contributors can try to break Octave function behavior with different types of input, and document the results.
* Users can check <em>expected behavior</em> according to the Octave help and, if applicable, expected compatible behavior according to [https://www.mathworks.com/help/matlab/ public facing Matlab documentation].
* Inputs to test can be:
** different numeric types - double, single, integer.
** non-numeric types - logical, string, cell, struct
** different input shapes - scalar, row/column vectors, 2D, 3D, & nD arrays, zero size arrays ([], 1x0, and 1x3x0 are all empty but may require different handling).
** char/string parameters: different case handling, partial matching behavior, invalid/nonsense parameters.
* For the input items above, does function behave acceptably? Are numerical or graphical outputs as expected? Is output consistent? Is any error message intelligible/meaningful to the user? 
* Optionally the behavior above can be tested against Matlab function output if it is available. If needed but not available, tests can be submitted to other developers for output checking.
** Note 1: There is much undocumented Matlab behavior.  Because this has the possibility of changing with little notice, fixing incompatibilities related to such undocumented behavior is considered on a case-by-case basis by the developer team. Documentation of such cases is always beneficial, however.
** Note 2: Only Matlab public documentation and function output may be compared.  <em>Internal Matlab code, even if available, should never even be looked at by a contributor. Contributions will be discarded if it is determined such action occurred.</em>
* Contributors can submit bug reports to the [https://savannah.gnu.org/bugs/?group=octave Octave Bug Tracker] documenting their findings.
* An example can be see in bug {{bug|64078}} comment #10 of looking through the /plot/draw functions for how they handle integer and logical inputs to numeric fields.
 


== Write Built-In Self Tests (BISTs) ==
== Write Built-In Self Tests (BISTs) ==
Line 28: Line 46:


== Easy Closes ==
== Easy Closes ==
Below is a non exhaustive list of bugs which should be looked at and appear to be easy  
Below is a non exhaustive list of bugs which should be looked at and appear to be easy. Completed scrub using 6.1 as non expert.  Status column provides notes from last review to facilitate addressing each bug.  (Reviewing and updating status of items in this list as well as adding new ones are themselves good beginner tasks.)
Status (working from oldest stopped at 51317 aka items 1001-1050)
 
Notes:  
Notes:  
*From this range ~5% could be closed
*The last full scrub came from hardy for v4.2
*The last full scrub came from hardy for v4.2
*Suspect many of the plotting and java bugs could be closed.
*Suspect many java bugs could be closed.
*Appears plotting bugs have been fixed, but not have been reviewed for 5 years.
*Did not include most documentation bugs.
*Experts: rik5, nrjank, etc. will be able to find significantly more to close.


{| class="wikitable"  
{| class="wikitable"  
Line 39: Line 59:
! bug !! bug title !! status
! bug !! bug title !! status
|-
|-
| {{bug|36954}} || datenum / datevec convert date-time string incorrectly during hour lost to DST || siko1056 suggests closing as won't fix
| {{bug|36954}} || datenum / datevec convert date-time string incorrectly during hour lost to DST || siko1056 suggests closing as won't fix. nrjank reverted from Postponed to Confirmed / removed Assigned To tag after dormant for 2 years.
|-
|-
| {{bug|39243}} || patch {x,y,z,c}data properties are not independent || hardy states original issue seems to be FIXED now
| {{bug|40357}} || OOM when converting from sparse double to sparse logical|| hardy thinks this might be a DUPLICATE, nrjank changed to Need Info, needs better test to determine if the OOM comes from known sparse indexing issue or something else.
|-
|-
| {{bug|39249}} ||imread and 32 bit (float) TIFF images || rik5 suggested closing
| {{bug|48088}} || document that issquare, iscolumn, isempty, etc operate on cell arrays|| documentation patch candidate submitted and needs review.
|-
|-
| {{bug|40357}} ||OOM when converting from sparse double to sparse logical|| hardy thinks this might be a DUPLICATE
| {{bug|49886}} || ezplot: octave does not warn when function not vectorized || Rik states This would be easy to fix if {{bug|42691}} was first solved. That bug was closed as fixed in August 2021, so supposedly this one should now be easier manageable. nrjank marked as Needs Info to determine if desired output is just adding a warning, or also matching matlab output.
|-
|-
| {{bug|41661}} || [octave forge] (generate_html) generate_package_html page header contains wrong links || cdf (OP) asks this item still relevant
| {{bug|49360}} || odeset lacks documentation for solver options || Needs someone to review and make a to-do list.
|-
| {{bug|41674}} || [octave forge] (image) reduce memory footprint of imresize|| nrjank suggests the bug has largely been solved (reduced 3x) by other changes on the default branch and the report could be closed unless further improvement (which would have to be done to imremap) is possible.
|-
| {{bug|42118}} || COW memory issues when extracting small slices from large arrays||rik5 isn't worth the maintenance burden
|-
|-
| {{bug|42282}} || overloaded vertcat fails if some rows contain only built-in types|| cmb suggests this is a DUPLICATE
| {{bug|53214}} || area.m needs update to implement ShowBaseline and other properties || nrjank states last remaining task is adjusting the axis limits to fit the data. This has been pushed for area.m. Left remaining is whether to do the same for plot.m which would require checking on/fixing failing tests in other functions.
|-
|-
| {{bug|43327}} || dir function is too slow|| siko1056 suggests to close as won't fix.
| {{bug|54437}} || optimset missing documentation for 5 options || Documentation task.  rik states AutoScaling, ComplexEqn, and Updating can be copied from fsolve.m so this would be an improvement.
|-
|-
| {{bug|43717}} || rats LEN Matlab incompatibility|| riks states wouldn't bother to fix this as Octave's solution seems better.  
| {{bug|55065}} || Implement uiopen and uisave || both a patch and m-file versions of the two functions have been separately submitted. they both need to be evaluated for fitness.
|-
|-
| {{bug|44130}} || [octave forge] (statistics) mvncdf outputs different results for same input parameters || mangosauce35 states not a bug but a matter of precision
| {{bug|56208}} || GUI Editor autocomplete list could show variables from current workspace || suggested it might be fixed, but appears to still not be meeting summary requst. marked as Needs Info
|-
|-
| {{bug|44971}} || [octave forge] (generate_html) fails to generate "See also" hyperlinks|| jbect questions if it is a DUPLICATE
| {{bug|57352}} || text height for blank line should approximate that of ordinary character || initial patch suggestion provided but still needs some trial and error to get good height behavior
|-
|-
| {{bug|45166}} || [octave forge] (communications) typos in function docstrings || appears can be closed
| {{bug|58530}} || missing functions: xline() and yline() || initial patch submitted in 2022, needs rework according to rik's comments
|-
| {{bug|45390}} || [octave forge] (communications) finddelay function|| appears can be closed
|-
| {{bug|45404}} || Breakpoints cannot be set in classdef methods or +package function files|| jwe suggest closing this
|-
| {{bug|45650}} || [octave forge] (communications) 'fmmod.m' help does not mention its last parameter (freqdev) || appears can be closed
|-
| {{bug|45944}} || eig(X,'nobalance') does not exist in Octave vs. Matlab || nir_krakauer shows this has been implemented
|-
| {{bug|46640}} || [octave forge] (statistics) Can't install if io is not loaded || lostbard asks if anyone still has this issue
|-
| {{bug|47496}} || Values in Workspace view are limited by 10 numbers || mtmiller states let's just call this won't fix
|-
| {{bug|47553}} || textscan Whitespace characters different from Matlab|| lachlan states You're welcome to close it
|-
| {{bug|48088}} || document that issquare, iscolumn, isempty, etc operate on cell arrays|| pot states this is probably good enough
|-
| {{bug|49072}} || assigning double arrays to cell arrays: matlab incompatibility? || mtmiller states may also be closed later as won't fix if no one reports any interest in working on this
|-
| {{bug|49091}} || MinGW std::acosh less accurate than Linux versions || rik5 states
This and {{bug|48312}} were supposed to be closed at the same time.
|-
| {{bug|49135}} || gnuplot: Default font must be set for "windows" terminal || rik5 states was implemented on stable branch prior to 4.2 and the default after
|-
| {{bug|49275}} || history_append: new boolean option to mimic bash "histappend" option || hardy states I think I will let it rest in peace.
|-
| {{bug|49360}} ||odeset lacks documentation for solver options || siko1056 on 28.09.2018 So maybe leave it open for another two years.
|-
| {{bug|53576}} || [octave forge] (symbolic) dsolve errors on sqrt coefficient|| cbm states should be fixed in the next sympy 1.4, can be closed
|-
| {{bug|54156}} || [octave forge] (communications) qfuncinv should use erfcinv instead of norminv || appears can be closed
|-
| {{bug|54679}} || datenum accepts a matrix, which is undocumented || apjanke provided a patch and phillipnienhuis states Documentation patches are really easy.
|-
| {{bug|55065}} || Implement uiopen and uisave || rik states they would be easy to implement
|-
| {{bug|58530}} || missing functions: xline() and yline() || rik states I can dust them off and add them to Octave.
|-
| {{bug|60515}} || trace documentation || jwe asks if there is anything to fix
|-
| {{bug|60763}} || use of function 'properties' within a classdef appears to confuse parser || jwe asks to close report
|}
|}


Line 111: Line 86:
|-
|-
! patch !! patch title !! status
! patch !! patch title !! status
|-
| {{patch|7537}} || Handle matlab way to store cell arrays in hdf5 files.|| nrjank states otherwise close bug as a 'won't fix'
|-
| {{patch|7825}} || built-in versions of base2dec and dec2base|| sebald states The fix is simple
|-
| {{patch|8046}} || [octave forge] (nan): ranks function - add support for multi-D arrays|| nrjank states patch likely can be closed.
|-
| {{patch|8369}} ||  [octave forge] (image): imresize - Change to imresize to reduce memory footprint || fgnievinski suggests this is a duplicate of a bug and requests someone please close the present one. nrjank suggests that the patch has been superseded by function changes on the default branch and the report should be  closed.
|-
| {{patch|8666}} || doc: adjusting octave examples test to exactly match output || siko1056 asks if anyone want to work on this otherwise we should close this item.
|-
| {{patch|8870}} || [octave forge] (odepkg) add metainfo.xml file for Gnome Software || nrjank asks if this patch be closed
|-
| {{patch|9066}} || [octave forge] (communications) rcosfir: new function (deprecated but still present in Matlab) || nir_krakauer states yes, it can be closed.
|-
| {{patch|9631}} || [octave forge] (benchmark) overhaul || mtmiller considers dropping this patch
|-
| {{patch|9693}} || [octave forge] (signal) sos2ss: new function || mtmiller states on 2018.09.26 feel free to ping or push if it gets to be the end of October
|-
|-
|}
|}
A list of patch reports with attachments not marked "Done or Cancelled" can be viewed in the SavannaAPI, [https://octave.space/savannah/api.php?Action=get&Format=HTMLCSS&OrderBy=SubmittedOn&OpenClosed=open&TrackerID=patch&AttachedFiles!=0&Category!=Forge,website&Status!=Done,Cancelled sorted by oldest first] or [https://octave.space/savannah/api.php?Action=get&Format=HTMLCSS&OrderBy=LastComment&OpenClosed=open&TrackerID=patch&AttachedFiles!=0&Category!=Forge,website&Status!=Done,Cancelled sorted by "longest since last comment" first]. While some of these older submissions may still be viable and just need a patch refresh to the current code base, many will have become out of date or rendered inapplicable due to code or function changes, and could be closed as 'Wont Fix'.


== See also ==
== See also ==

Latest revision as of 18:35, 14 September 2023

This is a collection of small projects to start contributing to Octave. Projects of long duration are listed in the Projects page.
Info icon.svg
If you never contributed to Octave before, we suggest to start with our Developer FAQ.

Review and fix existing bugs[edit]

  • Review bugs that catch your interest on the Octave bug tracker on GNU Savannah.
    • A modern interface to the Octave bug tracker is given by SavannahAPI.
  • Discuss with the developers there how to fix that bug or upload a patch there.
  • Some bugs have already patches attached.
    • Help testing those patches.
    • Help updating outdated patches to the latest development version (this requires some Mercurial knowledge).

Implement missing Matlab functions[edit]

Test Octave functions for proper input handling[edit]

  • Many functions either do insufficient input checking or the input requirements have changed over time.
  • Contributors can try to break Octave function behavior with different types of input, and document the results.
  • Users can check expected behavior according to the Octave help and, if applicable, expected compatible behavior according to public facing Matlab documentation.
  • Inputs to test can be:
    • different numeric types - double, single, integer.
    • non-numeric types - logical, string, cell, struct
    • different input shapes - scalar, row/column vectors, 2D, 3D, & nD arrays, zero size arrays ([], 1x0, and 1x3x0 are all empty but may require different handling).
    • char/string parameters: different case handling, partial matching behavior, invalid/nonsense parameters.
  • For the input items above, does function behave acceptably? Are numerical or graphical outputs as expected? Is output consistent? Is any error message intelligible/meaningful to the user?
  • Optionally the behavior above can be tested against Matlab function output if it is available. If needed but not available, tests can be submitted to other developers for output checking.
    • Note 1: There is much undocumented Matlab behavior. Because this has the possibility of changing with little notice, fixing incompatibilities related to such undocumented behavior is considered on a case-by-case basis by the developer team. Documentation of such cases is always beneficial, however.
    • Note 2: Only Matlab public documentation and function output may be compared. Internal Matlab code, even if available, should never even be looked at by a contributor. Contributions will be discarded if it is determined such action occurred.
  • Contributors can submit bug reports to the Octave Bug Tracker documenting their findings.
  • An example can be see in bug #64078 comment #10 of looking through the /plot/draw functions for how they handle integer and logical inputs to numeric fields.


Write Built-In Self Tests (BISTs)[edit]

Writing BISTs improves Octave's regression testing and ensures that we don't break anything when we add new features.

Work on Octave packages[edit]

Easy Closes[edit]

Below is a non exhaustive list of bugs which should be looked at and appear to be easy. Completed scrub using 6.1 as non expert. Status column provides notes from last review to facilitate addressing each bug. (Reviewing and updating status of items in this list as well as adding new ones are themselves good beginner tasks.)

Notes:

  • The last full scrub came from hardy for v4.2
  • Suspect many java bugs could be closed.
  • Appears plotting bugs have been fixed, but not have been reviewed for 5 years.
  • Did not include most documentation bugs.
  • Experts: rik5, nrjank, etc. will be able to find significantly more to close.
bug bug title status
#36954 datenum / datevec convert date-time string incorrectly during hour lost to DST siko1056 suggests closing as won't fix. nrjank reverted from Postponed to Confirmed / removed Assigned To tag after dormant for 2 years.
#40357 OOM when converting from sparse double to sparse logical hardy thinks this might be a DUPLICATE, nrjank changed to Need Info, needs better test to determine if the OOM comes from known sparse indexing issue or something else.
#48088 document that issquare, iscolumn, isempty, etc operate on cell arrays documentation patch candidate submitted and needs review.
#49886 ezplot: octave does not warn when function not vectorized Rik states This would be easy to fix if #42691 was first solved. That bug was closed as fixed in August 2021, so supposedly this one should now be easier manageable. nrjank marked as Needs Info to determine if desired output is just adding a warning, or also matching matlab output.
#49360 odeset lacks documentation for solver options Needs someone to review and make a to-do list.
#53214 area.m needs update to implement ShowBaseline and other properties nrjank states last remaining task is adjusting the axis limits to fit the data. This has been pushed for area.m. Left remaining is whether to do the same for plot.m which would require checking on/fixing failing tests in other functions.
#54437 optimset missing documentation for 5 options Documentation task. rik states AutoScaling, ComplexEqn, and Updating can be copied from fsolve.m so this would be an improvement.
#55065 Implement uiopen and uisave both a patch and m-file versions of the two functions have been separately submitted. they both need to be evaluated for fitness.
#56208 GUI Editor autocomplete list could show variables from current workspace suggested it might be fixed, but appears to still not be meeting summary requst. marked as Needs Info
#57352 text height for blank line should approximate that of ordinary character initial patch suggestion provided but still needs some trial and error to get good height behavior
#58530 missing functions: xline() and yline() initial patch submitted in 2022, needs rework according to rik's comments

The equivalent suggestions for patches.

patch patch title status

A list of patch reports with attachments not marked "Done or Cancelled" can be viewed in the SavannaAPI, sorted by oldest first or sorted by "longest since last comment" first. While some of these older submissions may still be viable and just need a patch refresh to the current code base, many will have become out of date or rendered inapplicable due to code or function changes, and could be closed as 'Wont Fix'.

See also[edit]