Short projects: Difference between revisions

From Octave
Jump to navigation Jump to search
(→‎Function Compatibility: update griddata status)
(→‎Easy Closes: 3 bugs have been closed and removed from list.)
(44 intermediate revisions by 16 users not shown)
Line 1: Line 1:
This is a list of small projects to start helping with Octave development. The following items could be done
:''This is a collection of small projects to start contributing to Octave. Projects of long duration are listed in the [[Projects]] page.''
* in a reasonable amount of time (a few hours) and
* without Octave development knowledge.


{{Note|If you never contributed to Octave before, we suggest to start with our [[Developer FAQ]].}}
{{Note|If you never contributed to Octave before, we suggest to start with our [[Developer FAQ]].}}


{{warning|Please do not submit patches/fixes to the Octave mailing lists.  Upload your work at the respective Savannah bug tracker pages.  Of course you may always ask questions related to your work on the mailing list.}}
== Review and fix existing bugs ==


Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.
* Review bugs that catch your interest on the [https://savannah.gnu.org/bugs/?group=octave Octave bug tracker] on GNU Savannah.
** A modern interface to the Octave bug tracker is given by [https://octave.space/savannah/ SavannahAPI].
* Discuss with the developers there how to fix that bug or [[Mercurial|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).


The list is meant to be dynamic -- please add, remove, and comment on it. And since the things are likely to be of short duration, don't ask if is there is anyone already working on it. Projects of long duration should be added to the [[Projects]] page instead.
== Implement missing Matlab functions ==


Another way to catch a small project is to [https://lists.gnu.org/mailman/listinfo/octave-bug-tracker subscribe to the bug tracker] (note that the bug tracker has a lot of activity).  You may find it useful to review the [http://wiki.octave.org/wiki/index.php?title=Short_projects&action=history history] of this short projects page, to give you an idea of past successful short projects.
Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.
 
 
== Bugs==
 
Please help with the triage of [https://savannah.gnu.org/bugs/?group=octave existing bugs] to populate the list of easy bugs below.
 
* {{bug|41674}} - image package: temporary arrays in imresize are doubles
* {{patch|8368}} - imremap - Change to imremap to reduce memory footprint
* {{patch|8369}} - imresize - Change to imresize to reduce memory footprint
 
== Missing functions / feature requests ==
 
Implement missing Octave functions or implement desired features and general improvements.
 
* {{bug|32088}} - <code>-ALL</code> option for {{manual|which}}
* {{bug|40211}} - More compact output for structs and cell arrays
* {{bug|41530}} - Editor debug mode could show a dbup/dbdown GUI component
* {{bug|41796}} - extend sub2ind and ind2sub
* {{bug|41844}} - GUI Debug Menu could offer "Stop If..."
* {{bug|47239}} - calling system without shell
* {{bug|57699}} - 'clipboard' function to interact with clipboard contents
* {{bug|39439}}, {{bug|39434}} - Use non-empty identifiers in all warnings and errors issued by Octave
** You may tackle as many or as few IDs as you have time for. As it is a widespread issue, finding occurrences in the source code should give you valuable knowledge about the way Octave files are organized.  When raising errors and warnings try to use the ids that are documented in the functions {{manual|warning_005fids|warning_ids}} and {{manual|error_005fids|error_ids}}.  If you really need a new id (please, first read the ones already there!), please add it to those functions as well.  If you see other ids used in core that are not given by the functions mentioned above, please, report or submit patch for them, in addition to the patch to the calling functions as well.
* Lists of missing functions for [[:Category:Missing functions|several packages]].
** It would help to group the missing functions in the [[image package]], as per [https://www.mathworks.com/help/images/referencelist.html] (similar to what was done in the [[signal package]] wiki page); please keep the original alphabetical list intact.
 
== Function Compatibility ==
 
A number of functions are implemented, but may have known incompatibilities to Matlab or only partially handled option sets, etc.
 
* griddata:  Octave's griddata  functions are only partly Matlab compatible.  There are un-implemented interpolation methods: 'cubic' for 2D and 'natural' for 2D and 3D. The 2D case should be straightforward once the correct algorithm is determined. But 3D cases are handled by passing to griddata3 and griddatan, and griddatan does not have a requirement to handle 'natural', so some thought will need to go into how to implement that one.  It may involve removing the griddata3 passthrough altogether.  {{bug|35178}} (also relevant background in {{bug|33539}}, {{bug|57323}}, and {{bug|57835}}.)
 
== Review or create changesets ==
 
Sometimes a standalone file or a diff file is submitted; Octave maintainers prefer a changeset though; preparing a changeset will expedite bug fixing. See the [[Mercurial]] and [[Commit message guidelines]] page how to do it.
 
* Sorry none yet.


== Write Built-In Self Tests (BISTs) ==
== Write Built-In Self Tests (BISTs) ==
Line 57: Line 23:
* [[BIST for m-files]].  See also [[Projects#Tests]].
* [[BIST for m-files]].  See also [[Projects#Tests]].


== Miscellaneous ==
== Work on Octave packages ==
 
* Take a look at https://gnu-octave.github.io/packages/ if you would like to work on some package there.
 
== Easy Closes ==
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.


* C++ cleanup of packages after the switch to exceptions (late 2015). See [[Invert if/else/error]].
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.


* Use "units.h" from [http://www.gnu.org/software/units/ GNU units] in [http://octave.sourceforge.net/miscellaneous/function/units.html function units] (from the Octave-Forge [http://octave.sourceforge.net/miscellaneous/ miscellaneous package]) rather than making a system call and parsing its output (and having to handle multiple versions of it). This change will make it much more robust. It likely will alleviate the requirement of having [http://www.gnu.org/software/units/ GNU units] installed in the system separately by the user. This requires knowledge of C (units is written on C) and C++ to write its Octave interface. It can be very easy if the units.h truly allows to be used as library or maybe impossible if it does not. This has not been investigated yet.
{| class="wikitable"  
|-
! 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. philipnienhuis changed to Postponed and expresses interest in revisiting.
|-
| {{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|43717}} || rats LEN Matlab incompatibility|| riks states wouldn't bother to fix this as Octave's solution seems better, but points out that default length has changed and Octave should perhaps follow that change.
|-
| {{bug|45404}} || Breakpoints cannot be set in classdef methods or +package function files|| package part fixed. classdef part remains. jwe suggest closing either this or {{bug|46451}} and tracking classdef on the one that remains, or close both and make a new report. changed to Need Info for someone familiar to decide what would be best for tracking the issue after 2 yrs of dormancy.
|-
| {{bug|48088}} || document that issquare, iscolumn, isempty, etc operate on cell arrays|| documentation patch candidate submitted and needs review.
|-
| {{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. This bug was closed August 2021
|-
| {{bug|49360}} ||odeset lacks documentation for solver options || Needs someone to review and make a to-do list.
|-
| {{bug|51560}} ||[octave forge] (communications) Wrong dimension in pskmod.m output || nrjank had a solution for the bug (not attached), but stopped for more improvements.
|-
| {{bug|53214}} ||area.m needs update to implement ShowBaseline and other properties || nrjank states the main bug has been fixed. Suggests closing or retitle
|-
| {{bug|53670}} ||subplot handle changes after window resizing || nrjank suggests this was fixed in fixed between 6.1 and 6.3
|-
| {{bug|54437}} ||optimset missing documentation for 5 options || rik states AutoScaling, ComplexEqn, and Updating can be copied from fsolve.m so this would be an improvement.
|-
| {{bug|54679}} || datenum accepts a matrix, which is undocumented || apjanke provided a patch. patch updated to current default tip and nrjank suggests ready to push.
|-
| {{bug|55065}} || Implement uiopen and uisave || rik states they would be easy to implement
|-
| {{bug|56208}} || GUI Editor autocomplete list could show variables from current workspace || appears to be fixed
|-
| {{bug|57352}} || text height for blank line should approximate that of ordinary character || rik thinks this will be quick
|-
| {{bug|58530}} || missing functions: xline() and yline() || rik states I can dust them off and add them to Octave - updated unimplemented_functions list but has postponed attention until after v7.1.
|-
| {{bug|59004}} || [octave forge] (communications) Error when trying to build (constness of cat op args)|| ready to close nir_krakauer added the patch and the newest communications package  v 1.2.3
|-
| {{bug|59466}} || [octave forge] (communications) de2bi improper input handling || ready to close nir_krakauer added the patch and the newest communications package  v 1.2.3
|}


* Review old bugs: The [http://bugs.octave.org Octave bug tracker] has over 1,000 reports dating all the way back to 2010. Some have patches submitted but can no longer be directly applied to the current codebase. Some have never had patches developed. Some are old, unfulfilled wish list or missing function requests. And some may no longer be bugs, having been fixed or rendered irrelevant due to other changes code changes over the years. Reviewing these old bugs, testing the original bug report to see if the same results still occur, if Matlab compatibility has changed, or if submitted patches can still be applied cleanly (and potentially cleaning up patches so they can apply cleanly), can help update and clean up the bug database.
The equivalent suggestions for patches.
{| class="wikitable"
|-
! patch !! patch title !! status
|-
|}
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 ==

Revision as of 22:05, 21 November 2022

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

  • 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

Use the Savannah patch tracker for submissions unrelated to an existing bug.

Write Built-In Self Tests (BISTs)

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

Work on Octave packages

Easy Closes

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.

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. philipnienhuis changed to Postponed and expresses interest in revisiting.
#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.
#43717 rats LEN Matlab incompatibility riks states wouldn't bother to fix this as Octave's solution seems better, but points out that default length has changed and Octave should perhaps follow that change.
#45404 Breakpoints cannot be set in classdef methods or +package function files package part fixed. classdef part remains. jwe suggest closing either this or #46451 and tracking classdef on the one that remains, or close both and make a new report. changed to Need Info for someone familiar to decide what would be best for tracking the issue after 2 yrs of dormancy.
#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. This bug was closed August 2021
#49360 odeset lacks documentation for solver options Needs someone to review and make a to-do list.
#51560 [octave forge] (communications) Wrong dimension in pskmod.m output nrjank had a solution for the bug (not attached), but stopped for more improvements.
#53214 area.m needs update to implement ShowBaseline and other properties nrjank states the main bug has been fixed. Suggests closing or retitle
#53670 subplot handle changes after window resizing nrjank suggests this was fixed in fixed between 6.1 and 6.3
#54437 optimset missing documentation for 5 options rik states AutoScaling, ComplexEqn, and Updating can be copied from fsolve.m so this would be an improvement.
#54679 datenum accepts a matrix, which is undocumented apjanke provided a patch. patch updated to current default tip and nrjank suggests ready to push.
#55065 Implement uiopen and uisave rik states they would be easy to implement
#56208 GUI Editor autocomplete list could show variables from current workspace appears to be fixed
#57352 text height for blank line should approximate that of ordinary character rik thinks this will be quick
#58530 missing functions: xline() and yline() rik states I can dust them off and add them to Octave - updated unimplemented_functions list but has postponed attention until after v7.1.
#59004 [octave forge] (communications) Error when trying to build (constness of cat op args) ready to close nir_krakauer added the patch and the newest communications package v 1.2.3
#59466 [octave forge] (communications) de2bi improper input handling ready to close nir_krakauer added the patch and the newest communications package v 1.2.3

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