Hello,
I suppose this response is to no one in particular but I like talking to Alex so I'll reply to him =).
As per the abstraction vs externals for gui stuff debate, I have a few general thoughts/observations:
At least in my personal experience, I haven't had much luck with GUI abstractions. It seems like a lot of them that I at least have investigate date back to the pd-extended era of things and thus rely a lot of all the libraries provided with pd-extended, which loaded all the libaries as a default so they didn't have follow an libraryname/objectname convention of declaration. So I have to find out all the library dependencies and get them on my computer and if I don't want to automatically load all the libraries at start, I have to dig through and try to find where all these objects are within the subpatches of subpatches of abstractions to where these objects are and add the libraryname/ (or I suppose I could do a [declare -lib libraryname] too, I suppose that makes more sense). At least to me, not just externals but abstractions suffer from maintenance issues as well. At least with externals, compilation lends itself to more of a standalone mindset without this pure data library dependency hell (although of course externals upon compilation can suffer from this as well). Perhaps this is a historical issue though and now that PD-extended is being phased out, this situation going forward would be less of an issue.
Also, perhaps it is just my own failing as a PD programmer, but I've never felt entirely comfortable with multiplicity in a graphical programming language. Like say, I want a 100x120 grid of toggle boxes that fits within a 640x480 rectangle and all their backgrounds are black and their Xs are yellow and each toggle box is hot so when you select one, it dumps out a list of all the values. Plus, every 500 ms I want the backgrounds of all the toggle boxes to flash blue so it's a clear visual cue that's where a downbeat is. It feels like in this case, I'm going to be making a lot of objects and connecting a lot of cords or do a clickable canvas or use structs (I think there was an abstraction that did this?) or something like that. At least for me, it feels way more natural to use a text-based language vs a graphic-based language to do a whole lot of one particular thing and keep track of it all and thus I'd lean more towards external vs abstraction. Plus with an external you get more flexibility with what you can do rather than be limited to using Pure Data objects to try to achieve your goals, although I can see that perhaps in a lot of cases this flexibility is not needed.
I don't know, I'm sort of rambling and losing my train of thought here lol. I'm glad this topic is being brought up though, it's making me reconsider abstractions and costs and benefits or doing abstractions vs externals. Maybe I just need to familiarize myself more with things you can do with canvases and how to do iteration in Pure Data =).
Derek
===================== Derek Kwan www.derekxkwan.com