Short projects: Difference between revisions

From Octave
Jump to navigation Jump to search
(→‎Easy Closes: added note and link to 'old patches' list)
(46 intermediate revisions by 15 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.


{{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.}}
{{Note|If you never contributed to Octave before, we suggest to start with our [[Developer FAQ]].}}


Use the [https://savannah.gnu.org/patch/?func=additem&group=octave Savannah patch tracker] for submissions unrelated to an existing bug.
== Review and fix existing bugs ==


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.
* 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).


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.
== 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.


== Bugs==
== Write Built-In Self Tests (BISTs) ==


Please help with the triage of [https://savannah.gnu.org/bugs/?group=octave existing bugs] to populate the list of easy bugs below.
Writing BISTs improves Octave's regression testing and ensures that we don't break anything when we add new features.


* {{bug|41674}} - image package: temporary arrays in imresize are doubles
* [[Add_BIST_tests_for_octave_functions_written_in_C%2B%2B| BIST for C++ functions]]
* {{patch|8368}} - imremap - Change to imremap to reduce memory footprint
* [[BIST for m-files]]. See also [[Projects#Tests]].
* {{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|56639}} - rescale: new function to scale an array to match a given interval
* {{bug|39439}}, {{bug|39434}} - Use non-empty identifiers in all warnings and errors issued by Octave
* {{bug|57041}}} - Missing matlab function: startsWith
** 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 [http://www.mathworks.com/help/images/functionlist.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.
== Work on Octave packages ==


* Sorry none yet.
* Take a look at https://gnu-octave.github.io/packages/ if you would like to work on some package there.


== Review or create changesets ==
== Easy Closes ==
Below is a non exhaustive list of bugs which should be looked at and appear to be easy
Status (working from oldest stopped at 51317 aka items 1001-1050)
Notes:
*From this range ~5% could be closed
*The last full scrub came from hardy for v4.2
*Suspect many of the plotting and java bugs could be closed.


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.
{| class="wikitable"
 
|-
* Sorry none yet.
! bug !! bug title !! status
 
|-
== Write Built-In Self Tests (BISTs) ==
| {{bug|36954}} || datenum / datevec convert date-time string incorrectly during hour lost to DST || siko1056 suggests closing as won't fix
 
|-
Writing BISTs improves Octave's regression testing and ensures that we don't break anything when we add new features.
| {{bug|39243}} || patch {x,y,z,c}data properties are not independent || hardy states original issue seems to be FIXED now
 
|-
* [[Add_BIST_tests_for_octave_functions_written_in_C%2B%2B| BIST for C++ functions]]
| {{bug|39249}} ||imread and 32 bit (float) TIFF images || rik5 suggested closing
* [[BIST for m-files]]. See also [[Projects#Tests]].
|-
| {{bug|40357}} ||OOM when converting from sparse double to sparse logical|| hardy thinks this might be a DUPLICATE
|-
| {{bug|41661}} || [octave forge] (generate_html) generate_package_html page header contains wrong links || cdf (OP) asks this item still relevant
|-
| {{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|43327}} || dir function is too slow|| siko1056 suggests to close as won't fix.
|-
| {{bug|43717}} || rats LEN Matlab incompatibility|| riks states wouldn't bother to fix this as Octave's solution seems better.
|-
| {{bug|44130}} || [octave forge] (statistics) mvncdf outputs different results for same input parameters || mangosauce35 states not a bug but a matter of precision
|-
| {{bug|44971}} || [octave forge] (generate_html) fails to generate "See also" hyperlinks|| jbect questions if it is a DUPLICATE
|-
| {{bug|45166}} || [octave forge] (communications) typos in function docstrings || appears can be closed
|-
| {{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|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.
|}


== Miscellaneous ==
The equivalent suggestions for patches.
{| class="wikitable"
|-
! 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|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'.


* C++ cleanup of packages after the switch to exceptions (late 2015). See [[Invert if/else/error]].
== See also ==


* 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.
* [[Projects]]


[[Category:Development]]
[[Category:Development]]
[[Category:Project Ideas]]
[[Category:Project Ideas]]
[[Category:Missing functions]]
[[Category:Missing functions]]

Revision as of 16:55, 30 August 2021

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 Status (working from oldest stopped at 51317 aka items 1001-1050) Notes:

  • From this range ~5% could be closed
  • The last full scrub came from hardy for v4.2
  • Suspect many of the plotting and java bugs could be closed.
bug bug title status
#36954 datenum / datevec convert date-time string incorrectly during hour lost to DST siko1056 suggests closing as won't fix
#39243 patch {x,y,z,c}data properties are not independent hardy states original issue seems to be FIXED now
#39249 imread and 32 bit (float) TIFF images rik5 suggested closing
#40357 OOM when converting from sparse double to sparse logical hardy thinks this might be a DUPLICATE
#41661 [octave forge] (generate_html) generate_package_html page header contains wrong links cdf (OP) asks this item still relevant
#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.
#42118 COW memory issues when extracting small slices from large arrays rik5 isn't worth the maintenance burden
#42282 overloaded vertcat fails if some rows contain only built-in types cmb suggests this is a DUPLICATE
#43327 dir function is too slow siko1056 suggests to close as won't fix.
#43717 rats LEN Matlab incompatibility riks states wouldn't bother to fix this as Octave's solution seems better.
#44130 [octave forge] (statistics) mvncdf outputs different results for same input parameters mangosauce35 states not a bug but a matter of precision
#44971 [octave forge] (generate_html) fails to generate "See also" hyperlinks jbect questions if it is a DUPLICATE
#45166 [octave forge] (communications) typos in function docstrings appears can be closed
#45390 [octave forge] (communications) finddelay function appears can be closed
#45404 Breakpoints cannot be set in classdef methods or +package function files jwe suggest closing this
#45650 [octave forge] (communications) 'fmmod.m' help does not mention its last parameter (freqdev) appears can be closed
#45944 eig(X,'nobalance') does not exist in Octave vs. Matlab nir_krakauer shows this has been implemented
#47496 Values in Workspace view are limited by 10 numbers mtmiller states let's just call this won't fix
#47553 textscan Whitespace characters different from Matlab lachlan states You're welcome to close it
#48088 document that issquare, iscolumn, isempty, etc operate on cell arrays pot states this is probably good enough
#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
#49091 MinGW std::acosh less accurate than Linux versions rik5 states

This and #48312 were supposed to be closed at the same time.

#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
#49275 history_append: new boolean option to mimic bash "histappend" option hardy states I think I will let it rest in peace.
#49360 odeset lacks documentation for solver options siko1056 on 28.09.2018 So maybe leave it open for another two years.
#53576 [octave forge] (symbolic) dsolve errors on sqrt coefficient cbm states should be fixed in the next sympy 1.4, can be closed
#54156 [octave forge] (communications) qfuncinv should use erfcinv instead of norminv appears can be closed
#54679 datenum accepts a matrix, which is undocumented apjanke provided a patch and phillipnienhuis states Documentation patches are really easy.
#55065 Implement uiopen and uisave rik states they would be easy to implement
#58530 missing functions: xline() and yline() rik states I can dust them off and add them to Octave.

The equivalent suggestions for patches.

patch patch title status
#7537 Handle matlab way to store cell arrays in hdf5 files. nrjank states otherwise close bug as a 'won't fix'
#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, 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