Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-02-05 Thread Jonathan Wilkes
- Original Message -
 From: Hans-Christoph Steiner h...@at.or.at
 To: Jonathan Wilkes jancs...@yahoo.com
 Cc: pd-list@iem.at pd-list@iem.at
 Sent: Sunday, February 3, 2013 1:41 PM
 Subject: Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 
 released!)

[...]

 If you want I can put together a Kickstarter campaign that outlines
 all of this doc work that will be needed.  I suspect it'd be about two
 or three months of full-time work.  If people are willing to pay me
 to make these changes I'm happy to do them.  As my resume I offer
 my work on PDDP, in which I contacted lib authors to accept my
 revisions, updated core docs, reworked the FLOSS manual to be
 consistent with core docs, and wrote a search plugin to make use
 of all the changes.  (As well as testing that the results worked
 across platforms.)
 
 -Jonathan
 
 These things are all true, I think its worth it. I think you might be thinking
 that there will be more changed than there need to be.  Most of the objects
 would not need documentation changes, or just small changes.

Here's the doc work:
1) search plugin - for classes that are copied into the new libs, don't show
duplicate results from the legacy library (which is only there for backwards
compatability).  Probably the best way to do this is add a legacy tag to the
old lib stuff.
2) Change the relative pddp links for all 200+ PDDP help patches that points
to stuff outside of 5.reference/ (probably can automate much of this process)
3) Find and change all the pddplinks and comments in docs of externals that
refer to 5.reference (absolute and relative).  (Somewhat automated)
4) Make a good faith effort to amend FLOSS references and other common
PD learning materials to document new libs.  (Otherwise new users
read about legacy stuff while using new stuff, get confused, and write to the
list to ask about why the same exact objects get different prefixes in different
docs.)
5) Lots of iterative changes to places in the documentation that make a 
distinction
between internal and external objects, including the search plugin, all 
about Pd
patches, tutorials, the Pd manual, and probably a lot else that I'm not 
thinking of
at the moment.
6) Create new documentation to explain _exactly_ how to use standard libs,
explaining how to a) get the old behavior of just loading all libs
in Pd-extended, b) how to use [import], c) how to use the lib prefix, and d) any
other ways of loading libs and the benefits/drawbacks of those approaches.
7) Making a user-friendly doc or patch about legacy libs that explains the 
legacy
author-oriented approach for new (and old) users, focusing esp. on the most 
popular legacy
libs.  Without this a lot of documentation on puredata.info-- and esp. on the 
user
and dev list-- becomes difficult to understand and follow.
8) Find entry points into the common Pd learning materials and inject a note 
about
the move from the legacy approach to the new approach, with a link to the doc 
from #7.
9) Keep a list of all easily translatable sources of documentation on this 
change, so
that translations of the new approach can happen as soon as possible.
10) Check for cross-platform compatibility, to make sure none of the core doc 
changes
or search-plugin changes introduce weirdness somewhere.

However, after doing some initial research I see there's a bigger issue before 
any of this
could even happen.  Let's say I put up a Kickstarter for a month's worth of doc 
work on
this.  I'd have to schedule it for a date after the work is done deciding what 
names the
standard libs should get and what code goes in those libs.

That process will probably turn into bikeshedding where none of the real work 
actually gets
done-- I can say this because _substantial_ preliminary discussions for this 
work already took
place 4 years ago on the dev list and we don't have standard libs today.

So here's my proposition: I'll work on compiling a list of classes that should 
have been included
in vanilla but aren't yet.  I'll exclude objects which are currently in a 
maintained, aptly-named
library build around classes that share some core functionality in common, as 
those libraries
are already standard libraries.  I should end up with a list of classes 
which, in conjunction with
the vanilla classes, make it possible to get substantially more work done 
without relying on hacks
or workarounds.  We can worry about libname and relationship with vanilla 
later-- the main
point will be that these core objects can all be typed into an object box in 
Pd extended, without
any namespace prefixes, and as long as nothing has been [import]ed or 
[declare]d it should
all just work.  If it goes the way I think it will, there won't be any need to 
have a bunch of new
libs, just one that adds long-desired functionality to vanilla that's been 
missing for so long.
 
None of this initial work requires any discussion whatsoever, since it all 
exists already on the
user and dev lists.  So

Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-02-03 Thread Jonathan Wilkes
- Original Message -

 From: Hans-Christoph Steiner h...@at.or.at
 To: Jonathan Wilkes jancs...@yahoo.com
 Cc: pd-list@iem.at pd-list@iem.at
 Sent: Saturday, February 2, 2013 8:35 PM
 Subject: Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 
 released!)

[...]

  What are the maintenance problems solved by copying binaries into new
  directories?
 
 The point is to reduce complexity and exceptions to consistency.  Once example
 where just copying an external would reduce complexity is taking an object out
 of zexy.  Zexy has a very complicated build system because it has a huge array
 of objects, many of which will not build on every system, things like [lpt].
 Therefore the build system needs to configure itself based on what is 
 available.
 
 A standard library would only have things that build on every system, so a
 much simpler build system can be used (like the library template).

But you're evidently keeping zexy for compatibility reasons, so how would this
create less maintenance for you?

 
 
  Also-- you will end up with objects that have different licenses in the 
 same lib.
  Is there a precedent for that in any programming language?
 
 You will be able to consider the whole GPLv3+.

You are wrong-- there are libraries currently under GPLv2, some
under GPLv3, some GPLv2+, some 3-clause BSD, some Tcl/Tk
license, and maybe a few others.

You cannot automagically change the GPLv2 and GPLv3
to GPLv3+, and if you change the 3-clause BSD to GPLv3+ it
needs to be explicit-- i.e., changing it in the pd META patch.  For
the other versions of the GPL someone would need to contact
all the original authors and get them to release it under GPLv3+.

(Btw-- please don't start a thread on licenses here.  If you don't
understand the problems then email the fsf and they can explain
it, and you can paste their response here.)

These changes will turn into a lot of documentation work, not to
mention changing existing docs to point to the standard libs instead
of the legacy ones where possible, and changing FLOSS manual
stuff and Pd manual stuff as well as any other extant tutorials widely
used by the Pd community to clearly explain the new libs so that
new users don't get stuck learning half legacy stuff and half new
lib stuff (thus making it even more difficult to get around in the
language).  Not to mention documenting the legacy stuff and
its relationship to the new stuff, while making the new stuff
more easily discoverable in the docs and the search plugin. (Oh,
and contacting legacy lib devs and seeing who is willing to
relicense under GPLv3+.)

If you want I can put together a Kickstarter campaign that outlines
all of this doc work that will be needed.  I suspect it'd be about two
or three months of full-time work.  If people are willing to pay me
to make these changes I'm happy to do them.  As my resume I offer
my work on PDDP, in which I contacted lib authors to accept my
revisions, updated core docs, reworked the FLOSS manual to be
consistent with core docs, and wrote a search plugin to make use
of all the changes.  (As well as testing that the results worked
across platforms.)

-Jonathan

 There will need to be other
 copyirght notices from BSD licensed code, but that's manageable.
 
 .hc
 

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-02-03 Thread Hans-Christoph Steiner
On 02/03/2013 01:19 PM, Jonathan Wilkes wrote:
 - Original Message -
 
 From: Hans-Christoph Steiner h...@at.or.at
 To: Jonathan Wilkes jancs...@yahoo.com
 Cc: pd-list@iem.at pd-list@iem.at
 Sent: Saturday, February 2, 2013 8:35 PM
 Subject: Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 
 released!)
 
 [...]
 
  What are the maintenance problems solved by copying binaries into new
  directories?

 The point is to reduce complexity and exceptions to consistency.  Once 
 example
 where just copying an external would reduce complexity is taking an object 
 out
 of zexy.  Zexy has a very complicated build system because it has a huge 
 array
 of objects, many of which will not build on every system, things like [lpt].
 Therefore the build system needs to configure itself based on what is 
 available.

 A standard library would only have things that build on every system, so a
 much simpler build system can be used (like the library template).
 
 But you're evidently keeping zexy for compatibility reasons, so how would this
 create less maintenance for you?


 


  Also-- you will end up with objects that have different licenses in the 
 same lib.
  Is there a precedent for that in any programming language?

 You will be able to consider the whole GPLv3+.
 
 You are wrong-- there are libraries currently under GPLv2, some
 under GPLv3, some GPLv2+, some 3-clause BSD, some Tcl/Tk
 license, and maybe a few others.
 
 You cannot automagically change the GPLv2 and GPLv3
 to GPLv3+, and if you change the 3-clause BSD to GPLv3+ it
 needs to be explicit-- i.e., changing it in the pd META patch.  For
 the other versions of the GPL someone would need to contact
 all the original authors and get them to release it under GPLv3+.
 
 (Btw-- please don't start a thread on licenses here.  If you don't
 understand the problems then email the fsf and they can explain
 it, and you can paste their response here.)

Only the copyright holder can change the license, I'm not proposing any
license changes.  I am saying that if the overall library is licensed under
the GPLv3+, then code licensed under the GPLv2+, BSD, Tcl license will be
compatible and can be freely incorporated into the GPLv3+ library.  This
library would have to keep the copyright licenses intact, according to the
terms of the other licenses.  Code licensed GPLv2-only like the Linux kernel
would not be compatible, for example, but I haven't found any Pd code that's
licensed GPLv2-only.


 These changes will turn into a lot of documentation work, not to
 mention changing existing docs to point to the standard libs instead
 of the legacy ones where possible, and changing FLOSS manual
 stuff and Pd manual stuff as well as any other extant tutorials widely
 used by the Pd community to clearly explain the new libs so that
 new users don't get stuck learning half legacy stuff and half new
 lib stuff (thus making it even more difficult to get around in the
 language).  Not to mention documenting the legacy stuff and
 its relationship to the new stuff, while making the new stuff
 more easily discoverable in the docs and the search plugin. (Oh,
 and contacting legacy lib devs and seeing who is willing to
 relicense under GPLv3+.)
 
 If you want I can put together a Kickstarter campaign that outlines
 all of this doc work that will be needed.  I suspect it'd be about two
 or three months of full-time work.  If people are willing to pay me
 to make these changes I'm happy to do them.  As my resume I offer
 my work on PDDP, in which I contacted lib authors to accept my
 revisions, updated core docs, reworked the FLOSS manual to be
 consistent with core docs, and wrote a search plugin to make use
 of all the changes.  (As well as testing that the results worked
 across platforms.)
 
 -Jonathan

These things are all true, I think its worth it. I think you might be thinking
that there will be more changed than there need to be.  Most of the objects
would not need documentation changes, or just small changes.  There are a
number of libraries that I continue to maintain only because of a couple
objects (like [ENV] in cxc, or [getenv] and [system] in Motex).  My plan is to
stop my maintenance work on those libs once the standard lib makes them
unneeded.  Of course anyone else is welcome to maintain them.

Another thing is that there will be less to document.  For example, newbies
won't need to learn about loading libraries until much later.  And the current
system of separate libraries loaded by default in a specific order is fragile
and causes many weird, hard to understand bugs for no good reason.

.hc

 There will need to be other
 copyirght notices from BSD licensed code, but that's manageable.

 .hc


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-02-02 Thread Hans-Christoph Steiner
On 02/02/2013 02:46 AM, Jonathan Wilkes wrote:
 - Original Message -
 
 From: Hans-Christoph Steiner h...@at.or.at
 To: Jonathan Wilkes jancs...@yahoo.com
 Cc: pd-list@iem.at pd-list@iem.at
 Sent: Thursday, January 31, 2013 12:42 PM
 Subject: Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 
 released!)

 On 01/31/2013 11:45 AM, Jonathan Wilkes wrote:


   - Original Message -
   From: Hans-Christoph Steiner h...@at.or.at
   To: pd-list@iem.at
   Cc: 
   Sent: Wednesday, January 30, 2013 4:40 PM
   Subject: Re: [PD] [PD-announce] Pd-extended 0.43.4 released!
 
 [...]
 
 I agree theoretical consistency is not a worthy goal, that's not the point
 here at all. [import zexy] is a good example.  Let's say a user is looking 
 for
 objects to make and manipulate symbols,
 
 That user can click the search-plugin category link symbol_op.
 The result will be a user-friendly list of everything that would be in
 a symbol-oriented library, prefixed with the lib name, followed by an icon
 that links to lib info.  If those results don't include everything, someone
 can go in and add the keyword symbol_op to the help patch for the object
 that needs to be included.  Also, if symbol_op is too obscure, someone
 can change the text of that link on the search plugin home page to be
 something more descriptive.  All of those tasks are extremely cheap to
 carry out in Pd's current form, and there won't be long threads of
 discussion since categories aren't mutually exclusive.
 
 
 how about calling tat library
 symboltricks or something descriptive, rather than an arbitrary name 
 'zexy'.
 In python, if I want to work with URLs, I load a 'urllib' or maybe 
 'urllib2'.
 
 I agree that aptly-named libraries built around a specific domain or
 a logical grouping will improve the user experience, but not
 nearly to the degree that implementing cross-platform doc search
 functionality has.  It will mostly facilitate memorizing the prefixes (libs)
 of commonly used externals and reinforcing their shared attributes that
 relate directly to that specific library name.  But libraries don't overlap,
 and _standard_ libraries are (hopefully) static and are difficult to
 amend once set in place.  Tags are the opposite of all that, and are
 already implemented.
 

 The point is that the old way of organizing libraries was around the author,
 not what the library does, like zexy.  Newer libs like iemguts, pmpd, log,
 etc. are organized around a topic, and that makes much more sense.  That's a
 very widely established paradigm for libraries across basically all 
 languages.

 Honestly, in the long run I think this will be less work than maintaining the
 system as it is now.  There are so many exceptions and quirks that is really
 is hard to make progress because some forgotten quirk comes back and bites 
 you.
 
 What are the maintenance problems solved by copying binaries into new
 directories?

The point is to reduce complexity and exceptions to consistency.  Once example
where just copying an external would reduce complexity is taking an object out
of zexy.  Zexy has a very complicated build system because it has a huge array
of objects, many of which will not build on every system, things like [lpt].
Therefore the build system needs to configure itself based on what is available.

A standard library would only have things that build on every system, so a
much simpler build system can be used (like the library template).


 Also-- you will end up with objects that have different licenses in the same 
 lib.
 Is there a precedent for that in any programming language?

You will be able to consider the whole GPLv3+.  There will need to be other
copyirght notices from BSD licensed code, but that's manageable.

.hc

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-02-01 Thread Jonathan Wilkes
- Original Message -

 From: Hans-Christoph Steiner h...@at.or.at
 To: Jonathan Wilkes jancs...@yahoo.com
 Cc: pd-list@iem.at pd-list@iem.at
 Sent: Thursday, January 31, 2013 12:42 PM
 Subject: Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 
 released!)
 
 On 01/31/2013 11:45 AM, Jonathan Wilkes wrote:
 
 
  - Original Message -
  From: Hans-Christoph Steiner h...@at.or.at
  To: pd-list@iem.at
  Cc: 
  Sent: Wednesday, January 30, 2013 4:40 PM
  Subject: Re: [PD] [PD-announce] Pd-extended 0.43.4 released!

[...]

 I agree theoretical consistency is not a worthy goal, that's not the point
 here at all. [import zexy] is a good example.  Let's say a user is looking 
 for
 objects to make and manipulate symbols,

That user can click the search-plugin category link symbol_op.
The result will be a user-friendly list of everything that would be in
a symbol-oriented library, prefixed with the lib name, followed by an icon
that links to lib info.  If those results don't include everything, someone
can go in and add the keyword symbol_op to the help patch for the object
that needs to be included.  Also, if symbol_op is too obscure, someone
can change the text of that link on the search plugin home page to be
something more descriptive.  All of those tasks are extremely cheap to
carry out in Pd's current form, and there won't be long threads of
discussion since categories aren't mutually exclusive.


 how about calling tat library
 symboltricks or something descriptive, rather than an arbitrary name 
 'zexy'.
 In python, if I want to work with URLs, I load a 'urllib' or maybe 
 'urllib2'.

I agree that aptly-named libraries built around a specific domain or
a logical grouping will improve the user experience, but not
nearly to the degree that implementing cross-platform doc search
functionality has.  It will mostly facilitate memorizing the prefixes (libs)
of commonly used externals and reinforcing their shared attributes that
relate directly to that specific library name.  But libraries don't overlap,
and _standard_ libraries are (hopefully) static and are difficult to
amend once set in place.  Tags are the opposite of all that, and are
already implemented.

 
 The point is that the old way of organizing libraries was around the author,
 not what the library does, like zexy.  Newer libs like iemguts, pmpd, log,
 etc. are organized around a topic, and that makes much more sense.  That's a
 very widely established paradigm for libraries across basically all languages.
 
 Honestly, in the long run I think this will be less work than maintaining the
 system as it is now.  There are so many exceptions and quirks that is really
 is hard to make progress because some forgotten quirk comes back and bites 
 you.

What are the maintenance problems solved by copying binaries into new
directories?

Also-- you will end up with objects that have different licenses in the same 
lib.
Is there a precedent for that in any programming language?


-Jonathan


___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


[PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-01-31 Thread IOhannes m zmoelnig
-BEGIN PGP SIGNED MESSAGE-
Hash: SHA1

On 2013-01-30 22:40, Hans-Christoph Steiner wrote:
 A quick internet translations makes me think that I agree with
 what cyrille is saying.  The preferences shouldn't be used for
 loading libraries, as they have been in pd and especially
 Pd-extended for a long time.  Pd-extended no longer lets you set
 libraries to load from the preferences, this is one step to get us
 on the right direction.  I've been thinking about other things as
 well,

i'm still very skeptic about the possibility that there is one right
direction.

 here's how I'm thinking:
 
 * new standard library that is larger and more consistent than 
 what's in vanilla, things like all math and logic objects both 
 message and signal included, rather than needed to load a library 
 (i.e. zexy) for some of them.

i'm not sure i really understand the sentence.
but i guess it is mainly suggesting to move objects of general value
to a so called standard library that provides the basic needs.

one question os of course, what a basic need is.
e.g. personally i would vote for a minimum set of math-like operators,
rather than high-level user-friendly objects. e.g. [~]
but not [moog~].
others might think very differently about this.

 It would prioritize correctness and consistency over backwards 
 compatibility.
 
i agree, that a so called standard library is a *must*.

 * no libraries but the standard library loaded by default.

note that many languages (including C and python) don't automatically
load their standard libraries.
however, they do have a standard library.
and they provide primitives that allows you to use the language even
without any standard library.

from the users's perspective it's probably a good default to load a
stdlib, but one could easily introduce a -nostdlib flag to override
that.

 * all of Pd-vanilla's objects as a separate 'vanilla' library.

how would that be different from the standard library?
i guess the stdlib most likely will contain more objects than vanilla,
and some objectclasses would not be part of stdlib or under another
name ([makefilename] springs to my mind).
-BEGIN PGP SIGNATURE-
Version: GnuPG v1.4.12 (GNU/Linux)
Comment: Using GnuPG with Mozilla - http://enigmail.mozdev.org/

iEYEARECAAYFAlEKLX0ACgkQkX2Xpv6ydvR4IgCeLjnGVP95jO7SwTL9v/PKBdwQ
c9wAnjWlQs+ethcLueD7EmNE3umt3u4d
=AgIj
-END PGP SIGNATURE-

___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list


Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-01-31 Thread Hans-Christoph Steiner
On 01/31/2013 11:45 AM, Jonathan Wilkes wrote:
 
 
 - Original Message -
 From: Hans-Christoph Steiner h...@at.or.at
 To: pd-list@iem.at
 Cc: 
 Sent: Wednesday, January 30, 2013 4:40 PM
 Subject: Re: [PD] [PD-announce] Pd-extended 0.43.4 released!

 
 [...]
 
 * new standard library that is larger and more consistent than what's in
 vanilla, things like all math and logic objects both message and signal
 included, rather than needed to load a library (i.e. zexy) for some of them.
 It would prioritize correctness and consistency over backwards compatibility.
 
 That's a royal waste of your time.  I'm certain you wouldn't advocate _moving_
 objects from various libs to one standard lib-- as that would break backwards
 compatability-- so you must be advocating copying them.  Both would have the
 direct affect of confusing users-- the former by _breaking_ all kinds of help 
 docs,
 tutorials, and lots else that's more or less part of the standard Pd world 
 at
 this point; and the latter by returning two results in a search for an object 
 that
 happens to be in the standard library.  Either is also a royal waste of the 
 users' time.
 
 If there are specific objects inside zexy or hans that need to be superceded 
 by
 an object with a better design in order to get more consistency, or if there 
 are
 objects that haven't been created yet that would add needed functionality, 
 let's
 talk about those cases.  But [import hans zexy lib_to_be_coded] is a perfectly
 reasonable interface for loading 90% of what the user needs, so let's not go
 breaking stuff for the sake of theoretical consistency.  For the other 10% 
 it's
 just fine for the user to search for that functionality and use the prefix
 that is shown in the search results, or click the info icon to read about 
 the
 relevant library, or use [import], or do all three.

Yes, it'll be a chunk of work, but I strongly believe it'll be worthwhile.
Python3 is a good example of this kind of thing.  All the existing libraries
would remain as they are, so backwards compatibility would be fully available.

I agree theoretical consistency is not a worthy goal, that's not the point
here at all. [import zexy] is a good example.  Let's say a user is looking for
objects to make and manipulate symbols, how about calling tat library
symboltricks or something descriptive, rather than an arbitrary name 'zexy'.
 In python, if I want to work with URLs, I load a 'urllib' or maybe 'urllib2'.

The point is that the old way of organizing libraries was around the author,
not what the library does, like zexy.  Newer libs like iemguts, pmpd, log,
etc. are organized around a topic, and that makes much more sense.  That's a
very widely established paradigm for libraries across basically all languages.

Honestly, in the long run I think this will be less work than maintaining the
system as it is now.  There are so many exceptions and quirks that is really
is hard to make progress because some forgotten quirk comes back and bites you.

 * no libraries but the standard library loaded by default.

 * the possibility to load distro profiles for compatibilityYes, it'll be a 
 chunk of work, but I strongly believe it'll be worthwhile.  Python3 is a 
 good example of this kind of thing.  All the existing libraries would remain 
 as they are, so backwards compatibility would be fully available. with 
 Pd-vanilla
 and Pd-extended

 * all of Pd-vanilla's objects as a separate 'vanilla' library.
 
 In the search plugin I'm judging vanilla objects based on
 whether the help patch is inside 5.reference, and returning
 them first in the results.  I asked you awhile back if the
 subdirs in doc are subject to change and you said they
 were a standard part of Pd that wasn't likely to change.
 If want the vanilla lib for the sake of consistency,
 you won't get it because the vanilla help patches must
 remain in 5.reference.  If you copy them to vanilla/ again
 you would create UX problems as a search will return
 two results for every vanilla object.
 
 -Jonathan

I think it'll be worthwhile to fix that quirk, and only have a single method
that applies for all bjects and libraries, including 'vanilla'.  This points
to exactly what I'm talking about: this is a random, unneeded exception that's
there because of historical reasons, but is not useful in its own right.

Most of the objects in this new standard library would likely change only
slightly so the help can be taken from PDDP and tweaked.

As for changing the tutorial sections in doc, I did not want to take on the
maintenance of modified version, but I always thought it would be nice to have
improved versions of them.  You've started that project, so I plan on using
your work there.  You've already created massive improvements in the general
help system, I expect no less with your effort on the included tutorials. :-D
no pressure... ;)

.hc

___
Pd-list@iem.at mailing list
UNSUBSCRIBE

Re: [PD] standard library (was Re: [PD-announce] Pd-extended 0.43.4 released!)

2013-01-31 Thread Hans-Christoph Steiner
On 01/31/2013 03:38 AM, IOhannes m zmoelnig wrote:
 On 2013-01-30 22:40, Hans-Christoph Steiner wrote:
 A quick internet translations makes me think that I agree with what
 cyrille is saying.  The preferences shouldn't be used for loading
 libraries, as they have been in pd and especially Pd-extended for a
 long time.  Pd-extended no longer lets you set libraries to load from
 the preferences, this is one step to get us on the right direction.
 I've been thinking about other things as well,
 
 i'm still very skeptic about the possibility that there is one right 
 direction.
 
 here's how I'm thinking:
 
 * new standard library that is larger and more consistent than what's
 in vanilla, things like all math and logic objects both message and
 signal included, rather than needed to load a library (i.e. zexy) for
 some of them.
 
 i'm not sure i really understand the sentence. but i guess it is mainly
 suggesting to move objects of general value to a so called standard
 library that provides the basic needs.

move, not copy.  I wouldn't change any existing libraries.


 one question os of course, what a basic need is. e.g. personally i
 would vote for a minimum set of math-like operators, rather than
 high-level user-friendly objects. e.g. [~] but not [moog~]. others might
 think very differently about this.

I totally agree.  We'll have to work out what is required in the basic
library.  I think all math and logic are the obvious starting point, and
moog~ is obviously still an external.  I think that the standard library
will be broader than other programming languages because Pd aims to be
simpler, smaller, and easier to learn.  So I would definitely include all
symbol and list manipulations (symbol2list, makesymbol, list-append,
list-prepend, split, etc.).

I also think that all of the objects should flexibly work with both floats
and symbols wherever appropriate.  zexy/pack is a great example of this.
[select] should be like that too.


 It would prioritize correctness and consistency over backwards 
 compatibility.
 
 i agree, that a so called standard library is a *must*.

The hard part is agreeing on what's correct ;)


 * no libraries but the standard library loaded by default.
 
 note that many languages (including C and python) don't automatically 
 load their standard libraries. however, they do have a standard library. 
 and they provide primitives that allows you to use the language even 
 without any standard library.

To clarify here, by standard library I mean the commands that are
available without specifically loading anything.  So this is different than
what python calls its standard library which included things loaded by
default and many things that have to be loaded.


 from the users's perspective it's probably a good default to load a 
 stdlib, but one could easily introduce a -nostdlib flag to override 
 that.

Yes the transition will be a long slow process.  I'm thinking it could be a
separate build, and leave Pd-extended as the name of the old way.  This
would be like python2 vs python3.  So I guess built-in might be a better
name for it: http://docs.python.org/2/library/functions.html

And 'builtin' is actually a loadable module too:
http://docs.python.org/2/library/__builtin__.html

I want to include functionality like this in Pd-extended, or the new
python3-style thing if we go that route, so that it would be possible to
load a vanilla or extended compatibility mode.


 * all of Pd-vanilla's objects as a separate 'vanilla' library.
 
 how would that be different from the standard library? i guess the stdlib
 most likely will contain more objects than vanilla, and some
 objectclasses would not be part of stdlib or under another name
 ([makefilename] springs to my mind).

yes, exactly.  Then things like [hip~], [log], etc. that have changed over
the years in incompatible ways, they would only include the correct method.
 I would also replace [list append], etc. since it is the only set of
objects that violate the first word is the object name rule.

.hc



___
Pd-list@iem.at mailing list
UNSUBSCRIBE and account-management - 
http://lists.puredata.info/listinfo/pd-list