Folks,

I want to access files from a “private” directory of a package -- in this
case pict3d -- but I was wondering what the best way to do this is.

First a bit of context:

  I am using the pict3d library for a project which allows me to render and
  experiment on various 3D models.

  As an aside to that project, I have a small utility that only uses
  pict3d’s ‘pos’ and ‘dir’ types (and their algebra libraries)

  I am happy for my “lab” to be massive (I need/want to fly through the models);
  but the utility will be used as part of a build process inside a low-memory
  docker instance† -- and needs to be quick.

  I can `(require pict3d/private/gui/user-types)`; which avoids me needing to
  link in all the rest of GUI. And that is necessary and sufficient for my 
needs.

My issue is with the “private” portion of that module path. It suggests
that its content and structure is at the convenience of the package’s
owner. From a “public” point of view, external to the package, I wouldn’t
expect ‘pos’ and ‘dir’ to disappear. And they are also well documented so
they form part of the API. But there is nothing to stop, for example, this
file from being refactored -- with the change being reconciled within the
overall package.

So, I see I have a few options:

  [1] (require pict3d/private/gui/user-types)
      and moan at the package owner if he breaks this for me

  [2] Suggest and submit a change which moves
      .../pict3d/private/gui/user-types to .../pict3d/gui/user-types --
      and clean up the fallout from this, including triggering complaints
      a la [1]

  [3] Suggest and submit a change which re-exports
      .../pict3d/private/gui/user-types from a new .../pict3d/gui/user-types
      (in fact, I’m not sure there’s anything necessarily “gui” about this
      part of the code) which to me looks to be the most correct option, but:
        a. is this necessary
        b. does this put me / the package onto a slippery slope of making
           everything public

Has anyone had any similar experience of using private package files that
they could share? Or any other thoughts on the matter.

Tim

† It took something like 30 minutes to `raco pkg install pict3d` on this
  thing, so `raco make _utility_` is probably a non-starter.

-- 
Tim Brown CEng MBCS <tim.br...@cityc.co.uk>
━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━━
                City Computing Limited · www.cityc.co.uk
      City House · Sutton Park Rd · Sutton · Surrey · SM1 2AE · GB
                T:+44 20 8770 2110 · F:+44 20 8770 2130
────────────────────────────────────────────────────────────────────────
City Computing Limited registered in London No:1767817.
Registered Office: City House, Sutton Park Road, Sutton, Surrey, SM1 2AE
VAT No: GB 918 4680 96

-- 
You received this message because you are subscribed to the Google Groups 
"Racket Users" group.
To unsubscribe from this group and stop receiving emails from it, send an email 
to racket-users+unsubscr...@googlegroups.com.
For more options, visit https://groups.google.com/d/optout.

Reply via email to