[PD] Best practices for [declare]

Dan Wilcox danomatika at gmail.com
Fri Feb 26 01:59:23 CET 2021


Honestly, I'm not going to rehash *all* of the discussions about paths, but I do feel like writing some perspective, at least as far as I see it as a user, someone who has taught Pd a bit, and someone who has now worked on it.

# Standard Paths

What I will point out is that, in most ways, "standard path" is a misnomer in Pd.

These we originally added as essentially hardcoded search paths:

https://github.com/pure-data/pure-data/blob/master/src/s_path.c#L243 <https://github.com/pure-data/pure-data/blob/master/src/s_path.c#L243>

Linux:
~/.local/lib/pd/extra/
~/pd-externals
/usr/local/lib/pd-externals

macOS:
~/Library/Pd

Windows:
%AppData%/Pd
%CommonProgramFiles%/Pd

And I believe Pd's own bundled "extra" path is one of these as well.

"Hey that's great!" says everyone "Now I can just plop things in there!"

...except that things change over the years.

The "Library" folder in the macOS user home folder has been hidden by default for some years now. Whoops, easy to find place gone for Mac people. "Oh but they can just put stuff in extra" ...except that "extra" is located INSIDE the macOS .app bundle, so now we need to ask beginners to literally OPEN an app they download and add files INSIDE. Hmmmm not scary at all?

For Windows people, where is that again? Kind of obscure for some people as well.

Linux makes the most sense, but how many users want a "pd-externals" folder in their home folder and how many beginners are going to navigate to /usr/local/lib/pd-externals?

# User Search Paths

So moving forward, people can add their own user search paths aka not one of the hardcoded "standard paths" which are mostly obscure / hard to find for beginners. Then they can define their OWN place to plop externals. Great!

...except that beginners have to manually create their own folder, add it to the user search paths, and then it works. How many people do this right on the first go? Maybe not a big deal, but another stumbling block.

# Deken

As Pd-extended slowy dies out, deken is introduced to help with decentralized externals. Great! We have a tool to help download and install pre-buitd externals.

...but where do we put them? Originally, deken downloaded to the bundled extra folder because it was the only "standard path" known to exist on all systems. Great!

...except macOS people STILL are downloading and installing things INSIDE the Pd .app bundle. So when you delete the .app and replace it with a new version of Pd, you've lost all of your externals and you may not know why if you've only ever downloaded things with deken.

Sure, you can specify a deken download location but it's yet another step to ask beginners to have created such a location, add it to their user search path, AND specify that deken should use it. I think the early versions of deken, you had to manually choose the download location on EVERY download.

# Documents Directory

After prodding from other Pd users on this list who also teach Pd, the Documents Directory was added as a helper to create a user search path for both beginners to use AND provide a default deken download location (~/Documents/Pd/externals) which is also added to the user search paths on creation. Beginners now have a basic place to start with and externals downloaded form deken should be found via declare.

The ~/Documents/Pd location was chosen as it mirrors the locations chosen by various other "creative coding" environments such as Processing (~/Documents/Processing) and Arduino (~/Documents/Arduino). If the documents directory is enabled, Pd GUI dialogs also open here by default instead of in the user home folder.

This is not a replacement for the previous "standard paths" but sort of a "super user search path" that can be created for you, if you want.

If you hate this, you can click NO when it asks or disable it in the Paths preferences, and curse me as I wrote the plugin which provides this functionality.

For posterity, the full background on this feature is here: https://github.com/pure-data/pure-data/pull/152 <https://github.com/pure-data/pure-data/pull/152>

> On Feb 26, 2021, at 12:58 AM, pd-list-request at lists.iem.at wrote:
> 
> Message: 3
> Date: Thu, 25 Feb 2021 23:48:23 +0000 (UTC)
> From: Sebastian Shader <sebfumaster at aol.com <mailto:sebfumaster at aol.com>>
> To: "pd-list at lists.iem.at <mailto:pd-list at lists.iem.at>" <pd-list at lists.iem.at <mailto:pd-list at lists.iem.at>>
> Subject: Re: [PD] Best practices for [declare]
> Message-ID: <2025038600.476357.1614296903882 at mail.yahoo.com <mailto:2025038600.476357.1614296903882 at mail.yahoo.com>>
> Content-Type: text/plain; charset="utf-8"
> 
> why is it that using standard install locations isn't encouraged (or rather, why did it move into Documents of all places?)

--------
Dan Wilcox
@danomatika <http://twitter.com/danomatika>
danomatika.com <http://danomatika.com/>
robotcowboy.com <http://robotcowboy.com/>



-------------- next part --------------
An HTML attachment was scrubbed...
URL: <http://lists.puredata.info/pipermail/pd-list/attachments/20210226/d8b77408/attachment.htm>


More information about the Pd-list mailing list