aboutsummaryrefslogtreecommitdiff
path: root/desiredata/src/TODO
diff options
context:
space:
mode:
Diffstat (limited to 'desiredata/src/TODO')
-rw-r--r--desiredata/src/TODO454
1 files changed, 454 insertions, 0 deletions
diff --git a/desiredata/src/TODO b/desiredata/src/TODO
new file mode 100644
index 00000000..0e866840
--- /dev/null
+++ b/desiredata/src/TODO
@@ -0,0 +1,454 @@
+DesireData's TODO list, $Id: TODO,v 1.1.2.28.2.63 2007-09-09 17:45:45 matju Exp $
+
+LEGEND:
+ [c] client
+ [s] server
+ [b] both
+ [x] done
+
+------------------8<--------cut-here--------8<------------------
+
+[s] encapsulate wires list
+[s] observable boxes list
+[s] observable wires list
+[s] gop filter
+[s] triad
+
+------------------8<--------cut-here--------8<------------------
+
+[s] class_setreinit(t_pd *, t_symbol *s, int argc, t_atom *argv)
+[s] fix canvas_merge, canvas_remove_nth, canvas_sort
+[s] recreate abstr instances after abstr save
+[s] [bng] messages get duplicated upon entering a subpatch???
+[s] rewrite [any]
+[s] counter-test.pd shows [nbx] jamming the update queue if too many updates at once...?
+[s] queue priorities cause double call to changed() to change the expected order of updates (dangling pointer in client)
+[c] Ctrl+e doesn't change Edit menu entry; likewise for visual_diff
+[c] Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes? Save Changes?
+[s] canvas_resortinlets confuses wire upload
+[s] should do canvas_resortinlets after moving objects
+[c] split View into several classes
+[s] extraneous space at end of binbuf_gettext
+[s] make t_hash thread-safe (use external iterator)
+[s] take advantage of the support for zero-size arrays in gcc.
+[s] writesf_free has deadlock. (assigned to Sylvain)
+[b] look into race conditions and locking
+[c] figure out what to do about the existence of [$self look] vs ordinary attributes (pointer_sense= and such)
+[s] [error]
+[b] localise error messages
+[b] colorised console with hyperlinked error messages
+[c] atomic undo
+[c] undo subpatch
+[c] numbox: is_log
+[c] change the order of the fields in Properties if it makes things more logical than the order of fields of savefn
+[c] [hradio] : chg -> is_log
+[c] [vu] props : scale should appear instead of is_log
+[s] figure out how to keep [pd] subscribed even when closed.
+[s] new parser for nested lists and extended symbols
+[s] update s_audio.c to support any number of devices (not just max 4)
+[s] look for new bugs involving %*s added around 2007.06.28
+[c] new way to do View get_canvas
+[b] too much duplication of inlets vs outlets
+[s] too much duplication of adc vs dac (see s_audio.c)
+[c] implement multiple cascaded languages (use listbox+up+down)
+[c] def Menuable raise {} {wm withdraw $w; wm deiconify $w
+[s] what to do with post() in case of -listdev, etc.?
+[s] turn old [dropper] code into a feature of SymbolBox
+[s] inheritance: [super] "instantiates" other abstraction with same $0; [self] allows sending messages to self; [declare super ...] makes the tree.
+
+[b] GOP problems are back due to recent changes in canvas_map and canvas_vis.
+ now that abstractions don't get loaded into the client anymore, GOP can't always be drawn anymore too.
+ i mean, because the content of GOP is not uploaded to the client, so the client can't draw anything about it..
+ unless def View outside_of_the_box are moved to the server side and the server only uploads what needs to be drawn
+ for gop
+
+ another side effect of not uploading the content of [pd]/abs that i just found out is that, when deleting such object,
+ 1. the client won't be able to perform things like $wire deconstruct in def Canvas del,
+ as the object don't exists in the client side
+ 2. even if client don't call things like that, the server would still send -> delete message to the client,
+ which causes the same error because the object don't exists...
+
+[s] it might make sense to always upload subpatches but upload instances only when needed
+[s] server don't send delete message back after client sending "object_delete" (http://pastebin.ca/318343)
+[s] serial got sent too early when creating [pd] with push & #N canvas (http://pastebin.ca/318318)
+[s] GOP problems are back due to recent changes in canvas_map and canvas_vis
+[s] [route] should be reconfigurable and accept pointer
+[s] [select] should accept pointer
+[s] [moses] should be multi-arg (and be aliased to [range] ?)
+[s] get rid of stderr in server
+[s] prevent hidden subpatches/abstraction-instances from being loaded in the client all of the time.
+[s] -lib in .pdrc crashes server: http://pastebin.ca/286300
+[s] server don't pick up changes via NumBox reload, ie the width:
+ <- .x8068058 reload 2 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 256;
+ -> change x8068058 x8067c50 {#X obj 335 166 nbx 8 14 -1e+37 1e+37 0 0 empty empty empty 0 -6 0 8 -262144 -1 -1 0 256;}
+[b] fix gop
+ [c] reimplement View get_canvas so that it does not rely on [focus]
+ [s] gop contains can be drawn if not uploaded to client
+[ ] fix deleteing/closing Canvas
+ [ ] server sends -> x806a3b8 delete twice
+ [ ] fix deletion order
+[ ] graphical array rendering optimization
+[ ] fix double delete of [pd].
+[s] added "version 2" syntax parser (optional), which has nested lists,
+ extended quoting, extended float syntax
+ (some ex-symbols now parsed as floats: +1 +1.0 +1e8 0x10 and so on.)
+[ ] note that Marius Schebella is interested in benchmarks
+[ ] atomically with multiple level
+[ ] tidy_up/snap to grid
+[ ] cleaner parsing of [expr]... remove int type because it causes e.g. [expr 8.0 / 10.0] = 0 but [expr 8.0/10.0] = 0.8
+[ ] how does [declare -stdpath] work? this is a mystery. can't get it to work in pd 0.40.
+
+[ ] PureUnity
+ [ ] benchmark
+ [ ] signals
+ [ ] grids
+ [ ] transitive, antisymmetric, predicate
+ [ ] contracts : *-rule.pd
+ [ ] tests for the frameworks' own components?
+ * not finished:
+ [glue-test]
+ [comparators-test] [arith-test]
+ [operator1-rule] [operator1-test]
+ [operator2-rule] [operator2-test]
+
+[s] those are the externs that have to be recompiled if I want to trap calls to return values of getfn.
+ ./externals/olafmatt/clone/clone.c:544: mess1(&cv->gl_pd, gensym("dsp"), sp);
+ ./externals/grill/dynext/src/main.cpp:952: mess1((t_pd *)canvas,const_cast<t_symbol *>(sym_dsp),NULL);
+
+<shift8> matju: another big bug for me - v/h sliders in existing patches bounce
+ repeatedly back to bottom when some kind of event occurs. you have to move the
+ mouse very gently back and forth until the slider stays at the location you want,
+ then without moving the mouse, release the mouse button :(
+
+[s] allow helpfiles to load without having to "make install".
+[s] switch iemguis to using only t_atoms
+[s] MIDI loopback pseudo-device (inside pd)
+[s] audio loopback pseudo-device (inside pd)
+[s] use vector doubling in binbuf_add,binbuf_addv...
+[c] opening an already-open subpatch should just raise that subpatch
+[c] bug: you can move parts of gop subpatches, from the parent patch!
+[c] pixel offsets are not correct in [hsl] [vsl]:
+ distinguish between $@w or $@h and actual size. there should be 4 extra pixels.
+[c] hide inlets/outlets of IEMGUI when they have receive-symbols/send-symbols
+[c] rightclick help doesn't work on [cnv]: tries to find help for "cnv.pd" ???
+[s] creating a graph causes crash.
+[b] fix NumBox's width and height (or remove those settings)
+[x] Implement (or fix) Find, Find Again in class Client
+ [x] with ability to search substrings
+ [ ] with ability to search across canvases
+ [ ] all canvases
+ [x] all subcanvases
+ [x] only the current one
+ [ ] with regexps
+ [ ] with replace
+[ ] in hsl-help.pd, [hsl] shouldn't appear as a Radio.
+[ ] canvas dialog:
+ [ ] add option for old-style GOP
+ [ ] make hidetext work
+ [ ] add units/pixel
+[c] array button doesn't work (menuarray)
+[c] implement timeout in def Manager call
+[s] finish merging 0.40 (wasn't it finished?)
+[s] merge 0.41 (no?)
+[s] proper symbol quoting
+[s] refcounted symbols
+[c] patching-in-tongues follow-up
+[c] def def
+[c] take care of needless "save changes?"
+[c] make List objects, to manage children, visible_children, wires, selection, selection_wires.
+[c] skip unneeded motion events inside client (do we need this?)
+[b] rename pd to pd-server, desire.tk to pd-client, add new program "pd" which would launch both (will we really do this?)
+[b] #V test with bg color
+[c] kill global tooltip variable ?
+[c] iemprops: min,max labels broken
+[b] fix the [key] and [keyup] and [mouse] (?) classes
+[s] fix all issues with backslashes and braces.
+[-] write an installer in Tcl/Tk.
+[s] canvas_object_insert()
+[c] simplify def Dialog add
+[c] devlist isn't supposed to be like a choice, rather like several choices.
+[c] implement def Canvas tidy
+[c] set tk::mac::useCGDrawing 1
+[s] differential upload
+[c] differential redraw
+[b] improved dirty_lists including proper array support
+[b] bang counter (instead of sending every bang message to client)
+[b] implement garray
+[c] implement a mark-and-sweep in order to find leaks... (?)
+[b] rewrite [image], [display], [knob], [grid], [popup], ...
+[ ] this seems fishy but might have good ideas -> http://www.rebelscience.org/Cosas/Reliability.htm
+[c] make a statistical profiler for Tcl, if possible
+[c] try to use profiler.tcl (tcllib) in a sensible way
+[s] try C-oriented tools:
+ [ ] oprofile (with GUI)
+ [ ] memprof
+ [ ] sysprof
+ [ ] kprof
+ [ ] gprof
+ [ ] prospect
+
+[s] iirc, bang~ registers a timer callback. the problem is that the timer callbacks are only executed every dac block,
+ which is 64 samples. so running bang~ in subpatch with less than 64 samples, bang~ sets the same timer several times,
+ but it's only executed once.
+
+[b] think about this «if you are reconsidering properties panels, I strongly encourage all y'all to make them Pd patches.
+ This is how Max/MSP does it and I think it would work very well for Pd as well. Sounds like this is a good opportunity
+ to make the switch.» -- hcs
+
+<chun> 1. a keyboard operated cursor, a bit like Active, but one can use it like the mouse pointer
+<chun> 2. snap to grid feature, or similiar
+<chun> 3. prefix keybindings, like M-x in emacs
+
+Iohannes said about redirecting stdout/stderr:
+ pd -verbose -stderr 2>&1 | while read line; do echo "${line};" | pdsend 6666 localhost udp; done
+
+[b] [struct], scalar, DS-array, [plot], [drawpolygon], [drawnumber], ...
+[c] desire.tk can be *really* loaded without Tk
+[c] ReadLine or NCurses interface
+[c] make commandline options reloadable at runtime
+[x] canvas scrollbars auto-disappear when not needed.
+[b] implement dirty flag
+[s] use gensym2() in builtin classes and stuff.
+[s] fix 64-bit arrays so that carmen gets a use for DD.
+[s] carmen also needs strings (no symbol leakage)
+[c] right-click on labels for translations.
+[b] http://www.w3.org/DesignIssues/Diff
+[c] solve printing problems with GDB. use a pty (pseudo-teletype) ---> http://wiki.tcl.tk/3916
+[c] try TkZinc
+[c] try Tcl/Gtk (Gnocl) with emulation layer
+[?] http://www.comparisonics.com/gallery.html
+[c] obiwannabe writes:
+ it would be good to have the choice as a comandline arg of the first one launched with a way
+ to accept patches to open in the same instance from, say a web browser. Like also when you are
+ in a file manager and browsing some .pd files you really want them to open in the same running instance.
+[s] must work with ALL gridflow samples
+[b] objectbox argument completion
+[b] messagebox completion
+[c] tooltips on arguments/inlets/outlets
+[c] option to make non-gui objects appear on a GOP (?)
+[b] multilingual labels in objects
+[b] multilingual comments
+[b] what would be needed to be able to use gdb --pid=... ?
+[ ] set tk::mac::CGAntialiasLimit 2
+[ ] try Doxygen's callgraphs
+[ ] try splint (http://www.splint.org/)
+[ ] try uno
+[ ] try CCCC
+[ ] try OSX Shark
+[ ] try http://www.drugphish.ch/~jonny/cca.html
+[-] do we move the trac to artengine or not?
+[c] remember that it's possible to use break in a bind-handler, to completely override system's behaviour.
+[c] try: itcl itk iwidgets (itk implements megawidgets)
+[c] try tkgate, a hardware sim program
+[ ] try libentity
+[c] try vtk-tcl
+[s] make sure $0 actually works (see canvas_realizedollar)
+[c] test rcv_able, snd_able
+[?] iem: snd/rcv problem(s) ? (what was that?)
+[c] [vu] have fcol in props !
+[c] [vu] has snd in props !
+[b] Duplicate wires?
+[c] Can connect object to an object that is inside a GOP (!!!!)
+[c] weird offset stuff when there are negative canvas coords sometimes.
+[s] Bug: bad quoting in sys_mgui()
+[b] Bug: spaces in name of vslider cause corruption of properties (devel_0_37)
+[b] classlist: add method signatures
+[c] bang flash delays should be reimplemented
+[c] pdrc_options radio don't load/save
+[c] patch window may open off-screen (all branches)
+[c] patch window may open too big (all branches, osx)
+[b] properties on objectboxes (generic dialogs tapping into method signatures) (?)
+ [s] hooks for outsourcing the preceding stuff to a plugin (eg: GridFlow, PyExt)
+[b] VT100 colours in console
+[b] [graph] is too slow (gui) for real big arrays
+[b] freeform comments (no atom parsing)
+[b] preserve whitespace in textboxes?
+[b] inlet inspector to show what are the message types expected by an inlet
+ that could read like "int: set left operand; bang: do it"
+[c] custom buttonbars (including premade objects with args like a [t b f] and such)
+ [c] with configurable hotkeys
+[b] colored wires
+[b] insert_object makes error with multiple selection.
+[c] popup_properties on multiple selection.
+[b] segmented patchcords:
+ [c] a hotkey to click on the cord, and add a new segment
+ [c] a hotkey to drag the "points" (where two lines meet)
+ [c] a modifier key to delete a segment (actually the others should be that way too)
+ [c] you should be able to right click on a regular wire, and press "segment" or do a hotkey with it
+ and it automatically turns it into an straight-elbow multisegmented wire
+[b] [t a] could be a very small GUI object (called "null object")
+[b] all the [t] could be GUI objects
+[b] GUI objects for [inlet] and [outlet] and [pd] ([page])
+[-] make a sort of pd-extended, call it DesireData Express or (gasp) Extraordinaire.
+
+[s] symbol vs strings: Ruby is right: the Symbol vs String distinction is annoying and possibly obsolete.
+ according to me, symbols exist mostly because LISP had them before they had strings, and because most
+ Strings implementations aren't powerful enough to be as fast (or almost as fast) as Symbols.
+ (well, for compatibility reasons, just like in Ruby, we can't remove symbol support completely, but
+ at least we can reduce the difference between strings and symbols to a minimum.)
+
+[b] server-side IEMGUI could be turned into Tcl-based externs OR EVEN become abstractions.
+ it's possible to make a DesireData GUI for any Pd class, including abstractions.
+ to turn IEMGUI into an abstraction, what's missing is the savefn/saveargs/scanargs business.
+
+[s] I would like to know how much it is feasible to compress the t_atom
+ structure so that even with 64-bit pointers the t_atom still stays 8 bytes
+ instead of 16. I think it's possible, but not necessarily in a
+ backwards-compatible way, and not necessarily in a portable way. also maybe it's not that useful.
+
+[c] splashscreen: we could make it different than other programs by inserting the splashscreen
+ inside the main window or we could make it a separate window but no timer, just an [OK] button,
+ so actually, this would be exactly the same as the "About" dialog.
+
+[s] turn [makefilename] into something that doesn't suck. (alias it to [sprintf] or [format])
+
+[s] merge martin peach's tcp externs into the core
+[b] data inspector: when this tool is enabled, it prints on the console any data coming through whatever cable you
+ currently have selected. if you select multiple wires, it reports whats going through multiple wires.
+[b] you need a way to see cpu usage on individual objects or on patchers or on groups of selected objects
+[c] objectbox history: see whether ddrc should have a history count entry;
+ think about saving history; matju thought that it could be turned into a dynamic button bar that you can drag from.
+[?] send to front, send to back
+[c] make windows not get auto-resized to the width of the toolbar, so that people can have tiny windows.
+[c] <Dossy> fconfigure -encoding binary ...
+[s] implement the stuff that is in iostreams.txt
+
+[c] Luke Iannini suggests some OSX bindings:
+ Command-` to switch between different windows within the application.
+ Command-, to bring up preferences (though this one is more difficult since there are multiple preference windows...)
+ Command-m to minimize the window (this currently brings up the "send message" dialogue box)
+
+[s] Claude:
+ Sending a message to vline~ creates a t_vseg, which are stored in a
+ sorted linear linked list, which means the time taken to add each new
+ line segment would be O(n), where n is the number of existing line segments.
+
+[-] look at some object sync protocols that we can think of: NFS for folders, palm sync for calendars, rsync for file contents
+
+Marius Schebella:
+I have a small keyboard shortcut wish: change between "entering mode" and "selected mode" with boxes.
+when I create a new object/message... then it would be nice to have a
+shortcut that switches from the mode, where the cursor is in the box to the
+mode, where the object is selected. I think the tab-key could be used for
+that. As it is now, I type something in, then I have to grab the mouse, then
+klick, then select, then I can adjust it (which I also do with the keyboard,
+because it is more precise).
+I know the toggeling will not be possible when more objects are selected,
+but maybe someone has an idea for that.
+
+[c] command for unpatcherizing a subpatch or abstraction (useful for making variants)
+ or for turning an abstraction into a subpatch.
+
+[s] I fixed it now, but I don't know if this is not a bug in pd 0.40:
+
+"The problem is, that canvas-local search path really tread each path as local to the canvas-path ( see line 1561 in g_canvas.c).
+So if you add e.g. /usr/local/lib/pd/extra/iemmatrix, it will search for this path, but local to the canvas path - so if I started
+Pd from /home/me it will search in /home/me//usr/local/lib/pd/extra/iemmatrix ! Is this a feature or a bug of Pd ?" -- Holzi
+
+[s] "I don't quite understand how this explains why wrap~ of -1 returns 1." -- steffen
+
+[s] there's a [wrap~] but no [wrap]. there's a [>] but no [>~] (without externals). -- matju
+
+dmotd about converting patches to postscript:
+"the internal pd postscript printer grabs the viewable canvas size,
+this would need to change to encompass the virtual limits of the patch.
+tcl/tk's 'canvas postscript' command takes the -width -height flags,
+so making it the virtual bounds is trivial. this works for snapshotting
+canvas bounds: sys_vgui("set cnv_bbox [.x%x.c bbox all] \n .x%x.c
+postscript -file /tmp/canvas.ps -width [lindex $cnv_bbox 2] -height
+[lindex $cnv_bbox 3] \n ", canvas, canvas);
+
+------------------8<--------cut-here--------8<------------------
+
+Patching-in-tongues Project
+
+[ ] make entries counter and matcher.
+
+ entries
+en: english [ ]
+es: español [ ] Mario Mora & Ramiro Cosentino
+de: deutsch [ ] M Neupert, G Holzmann, T Grill
+nb: bokmål [ ] Gisle Frøysland
+it: italiano [ ] Davide Morelli + Federico Ferri
+pt: português [ ] Nuno Godinho
+fr: français [ ] Patrice Colet
+ca: català [ ] Nùria Verges
+pl: polski [ ] Michal Seta
+eu: euskara [ ] Ibon Rodriguez Garcia (Enrike Hurtado)
+cn: chinese [ ] Chun Lee
+jp: nihongo [ ] Kentaro Fukuchi
+tu: türkçe [ ] ... Koray Tahiroglu
+sv: svenska [ ] ... Daniel Skoglund (NOT FOUND)
+br: brasiliano [ ] ... Gabriel Menotti
+dk: dansk [ ] ... Steffen Leve Poulsen
+
+------------------8<--------cut-here--------8<------------------
+Dec 18 2006
+
+1. there's no way to limit the size of the output buffer. If the other
+side of the connection doesn't respond, the sending buffer just
+inflates quickly. I've seen it happen that a bug in the sender causes
+it to try to send so fast that it ate memory like an infinite recursion
+or a forkbomb.
+
+2. That operation is not realtime-safe (but still it's much closer to
+being so than just blocking...)
+
+3. It's only usable by the GUI socket and never by [netsend].
+
+4. While that buffer together with t_guiqueue allow GUI updates to be
+delayed for as long as necessary, it doesn't solve the problem that it can
+send information that is already outdated and redundant. This can be
+important in preventing problem #1 for a very heavy GUI. DesireData has
+had this problem essentially dealt with since a long time, but it lacks
+some fine tuning to get more robust.
+
+------------------8<--------cut-here--------8<------------------
+
+<arjen> matju, you may be interested in "Jim" - that does have closures and on the Wiki you can find several attempts and
+ experiments regarding closures: http://wiki.tcl.tk/closures
+
+<matju> is there something like listbox but which works as a popup menu ?
+<tclguy> tk_optionMenu is an old-school version
+<tclguy> or get a combobox from BWidget or tile
+
+1. wish8.5 desire.tk city.pd &> err
+2. ctrl+e, ctrl+a, shift+right*3 (or just once if profiling)
+3. times (tclx)
+
+<matju> is there a wrapper for libagg for tcl? AGG of antigrain.com
+<ijchain> <kbk> don't know of one, but SWIG, Critcl, or ffidl might plug the gap
+
+[initbang] & [closebang]: https://sourceforge.net/tracker/?func=detail&atid=478072&aid=1544041&group_id=55736
+
+[s] Ed Kelly <morph_2016@yahoo.co.uk> reports that ALSA 24-bit output does not work?
+
+to dave griffiths: I think that this is three feature requests:
+1. performing replacement of wire-object-wire by a single wire, as a
+single operation in the GUI
+2. make that operation atomic in terms of DSP recompilation.
+3. break down DSP recompilation in pieces so that it is more "incremental"
+for large patches.
+In the case of object insertion, (2) and (3) are not implemented either,
+but step (1) already has most of the desired effect; for the message
+system, step (1) is all that is needed. DSP is more work and I know less
+about DSP. It'll take me a while to get there; but (2) doesn't seem so
+hard.
+
+http://www.tomsawyer.com/gallery/index.php
+
+[b] matju to atwood:
+ If I had automatic positioning in DesireData, it would be as an option: e.g. objects could default to "floating around"
+ (that is, automatic positioning), but be pinned down into specific positions. In that case, an exception has to be done
+ for [inlet] and [outlet] objects mostly. (the DS subsystem should be skipped over as well...) I could also have a use
+ for some semi-automatic repositionings: for example, there could be a keyboard shortcut to reposition a non-"floating"
+ object wherever it would go if it were floating, and if the user doesn't want it s/he can Ctrl+z it.
+
+http://www.graphdrawing.org/
+
+<mamalala> you select a bunch of objects and group them together .... then you can select all the objects in that group
+later, if needed, by its name like, you start to build some mixer patch .. and then you add a chain for an external fx,
+so you can put all associated objects in the "ext.fx" group ... whenever it gets so messed up that you forgot what is
+what, you can just select the groupt you want, and see/move/whatever the involved objects the group name could also act
+as a template for the name of a subpatch, if one decides to finally put them into one ....
+