Proposal: "pekoe"

Ned Zimmerman nzimmerman at
Tue Dec 8 20:41:16 UTC 2020

Hi Antranig,

Thanks for the comments! I’ll definitely want to get feedback from you and others with deep knowledge of Infusion as to how the Pekoe components can be complementary. I imagine that in some cases they could be consumed by Infusion but I’ll confess I don’t have the clearest idea in my head of how that would work at the moment. I hope to learn more as I go.

In terms of your questions about Pekoe itself, my thinking has been that it would be structured as follows:

  1.  A JavaScript class for each component.
  2.  A Rollup configuration which generates:
     *   Browser-ready JavaScript that can be loaded via a script tag without needing a build process.
     *   ES Modules that can be used in different build systems (so that if required, one can import one or more specific Pekoe components into an website’s JavaScript bundle).
  3.  Example HTML markup and instantiation JavaScript which shows how to use each component in context.

In terms of templating, the Nunjucks templates in Pinecone are there largely as a result of the component library tool, Fractal ( which we used to build the component library (and which accepts “context” data for rendering example components via various templating engines). My thought had been that it would make sense not to specify or mandate a template engine for Pekoe, but rather to provide a usage example which could be adapted for any number of templating languages (Handlebars, Liquid, Nunjucks, etc.) or no templating at all if the circumstances dictated it. To see a bit more clearly the direction I’m going with this idea, you can take a look at a working draft of an accordion component, with the example’s markup and instantiation JavaScript in the “HTML” tab and more detailed usage in the “Notes” tab: (source here: The main distinctions from Pinecone are the absence of CSS and the separation of each component’s instantiation JavaScript into a clearly-documented example so that one doesn’t have to parse that entire pinecone.js file to see how to instantiate a specific component. I’d also like to make it easy for integrators to use only the parts of Pekoe that they need for a project, so that if (say) you want to use a tabbed interface component but don’t need anything else, there’s a browser-ready script that can be included via a script tag or a module for import into a build system for that component alone.

I’d be delighted to discuss this more with you if you have time this or next week.

Ned Zimmerman (he/him)
Senior Inclusive Developer
Inclusive Design Research Centre, OCAD University

From: fluid-work <fluid-work-bounces at>
Date: Monday, December 7, 2020 at 7:28 PM
To: fluid-work at <fluid-work at>
Subject: Re: Proposal: "pekoe"
Hi Ned - this sounds like a great project.

I had a look over the Pinecone library and really liked the clean markup and good organisation. It's great
that this collection of components has already been validated through use in several projects.
I've long felt that there is a gap in our lineup within Fluid, since Infusion has by now come to be a
somewhat bulky application framework with a fairly steep learning curve, and we don't have anything clear to
offer users who want to get off the ground quickly with a minimal set of progressively enhanced components,
especially in the increasingly popular static site context.

Infusion has an odd dual role as an ongoing research project in open application design, together with its
actual embedding in various projects and wrapping of components and expression of meta-frameworks such as
the preferences framework - this means it isn't the best fit for every project. It's also somewhat expensive
to support, so we tend not to solicit further uses of Infusion beyond those which are necessary to support
its design. It’s part of our aim in this programme that everyone with the power to use an application should
also have the power to adapt it. A long-term aspect of this aim is that even static sites should in practice
be editable - sounds crazy, but it has to happen somehow!

It seems likely that Infusion and Pekoe might become complementary further down the line, since the upcoming
rewrite of Infusion will be able to make greater use of application and component templates expressed in
pure markup.

When you say that Pekoe will be a "vanilla JavaScript component library", I'm guessing you mean that it will
largely come to consist of

ii) The module drivers for the various components plus the rollup/webpack config
iii) The component markup

A question I have is - what facilities, if any, you were planning to provide for templating? Is nunjucks, or
some parameterisation point, or else, nothing at all, going to be provided in order to connect consumers of
the markup to the markup? Given you said "vanilla Javascript" I was imagining you were planning for pekoe to
be dependency-free, but it seems like there is something to be done in this area - primarily, what were you
planning to factor out of pinecone in order to create pekoe?

Cheers on a great-looking and well-organised library, and I think it would be a great addition to the tools
that Fluid supports for accessible web development.


On 03/12/2020 18:55, Ned Zimmerman wrote:
> Hello all!
> Last year, Cheryl, Dana, Jon and I worked on a design system and component library
> <> for the Platform Co-op Development Kit. We called it Pinecone, drawing a
> connection between the principles of atomic design <>
> and the “twin pines” symbol <> that has long been associated with the
> cooperative movement. We worked to make each Pinecone component progressively-enhanced (when possible) and
> to support assistive technology users through accessibility best practices.
> We learned a great deal working on Pinecone and while the visual design is distinctively that of the
> Platform Co-op Development Kit, much of the underlying code has been repurposed in various in-house websites
> at the IDRC: the IDRC’s website <>, the forthcoming Community-led co-design kit
> <>,
> and others.
> I’d like to propose that some of the most frequently-used interactive components from Pinecone be extracted
> into a new, lightweight vanilla JavaScript component library, which won’t include any CSS but will include
> well-documented guides for integration of one or many components into any web project. I’m thinking we could
> call it “pekoe”, which fits thematically into the Fluid Project’s naming scheme and is a quasi-acronym for
> (p)rogressively-(e)nhanced (co)mponents. I’m eager to hear your thoughts!
> Cheers,
> Ned
fluid-work mailing list - fluid-work at
To unsubscribe, change settings or access archives,
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <>

More information about the fluid-work mailing list