<div dir="ltr"><div><div>Liam,<br><br></div>Choosing a unique name for an external is indeed the best warranty to avoid conflicts. Not only a future release of a dependency has the potential to break your patch. An old release with a bug or missing feature can do that too! It seems there's no way to force Pd loading the executable that sits in your project tree (I would be very happy if someone can prove me wrong).<br><br>So if you're concerned about versions of externals breaking your patch, you could preventively fork them under a different and very specific name. Like 'contxt_demux', 'contxt_initbang'. I won't advise against it because the issue of name clash in pd is serious enough to consider all strategies, but be aware that forking is a bit more involved than simply renaming an existing binary (which won't do the trick as IOhannes has already mentioned).<br><br>In either case (modified class names or not) a redistribution of GPL licensed software should include the sources, and when you redistribute a subset you need a customized build system.<br><br></div><div>Note that I'm not advertising to redistribute, just detailing the consequences. I learn from this discussion too.<br><br></div><div>Katja<br></div><div><br><br></div></div><div class="gmail_extra"><br><div class="gmail_quote">On Fri, Jan 20, 2017 at 5:22 PM, Liam Goodacre <span dir="ltr"><<a href="mailto:liamg_uw@hotmail.com" target="_blank">liamg_uw@hotmail.com</a>></span> wrote:<br><blockquote class="gmail_quote" style="margin:0 0 0 .8ex;border-left:1px #ccc solid;padding-left:1ex">




<div dir="ltr">
<div id="m_7219974159237008549divtagdefaultwrapper" dir="ltr" style="font-size:12pt;color:#000000;font-family:Calibri,Arial,Helvetica,sans-serif">
<p>Dear all:</p>
<p><br>
</p>
<p>Thanks for the detailed responses. My main interest here is, as Katja mentioned, the desire for a one-click-buy option (minus the "buy"). A secondary concern is that some future release of an external will change somehow break the patch, although this doesn't
 seem likely, given how slowly externals tend to move and the general commitment to backwards compatibility.</p>
<p><br>
</p>
<p>I like Fred's idea of distributing two packages, one with- and one without externals*. However, I take Katja's point seriously that forcing two versions of the same file on the same disk could become problematic. A quick and dirty solution to this might
 be to rename all the external files that are uploaded in the Context deken package (ie. "demux.pd_linux" --> "demux2.pd_linux"). This would solve the problem as far as I can see, although it seems somehow wrong. What are people's thoughts about this?</p>
<p><br>
</p>
<p>Two other points that are worth mentioning:</p>
<p><br>
</p>
<p>1. Context depends on [initbang] from iemguts 0.2.1. Last time I checked, the deken package for this was only available for Windows, not Linux or Mac.</p>
<p><br>
</p>
<p>2. I haven't used the [declare] object at all, given the warning in the help file against using it in abstractions. Instead, each external is declared in the object name.</p>
<br>
<br>
<p><br>
</p>
<p>*Actually, four versions: one for Windows, Linux Mac, and one without externals.<br>
</p>
<br>
Liam<br>
<br>
<div style="color:rgb(0,0,0)">
<div>
<hr style="display:inline-block;width:98%">
<div id="m_7219974159237008549x_divRplyFwdMsg" dir="ltr"><font style="font-size:11pt" color="#000000" face="Calibri, sans-serif"><b>From:</b> katja <<a href="mailto:katjavetter@gmail.com" target="_blank">katjavetter@gmail.com</a>><br>
<b>Sent:</b> 20 January 2017 15:29<br>
<b>To:</b> Liam Goodacre<br>
<b>Cc:</b> PD list<br>
<b>Subject:</b> Re: [PD] repackaging externals on Deken</font>
<div> </div>
</div>
</div>
<font size="2"><span style="font-size:10pt">
<div class="m_7219974159237008549PlainText"><div><div class="h5">In the early days of Raspberry Pi I has a need to redistribute a few<br>
externals with PicoJockey, an ARMv6 targeted version of SliceJockey,<br>
because Pd-extended did not explicitly support the platform.<br>
PicoJockey includes a source tree with subsets of some external<br>
libraries plus a custom build system, and a binary build for ARMv6.<br>
<br>
This was in the pre-deken era, and while it would be technically<br>
possible to distribute PicoJockey (or any Pd project) in such a format<br>
via deken, I seriously doubt whether that it is a good idea. Libraries<br>
in deken are versioned, and so would be a project that depends on<br>
libraries. A project can only specify it's own version in the deken<br>
interface. Now imagine a project silently installs unspecified<br>
versions of other packages, or subsets thereof? Even when they reside<br>
in a subtree of the project, they will conflict with 'official'<br>
versions if not identical. This can be a source of confusion and<br>
frustration no matter how well you know Pd.<br>
<br>
I perfectly understand your desire for a 'one click buy', Liam. That's<br>
what I wanted for SliceJockey and PicoJockey as well. It's good for<br>
your project and also for the reputation of Pd when things work out of<br>
the box. But we have to recognize the fragility of a dependency chain.<br>
Even in the heyday of Pd-extended a library update could wreck your<br>
'one click' project and leave people puzzled why it stopped working.<br>
In my experience, a Pd project with 'app convenience' is an illusion<br>
that can hold for only a while. When a project suggests to be<br>
self-containing, users are unaware of dependencies and clueless if<br>
something breaks.<br>
<br>
Externals are plugins no matter how they are distributed. Be sure to<br>
accurately and conspiciously document all dependencies of your<br>
project, on your project page and in the distribution. Then if<br>
something breaks, people will hopefully remember to check dependencies<br>
and come back to your project page for info or updates. Some<br>
dependencies are more susceptible to break than others (e.g.<br>
unmaintained / orphaned / complicated / debated / forked libs).<br>
<br>
You could use various distribution methods according to target<br>
audience and release cycle. Why not start with an alpha test release<br>
for vanilla + deken? If your project provides clear dependency<br>
statements and include mechanisms like [declare] objects, your alpha<br>
testers should be settled with a few deken clicks instead of just one.<br>
If not... oh yeah... now I remember your problem with one external not<br>
being up to date in deken. Is that a consideration for 'repackaging'?<br>
<br>
Katja<br>
<br>
<br>
On Wed, Jan 18, 2017 at 5:12 AM, Liam Goodacre <<a href="mailto:liamg_uw@hotmail.com" target="_blank">liamg_uw@hotmail.com</a>> wrote:<br>
> Hi all<br>
><br>
><br>
> I'm starting to think about how to distribute the Context sequencer when it<br>
> is ready (hopefully the day is not very far away).  Context is an<br>
> abstraction, but it relies heavily on externals*. Ideally, I want it up on<br>
> Deken, but I'm not sure what to do about the external packages. Is it<br>
> feasible / acceptable to bundle all the externals I'm using into a folder<br>
> and distribute them along with the main Context package? I'm hoping that<br>
> this way the whole thing could be downloaded and installed in one click, but<br>
> I want to make sure that there aren't any complications or license issues.<br>
> Has external repackaging been done before?<br>
><br>
><br>
> *The external libraries I'm using are:<br>
><br>
><br>
> -cyclone<br>
><br>
> -zexy<br>
><br>
> -iemguts (including initbang)<br>
><br>
> -moocow<br>
><br>
> -flatgui<br>
><br>
> -list-abs<br>
><br>
><br>
> ______________________________<wbr>_________________<br>
> <a href="mailto:Pd-list@lists.iem.at" target="_blank">Pd-list@lists.iem.at</a> mailing list<br>
> UNSUBSCRIBE and account-management -><br>
> <a href="https://lists.puredata.info/listinfo/pd-list" id="m_7219974159237008549LPlnk777977" target="_blank">
https://lists.puredata.info/<wbr>listinfo/pd-list</a>
</div></div><div id="m_7219974159237008549LPBorder_GT_14849268528720.5226649771266156" style="margin-bottom:20px;overflow:auto;width:100%;text-indent:0px">
<table id="m_7219974159237008549LPContainer_14849268528650.7956537575907138" style="width:90%;background-color:rgb(255,255,255);overflow:auto;padding-top:20px;padding-bottom:20px;margin-top:20px;border-top:1px dotted rgb(200,200,200);border-bottom:1px dotted rgb(200,200,200)" cellspacing="0">
<tbody>
<tr style="border-spacing:0px" valign="top">
<td id="m_7219974159237008549TextCell_14849268528670.9696078409664122" colspan="2" style="vertical-align:top;padding:0px;display:table-cell">
<div id="m_7219974159237008549LPRemovePreviewContainer_14849268528670.7488893026966981"></div>
<div id="m_7219974159237008549LPTitle_14849268528670.6946065506508848" style="color:rgb(0,120,215);font-weight:400;font-size:21px;font-family:"wf_segoe-ui_light","Segoe UI Light","Segoe WP Light","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;line-height:21px">
<a id="m_7219974159237008549LPUrlAnchor_14849268528690.7690082540420653" href="https://lists.puredata.info/listinfo/pd-list" style="text-decoration:none" target="_blank">Pd-list Info Page</a></div>
<div id="m_7219974159237008549LPMetadata_14849268528700.47295494044091047" style="margin:10px 0px 16px;color:rgb(102,102,102);font-weight:400;font-family:"wf_segoe-ui_normal","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:14px;line-height:14px">
<a href="http://lists.puredata.info" target="_blank">lists.puredata.info</a></div>
<div id="m_7219974159237008549LPDescription_14849268528710.5286369078567863" style="display:block;color:rgb(102,102,102);font-weight:400;font-family:"wf_segoe-ui_normal","Segoe UI","Segoe WP",Tahoma,Arial,sans-serif;font-size:14px;line-height:20px;max-height:100px;overflow:hidden">
Pd (standing for Pure Data) is a Max-like graphical realtime-computermusic language, written by Miller S. Puckette (et al.) This mailinglist is meant as a platform ...</div>
</td>
</tr>
</tbody>
</table>
</div>
<br>
><br>
</div>
</span></font></div>
</div>
</div>

<br>______________________________<wbr>_________________<br>
<a href="mailto:Pd-list@lists.iem.at">Pd-list@lists.iem.at</a> mailing list<br>
UNSUBSCRIBE and account-management -> <a href="https://lists.puredata.info/listinfo/pd-list" rel="noreferrer" target="_blank">https://lists.puredata.info/<wbr>listinfo/pd-list</a><br>
<br></blockquote></div><br></div>