Learning centricity vs Learner centricity: some thoughts on Dave Cormier’s human-centred model for discussing AI in assessment

I don’t think I’ve ever read any published article by Dave Cormier that I didn’t like, and I’ve read quite a few. This latest blog post, “A human-centred model for discussing AI in assessment” is no exception. In it, Dave describes his framework for discussing AI in assessment with teachers and other course designers, revolving around 3 questions:

  • Did they do it?
  • Have they learned?
  • Are we helping?

I love the simplicity:  I like how the questions cut through to what matters with absolutely no jargon or equivocal wording. I really like the emphasis on learning and the lack of explicit AI focus. These are good questions for any credentialed work, not just in the context of AI. I think I’d be inclined to add one more question:

  • Have we learned?

because this is really the point of it all, and we should be designing our assessments so that we do learn, but maybe that is implicit in the context. There might be other questions to ask like “To what extent can we prove this?” or “Is it equitable?” or (my favourite) “Did it bring joy?” and so on, because there are bigger systems into which this needs to slot, but maybe they are for a different and more focused conversation.

However, though questions are great, the diagram puzzles me:

After poring over it for a while, I think the overlaps are meant to represent where the answer to the question is “yes” (so the sweet spot is where they did it, we helped, and they learned in the process) while the non-overlapping elements are those to which the answer is “no”, and the labels of the intersections are ways of describing the results of aligning them. If so, it’s an odd way of using Venn diagrams. The core problem is that the questions are not sets, so they cannot intersect and, to make it worse, they are questions about different kinds of entity that could never be overlapping sets:

  • The work submitted for assessment (artifacts).
  • What students learned (cognitive changes).
  • What we did to try to help them learn (interventions).

I like the idea of a Venn diagram for this, though, so I started to wonder what should really be in those sets, and what follows is the result.

A learning centred model for discussing AI and assessment

Rather than focusing on the whole learner, I think would make more sense were we to look at the questions from the perspective of the learning (latent or actual) that each question is asking about:

  • Intended learning: the knowledge, including subject and pedagogical knowledge and skills, both tacit and explicit, that the teacher (a distributed entity including designated teachers, the learner, other learners, textbook authors, institutional systems and policies, etc) intends to facilitate. Subsumes learning outcomes but also includes ways of thinking, learning, acting, etc.
  • Actual learning: the knowledge and skills gained in the process. This speaks not only to what is learned but also to how it is accommodated and integrated with existing knowledge and skills.
  • Learning exhibited in assessed work: some being the result of what the student did, perhaps some being from something/someone else, for more or less legitimate reasons.

In real life, this is all deeply intertwingled and learning cannot possibly fall so neatly into measurable sets. Any measurements are almost entirely notional. We might be able to get some clues about the knowledge it represents,  but knowledge is not neatly quantifiable either. It can be extended, embodied, enacted, or embedded, and it’s a collective as well as an individual phenomenon but, even from an individual perspective, it’s not a thing you can count. It’s a thing you do as much as a thing you have. However, this is a model, not the reality that it models, and it is to support a conversation about design and performance, so we don’t need precision or anything like it.  It just needs to be good enough to be able to talk about what we need to talk about.

Here’s my attempt at a quick and dirty diagram to represent this:

Venn diagram focused on learning

Dave’s questions can easily be overlaid on top of this in order to explore how it plays out in any particular course, as can quite a few others. It illustrates that some or all of the work submitted might not contribute to student learning, and that some or all of it might not be the result of our teaching. It correctly shows that we routinely assess work that students did not do, and that we only assess a sample of what was learned.  It highlights the fact that a lot of learning happens that is neither taught nor assessed, that we teach things we do not assess, that teaching behaviours don’t always result in learning, and we assess things we do not teach. It represents the fact that learning can happen even when the student is not the creator of the work that is supposed to lead to it and/or represent it, which can be especially significant in a genAI context. It allows us to overlay plenty of other questions, including the extent to which the tasks we set and the time we allowed for doing them made it more likely that the work submitted was not that of the student.

Possibly wasted efforts?

I’ve labelled learning that is exhibited in the assessed work, or only in the teacher’s intentions, but not in the student, as possibly wasted effort. This is not necessarily a bad thing, as long as the learning that did occur was sufficient and sufficiently worthwhile. In some cases it is absolutely normal and acceptable: for example, if a student provides a website that uses frameworks or libraries, it would be incomplete without them, even though the knowledge they signify is not that of the student (depending on how you understand “knowledge”).  It is also part of the process that it has to be a bit lossy. Learning needs breathing room for scaffolds, connections, and shuffling things around that don’t immediately fit.  It’s not information: it’s a living, breathing, active thing.

All that said, on the whole, I think it would be better if more learning had occurred. Anything that doesn’t fall within the “actual learning” set is stuff that could have been but has not been learned. And, for credentialed assessment, it is quite important that we don’t wind up awarding credentials for things the students have not learned. All that said, the contents of these subsets can indicate failure: if a student uses a generative AI or hires someone to create the work, it may well be a complete waste of time. If a teacher attempts to teach something but the student does not learn it then, though there is a possibility that the student learned other useful things (like to avoid the teacher’s classes), it seems a little wasteful.

Definitely wasted efforts

One of the most interesting subsets is the intersection of work submitted for assessment that complies with the requirements, that we tried to teach, but that is not the result of learning, at least of the sort we seek. Unless it is flagged as such and done intentionally, I think of this as the zone of unreliable assessment. It is the “bad AI” and copypasta zone, but there are plenty of other ways it can occur, including when students formulaically do something that meets the outcomes without understanding why or how it works. Whatever the cause, if we award credentials for knowledge and skills that students lack, we are failing in our credentialing role. This is not a big issue if it is ungraded, of course: it might even be a good thing that assists further learning. It is not unheard of for unlearned stuff to be the only thing we assess, though, and that unequivocally sucks. It’s not just a missed goal but an own goal.

Undiscovered outcomes

Another really interesting subset is the zone of unmeasured outcomes: outcomes for which there is clear evidence in the work provided, but that don’t fit the rubric or intended outcomes of the teacher. I think there is great scope for outcome harvesting here. It is not unusual for the most important outcomes of a course to be unintended and unmeasured, but it is quite unusual for us to provide credentials for them. I think we should try to do so, if we are serious about being human-centred. And, if there are lots of untaught outcomes that consistently appear in the assessed work, it might imply a shortfall in our teaching or description of the course. It’s a lot of work to mine learning outcomes, but GenAIs could be helpful: if we provided them with the work, intended outcomes, and a rubric, then asked what other competences were demonstrated in the work, they might provide a sufficiently close approximation for us to make the judgment calls needed to help our students.

Unmeasured teaching

The zone of unmeasured teaching contains the learning outcomes that we intentionally taught and that were met but that we didn’t assess. I don’t see this as a particularly major issue, apart from the fact that, if we are giving credentials rather than just using assessment for learning purposes, it would be kinder to make it possible for this additional evidence to be considered. This is a good reason for using a portfolio approach to assessment.  If we are not doing that, then this is the zone in which to look for alternative assessments or better constructive alignment.

Mysterious learning

The most interesting zone of all (to me) is the one I have labelled as “Here there be dragons” which, following the lead of ancient cartographers, is my way of describing the significant subset of student knowledge about which we know little or nothing, that occurs while students are learning what we are teaching, that is not reflected (directly) in the assessed work, but that is neither what we taught nor what we intended to teach. This is the frontier territory that few of us ever enter unless we are committed complexivists, but that I think we need to explore most of all. This is especially so in an age of generative AI, where our traditional proxies for learning are breaking all around us and learners have far more supports outside the institution than within it. Reflective portfolios can help reveal a little of it, as can approaches to assessment in which we ask for evidence (any evidence) rather than compliance with our demands. It’s another space where AIs that could observe students  learning might help, if everyone involved happened to be OK with some huge privacy, security, and trust issues. Knowing more about this and celebrating its existence opens up the potential for more learner-controlled outcomes, for the teacher to also be the taught, and for moving more of the unmeasured outcomes into the sweet spot.

The sweet spot

The sweet spot – essentially the happy intersection between teaching, learning, and assessment –  is where constructive alignment occurs, and it should normally be as large as possible. Its relative size is a good proxy for the effectiveness of teaching and assessment, especially if the zone of unreliable assessment is small. There will never and should never be a perfect overlap as long as the knowledge is worth knowing, and there is always knowledge embedded in artifacts that is only borrowed from its creators, but the more we can know of what and how the students know, the more they know of what we know, the more that the evidence of knowledge in what we assess overlaps with what students actually know, the better it will be for everyone. The two-way knowledge flow between learner and teacher (bearing in mind teachers include the students themselves) is particularly important for achieving that.

Is this model in any way usable?

I don’t know if this is any better for this purpose than Dave’s original model: probably not. It’s more cohesive as a Venn diagram but it is more opaque as a prompt for dialogue, and I’m not entirely sure my model captures quite the same phenomena. In caricature, Dave’s is about learners, while mine is about learning. In conjunction with his questions, though, I think it might help to reveal more about both.

Paper: “Redefining Educational Technology: A Critical Collaborative Inquiry”, now available via Open Praxis

screenshot of title and authorsI am fifth of 26 authors, led by the remarkable Aras Bozkurt, of a new paper,  “Redefining Educational Technology: A Critical Collaborative Inquiry,” published in Open Praxis this month.  I find myself in the company of some extremely luminous researchers from around the world, old and young, famous and less famous, who worked together on this using a collective writing methodology. In a loosely Delphi-like process, Aras started by gathering some quite detailed answers to some fairly open questions around the topic, assembled them into a draft of the paper, and then let us rip on it for a month or two, before some intensive collaborative work resolving what appeared to be hundreds (but might have just been scores) of comments involving quite rich debate and contrary opinions. The fact that we were spread across many timezones meant that, for a few weeks, there were always plenty of new changes and comments to follow every morning when I woke up and each evening at the end of a working day, and it got to be fiendishly difficult but very rewarding to follow them all. Seeing the finished paper, I’m sad it is now fixed. I still see a few places that I would like to make some small changes, so it would be super cool to be able to open it up to the broader community for further development. Imagine what not just 26 but 100 or even 1000 authors could come up with: a truly timely and organically evolving definition of the field.

I’ve participated in a few of these collective writing projects over the past few years, including View of Speculative Futures on ChatGPT and Generative Artificial Intelligence (AI): A Collective Reflection from the Educational Landscape The Manifesto for Teaching and Learning in a Time of Generative AI: A Critical Collective Stance to Better Navigate the Future, and  Venturing into the Unknown: Critical Insights into Grey Areas and Pioneering Future Directions in Educational Generative AI Research. All (especially the first) have been cited at a far higher rate than any other papers I have ever been involved with, partly because they are all really good, timely and authoritative papers, partly due to the skill and reputation of those who have led them, and partly because of promotion and citation by the large number of well-known authors involved in writing them. They have some of the same strengths as meta-studies (generally among the most highly cited papers in any field), representing an assortment of views stemming from prior research, with the added benefit of the original researchers having to defend their cases to the rest, albeit with social factors intruding that can lead to group-think, more voluble participants getting more of the air time, and so on.

Though the positive factors remain much the same in this one, I’m not sure whether this new paper will achieve a similar impact. It will get cited because it is, arguably, among the best ever written on the evolution of the educational technology field itself. If you are working in a niche where you need a shorthand high-level abstract analysis of every major thing that has happened in the field for at least the last half century, as well as (in more detail) currently significant themes, then this is the paper for you.  However,  I’d be slightly surprised if the definition we came up with at the end of it will get a great deal of broader traction. I think Aras did a great job of editing it down to something most of us found agreeable but it was a Sisyphean task that was never going to lead to something that would delight everyone. Apart from anything else, though a vast improvement on some of our earlier drafts, the definition is still very long and unwieldy. The refinements in the final paragraph are more contentious because they speak to aspirations rather than describing the whole reality. With such a large and diverse group hacking at it, it was very hard to come up with something that we all agreed with but, rather than get rid of them, Aras moved the more aspirational and prescriptive parts of it to the end. My words are in it but it’s a committee definition, and definitely not one I would write myself. I think I’d currently go with something like “the organization of stuff for learning and accreditation” though educational systems are complex and concerned with far more than just learning and credentials, so I might refine it a little further.

Here is the definition we actually came up with, in all its slightly awkward glory:

Educational technology, as a field of inquiry and practice, encompasses the research, understanding, design, orchestration, and evaluation of entangled human-technological systems — spanning analog, digital, organizational, social, and agentic dimensions — through which learning and meaning-making are enabled, mediated, supported, and transformed.

The field brings together researchers, practitioners, educators, communities, and institutions in ongoing efforts to study and improve educational experiences across formal, non-formal, and informal contexts.

The field holds as a core commitment that its theory, research and practice should be ethically grounded and critically reflexive — attending to the societal implications of technological integration, with particular concern for equity and the distribution of agency among all participants in educational processes. These commitments describe what the field aspires to, not a guarantee of how all its practice is enacted.

One important limitation: despite the large number of people from across the world involved, we are not perfectly representative of the field as a whole. I don’t think we had anyone from the training or corporate learning industry; the authorship was skewed towards researchers from relatively developed countries; we didn’t have many edtech geeks; there was not a lot of K-12 focus; women only accounted for less than a third of the authors; we were a little light on the informal and non-formal aspects; and we shared some non-universal attitudes, notably in having above average positive feelings towards openness. I don’t think many (if any) of us are involved with AECT, and that matters because the AECT plays a large role as a primary source of earlier definitions we respond to. In particular, I and my fellow co-authors are all part of a large but not ubiquitous community that would recognize complexivist accounts (e.g. Connectivism, entanglement theory, rhizomatic learning, networks of practice) as the most significant pedagogical models of our time, while AECT, even in its most recent definition, has never formally acknowledged their existence. The AECT definition also seems remarkably quiet about AI, even in its most recent, post-ChatGPT incarnation. I don’t know whether this is because it members move in different and more conservative educational circles than us, or whether it is a deliberate policy decision to ignore anything less than 10 or 20 years old, but not knowing is exactly why it is troublesome. I think that this makes a compelling case that our paper should be read as at least a counterbalance to theirs, but that there’s a future paper yet to be written that brings the many branches of the field together. And that is the point: not to create a definition that stands forever, but to be part of the ongoing conversation about what we do and why we do it, to capture a snapshot of what we think we are doing, and to allow it to be challenged and developed further. I’m very pleased to have had the chance to be a part of this. In a very real sense we were walking the talk, enacting and engaging in the kind of learning that we think edtech should support and enable. Aras is a real star for making this happen.

Finally, a personal reflection. One of my own papers is cited flatteringly often in the paper, but not by me, which was quite a novel thing for me to have to deal with. It put me in a slightly awkward position of wanting to explain and sometimes to defend it, while really wishing to cite some of my more recent papers and a whole book that represent a more developed view, yet feeling slightly apologetic and (in the company of many more significant researchers) not at all confident about pushing my views even more than they were already being pushed. It was a weird mix of feeling privileged, feeling proud, knowing that (having written a whole book on it, not to mention a lot of other papers) I should think of myself as something of an expert, but feeling very much like an imposter in the midst of all these smart people, not worthy of the attention. In the end I did chip in some clarifications and expansions, and I argued a few cases (mainly where my own theory was in agreement with others) but I consciously self-censored and there are still a couple of places where the interpretation is not quite what I meant when I wrote it. The soft/hard distinction, in particular, makes me a bit uneasy because, though my own views are represented, a different and (I believe) fundamentally incoherent definition (the classic business/accounting model of immaterial vs material) is partially spliced onto it. However, as I had to keep reminding myself, the paper appears in the text not because I promoted it but because others saw it as significant, so their understanding of it matters more than mine. There’s something self-referential in that, speaking to one of the core messages about the entangled, intertwined, complex, and distributed nature of knowledge that our new definition emphasizes.  It was an odd feeling, though, to see what has become of my baby now it has left home and had to fend for itself.

Abstract

Educational technologists have not settled on a fixed definition of the field and likely never will. However, attempting to define the field helps to understand the epistemological meanings that shape what the field sees, values, and considers worth pursuing. Through a critical historical review spanning over a century, alongside theoretical engagement with the concepts of entanglement and distributed agency, this paper identifies three key insufficiencies in current educational technology frameworks. These are the persistence of an instrumental-facilitative paradigm that treats technology as a resource deployed by human agents; the theoretical dissolution of the pedagogy-technology dichotomy that existing definitions have not absorbed; and the near-total silence on generative and agentic artificial intelligence, systems that now function not as tools but as active co-participants in educational processes. In response, we propose a new definition: Educational technology, as a field of inquiry and practice, encompasses the research, understanding, design, orchestration, and evaluation of entangled human-technological systems — spanning analog, digital, organizational, social, and agentic dimensions — through which learning and meaning-making are enabled, mediated, supported, and transformed. The field brings together researchers, practitioners, educators, communities, and institutions in ongoing efforts to study and improve educational experiences across formal, non-formal, and informal contexts. The field holds as a core commitment that its theory, research and practice should be ethically grounded and critically reflexive — attending to the societal implications of technological integration, with particular concern for equity and the distribution of agency among all participants in educational processes. These commitments describe what the field aspires to, not a guarantee of how all its practice is enacted. This definition is offered not as a resolution but as a basis for ongoing discussion, as it is best understood as a living definition. The field’s task is not to settle on a definition, but to keep it constantly evolving.

Reference

Bozkurt, A., Crompton, H., Farrow, R., Kukulska-Hulme, A., Dron, J., West, R., Palalas, A. (Aga) ., Bower, M., Xiao, J., Tlili, A., Henriksen, D., Pazurek, A., Huijser, H., Chiu, T.K.F., Jandrić, P., Jordan, K., Curry, J., Kimmons, R., Cukurova, M., Reeves, T., Hwang, G.-J., Shea, P., Lodge, J., Weller, M., Ng, D. and Asino, T.I. (2026) ‘Redefining Educational Technology: A Critical Collaborative Inquiry’, <i>Open Praxis</i>, 18(2), p. 192–211. Available at: https://doi.org/10.55982/openpraxis.18.2.1117.

Paradigm shifts, bricoleers [sic], and other animals

Bricoleering, or adaptafacture illustratedBen Werdmuller is a serial innovator, edtech veteran, and deeply insightful commentator on the tech industry whose skills defy easy categorization. I like him a lot. In One size fits none: let communities build for themselves Ben tells us about how to build digital social systems that fit the needs of their communities, and it is well worth reading if you have any interest in social software.

The post starts with description of the reaction of developers when, in the Summer of 2007, at an Elgg-jam at my then-university in Brighton, Ben first introduced the newly refactored Elgg 1.0 framework. In its several pre-version-1 iterations, Elgg was not a development framework but a full-blown web application. It had blogs, wikis, file sharing, bookmarking, groups, and much more, all wrapped up in a robust social network system with smart discretionary access, extensible very easily through a simple-to-use plugin system. It was easy to use, rich in features, highly adaptable, and it might have been the most popular open source social networking system on the planet at that point. It was a bit hacked-together and not exactly an engineering masterpiece, but it worked really well.

What Ben announced that day stripped away virtually all of its existing functionality, leaving only a tiny core that could do almost nothing user-facing on its own apart from simple user management, the display of activities, and some basic admin tasks. I don’t think it was even possible to create a post and I have a feeling there were floppy disks around at the time onto which the whole thing could fit.  The idea was that it was up to developers to provide plugins that end-users could configure to create any kind of social system they wanted, with the core providing the API and data structures to support and greatly simplify their development. A few common tools like blogs, wikis, file sharing, and bookmarks were provided in a package of core plugins to help get things started, but all were (and are) optional. It was extremely elegant.

I believe that I was the person Ben refers to who, many years later (at another Elgg-jam, in San Francisco, as it happens), described his “big reveal” as a mind-blowing moment. Almost every hair on my body stood on end. I got it immediately because I had been thinking along very similar lines – there’s a chapter on such things in my first book, published earlier the same year – and had been, up until that point, intending to spend my newly-acquired national teaching fellowship money on building it. Instead I went with Elgg, which provided the framework on which the Landing and a few other sites (including the one at Brighton to which Ben refers) were built, and the money mostly went towards plugin development for it. 

In fact, in the form in which it first launched, Elgg 1.0 wasn’t exactly what I wanted. My vision was more distributed and centred around small services, loosely joined, rather than a single monolithic plugin-based server. The roadmap, though, that Ben described that day made exactly that possible, with plans for a robust and extensible range of services and standards for information interchange that, had they gained any traction, would have made a federated social system of almost any kind simple to create and evolve.

They didn’t gain that traction.

I think a big part of the reason might be that, with no backwards compatibility at all with the older version, and no good migration path for those already running Elgg, it lost almost all of the momentum and good will it had previously gained, and others had moved into the space in the interim that could provide an off-the-shelf experience that was at least as good as the replacement, without the need for further development. In particular, WordPress and Buddypress were already on the rise. Ben eventually moved on to do other things, Elgg gained a loyal and slowly growing following and became a foundation, but its focus shifted to being a development platform for building bespoke servers rather than a distributed social system.  The web services and neat ODD protocol never took off enough to be usable beyond some very limited use cases. However, the plugin-based architecture and tiny core was still a cool idea and building using small pieces for almost everything seemed to me to be a really good way to build a social system, so that’s what I and my teams did. It turns out to be much less cool when you want to maintain it, though, a fact that I was quite well aware of but failed to grasp in its full magnitude until it was too late.

Red Queen development

Running ever faster to stay in the same placeAs we built the Landing we soon ran into the painful flipsides of plugins, which include the fact that you can’t easily remove them once many people use them, the large number of dependencies they create, and the fact that they have to be maintained, at least every time the core gets updated. It is not helped by the fact that, I think for efficiency,  backwards compatibility is still rarely much of a consideration when Elgg gets an upgrade: though they will generally survive (with deprecation notices) for a version or two, many old plugins will simply break if they are not updated, often in subtle, difficult to debug ways. And part of the elegance of the design is also one of its greatest flaws: that, though you can design things in a more robust way, any plugin can fully override almost anything provided by any other simply by including a file of the same name and position in the directory hierarchy. This plays havoc with new versions, and makes plugins far more co-dependent than the very self-contained, well-encapsulated services I had been imagining. To make things worse, it does not scale at all well: Elgg’s object-over-relational data model is very elegant, but it is not very efficient when your site grows large, and every data-storing plugin adds to the problem.

At one point the Landing had 116 plugins (admittedly with a few turned off by default), about a third of which we built, a third of which were distributed with the core, and a third of which were community-developed. As well as our own plugins, we gradually had to take on more and more of the community-plugin development ourselves as original developers abandoned them, or face the wrath of those who needed them. Of the 90 or so that are left today, about half are our/my responsibility. On average, when things were going well and we had the funding for a full-time developer,  I reckon most plugins averaged about a person-week of design, development, and testing to upgrade, though the various dependencies and bottlenecks meant that it was rarely less than a month from start to finish before they arrived on the site. Meanwhile, the core was getting updates, sometimes more than once a year. With very little spare cash, especially after losing our full-time developer, there was no way that we could ever hope to keep up with the release cycles of the core and keep the number of plugins we had to maintain. We were stuck in a Red Queen Regime, running harder and harder to stay in the same place. Some call this a technological debt, but it’s just the price of ownership, and we couldn’t pay enough. 

It may be a blessing in disguise then, that, some 10 or 11 years ago,  the decision over whether to continue development was taken out of our hands by a CIO who refused us any resources to even test let alone to install anything, as a result of a grossly misguided “back to baseline” principle that ravaged many good systems during his tenure, even though we (then) had plenty of money to continue and offered to put it all into his budget. The Landing limped along regardless because it was embedded in many courses, research groups, centres, and so on, so it couldn’t simply be switched off, no off-the-shelf alternative came close to doing anything similar, and we built it to be robust (though never expecting it to still be around, almost unaltered, over a decade later) so it carried on working. With the help of less hostile but never exactly enthusiastic CIOs, we have limped along ever since, very slowly creeping up through the versions on a shoestring budget and odd moments of my own spare time, but we are very far behind the cutting edge.

And then came ChatGPT

LLMs – Claude in particular – can be great at coding, especially for small projects like plugins. I have been vibe coding for a few years now, and it has been incredibly useful in many aspects of my life. However,  even the best of them tend to struggle with Elgg plugins. I think it is because there is not enough Elgg code out in the wild, and there have been too many versions and too many approaches to development, so there’s not enough good quality training data. Since the first week of the launch of ChatGPT, I have been trying to get genAIs to help me with Elgg plugin upgrades and bug fixing but, though I have picked up some very helpful ideas in the midst of some very bad attempts at solutions and they have spotted a few bugs for me, not a single line of actual AI-generated code has ever made it onto the Landing. This is going to change. 

A few days before Ben wrote his post, on a hunch, after some frustrating attempts at getting Claude, ChatGPT and Gemini to upgrade an existing plugin that was too difficult for me to take on alone, I instead simply asked Claude to make me a new one, with specs I had extracted from the original (using ChatGPT and tweaking the output), but giving it no access to any of the original’s source code or program structure.

Apart from a couple of minor syntax problems that took hardly a minute to fix, it worked first time. It was considerably more polished than the original and, indeed, than almost all the plugins we had written ourselves or commissioned at costs of up to $10,000. It has no deprecated code at all – something that is not even true of plugins in the core for our current Elgg version – and it has all sorts of useful little configuration options that Claude extrapolated from the specs and that I would have been too lazy to bother with, but that make it way more adaptable than its predecessor. It even has a complete set of language files for both French and English – extremely rare in human-made plugins – and it would be trivial to ask it for other languages if we needed them.

I think this works because of the different way Claude approaches the problem compared with how it handles an existing plugin. When trying to fix a broken or obsolete plugin, the plugin itself plays a large influencing role, then Claude pulls on a ragtag bunch of existing plugins as examples, but the paucity and mixed quality of the training data means they are less than wonderful role models. Almost all of its prior attempts included code from a future version of Elgg, or an older one, or one that has never existed, and it quite often did things in a very non-Elgg way. In contrast, when building a new plugin from scratch, its strategy appears to be to read the entire core codebase and all of the official documentation, then to build the plugin to fit, with little or no reference to any existing plugins beyond those that come with the core distribution. When things go wrong, it goes straight to the definitive source of a function in the core, not to a muddle of existing solutions, and its context window (at least in the paid versions) is now large enough for it to contain much if not all of the whole thing, or at least for retrieval-augmented generation to deal with the correct pieces. The small core that was so useful to human developers turns out to be ideal for LLMs.

The key lesson to be drawn from this is that, if the architecture is sufficiently and cleanly modular (as Elgg’s is), then it may now be more effective to recreate components from scratch than to maintain the ones you have already written. If it continues to pan out as it has so far done, I’d say this is a potential game changer. As well as making development extremely agile, it even improves the security of the system because, though any one plugin may yet have flaws despite the apparently high quality of coding, it is not going to stick around for long enough for them to be exploited, and anyone who follows this approach is not going to have the same plugins as anyone else so it’s not worth anyone’s while to develop a specific hack for it. The next upgrade is almost ready so I am only going to use this approach sparingly for now but, when the time comes for the next major upgrade, this is how I intend to do most of it. I won’t let it near core plugins or still-maintained community plugins but, for all those we inherited or created, ChatGPT or Gemini will provide me with the spec. I’ll then run each spec through Claude, getting it to produce the complete plugin including unit tests. It will still take time, and I don’t expect it to work as well all the time, but much of that time will be spent by Claude, not me. At one fell swoop, this almost eliminates the technological debt.illustrating spec extraction and plugin creation using LLMS, in the style of Alice in Wonderland

This principle is not necessarily limited to elegantly engineered systems like Elgg. A night or two ago I went through my regular quandary about how to schedule ad hoc meetings for one of my courses. In the past I’ve used wikis, discussion forums, various free (but not quite right) poll-based schedulers like Doodle, and more. None were great, and the ones that worked best raised potential privacy concerns that I was not willing to grapple with. The length of time it takes to get a plugin to production made a Landing plugin a non-starter.  Then it struck me that my own personal website would be more private and controllable than any of those, and hosted on Canadian soil (unlike any of the rest) so I went in search of a plugin. WordPress is very inelegant, sprawling software, and plugin development is positively painful compared with Elgg, but the vast numbers of WP developers mean that, among the many tens of thousands of plugins, no matter what the task, at least one will do the job I want, or close enough for me to tweak so that it does. At least that had always been the case until now. To my great surprise, this time, there were none.  Something like the functionality does exist in a few polling and scheduling plugins, but with very complex configurations and a lot of unwanted fluff around them, not to mention the need to get premium non-open versions to do what I want. I just wanted a small subset of Doodle’s functionality, that would not store any private data, nor cater for needs I don’t have. So I asked Claude to make it, knowing that it would already be quite skilled in WP development because of the vast number of examples to learn from. It took about 4 attempts to get exactly what I wanted. Overall the whole process took about an hour, including writing the spec, Claude’s thinking time, and the time it took to upload, configure and test it. It works really nicely. I actually spent more time earlier looking for the right software than it took to make it from scratch. I have some experience writing specs, but even a beginner could do this with a bit of help from the AI. 

Ochlotecture management

I might ask an LLM to build the Spec Manager – essentially a means of managing the application architecture, not unlike a traditional source code management system –  that Ben writes about, to simplify and automate some of the workflow, not that it is particularly onerous. However, the time it would save would allow me more time to work on another idea sparked by Ben’s post.

Doing what we already do, better, cheaper, and faster, is quite cool, but the most significant benefits of any new technology come from being able to do things that were previously impossible: it is the adjacent possibles they create and we exploit that drive progress. As Ben says, some of the biggest things that matter in a social system are the what, why, and for whom, and that’s very true, but there’s more. I’ve written previously of the ochlotecture of a social system, by which I mean all the human as well as non-human elements of it that make it do what it does, including the whats, whys, and for-whoms: the written and unwritten rules, the structural topography (networks, group hierarchies, set clusters, etc) , the norms around posting, the pace, the interests of the community, the cross-cutting networks,  the ethical principles, the aesthetic preferences, the physical spaces they inhabit, and so on, that combine to give shape to a community. In essence it is much like a user model, only for crowds.

It strikes me that it should be possible to build an Ochlotecture Manager in much the same way as we might build the Spec Manager. Exactly how this would work is to be determined but I envisage it including an assortment of personas and scenarios as well as rules, demographics, contextual information, and network/group/set structures. The idea is to try to get away from the traditional functional definitions and instead describe relationships, policies, norms, and so on in a way that, with a bit of work, LLMs will be able to interpret and thus to better fit the site to its community. This would be particularly useful in a learning context, where a lot of software is built or chosen to perform a function, with far too little regard to how it achieves it. It almost never fits exactly what a teacher would like to do, because it ain’t what you do, it’s the way that you do it, that’s what gets results, and you can’t do the same thing the same way for everyone and expect it to be a perfect fit for all of them. The app will most like generate some YAML or JSON and instructions about how to deal with it. But this doesn’t end with the design.

A much under-utilized adjacent possible of LLMs lies in their potential to connect people and sustain communities. From summarizing conversations or connecting individuals with complementary needs, to nudging conversations or analyzing sentiment, there are many ways LLMs can catalyze interaction, not as a participant but an enabler. Having a clearly specified ochlotecture would make this much easier to achieve. It might not be a bad ochlotectural analyst, too, suggesting and implementing improvements in the design based on not user models but crowd models.

Having done that, it opens up the potential to make this a truly adaptive system, not just changing data and parameters but also the underlying code itself as a community evolves. Imagine, to give a simple example, a discussion forum in which the system observes people regularly responding with “this is great” or similar replies. The system could identify a need for some kind of rating system and, rather than simply implementing a “like” button (which is far from ideal in all situations) it could consult its ochlotectural model to identify what would work best. This could range from a simple change of wording – “recommend”, perhaps, or “rate”, depending on the community – to a multi-dimensional ranking system, that might work better if more precise feedback is needed (e.g. in peer review). More complex changes are possible: it might build a system to (say) manage events, or create photo albums, or implement breakout spaces, or shift between threaded and non-threaded discussions. Perhaps it could shuffle menus to better fit community needs, or fix accessibility issues, or identify more relevant posts. I’d be extremely nervous of taking humans out of that loop – that way disaster lies – but perhaps the humans would not need to be developers as long as a developer had crafted the spec and the ochlotecture carefully enough in the first place. Community members themselves could suggest things, the LLM could present them to the group (perhaps creating a poll system for voting, or some other dispute-settling mechanism to do so), and it could use the ochlotectural and architectural models to help guide the actual development. It might even do a bit of proactive A/B testing, making an evolutionary (survival of the fittest) approach possible. Ultimately, it might even evolve how it evolves, developing its own strategies for engaging the community and responding to changing needs. It would be no more annoying that it constantly changes than it is for existing cloud services, with the added benefit that, if the community doesn’t like it, they can fix it. 

In my perfect world all of this would rely on a local, open LLM but, though some are now extremely good for coding assistance, none currently have the large context windows and sophisticated tuning of the bigger commercial models. This will probably change. A hybrid approach might work in the interim, where the local model deals with everything apart from the coding itself, and the commercial model does the rest, but I’ve not thought through the economics of that.

Bricoleering: a new paradigm?

We are at the bottom of a learning curve with genAI right now. Most of us are simply replacing things we already do with LLMs, and that is highly problematic for reasons I and many others have written about extensively (see at least half my posts at https://jondron.ca/ai). In a world with machines that can creatively replicate almost any human cognitive skill, often at an expert level, there are high risks that our descendants are going to lose at least a portion of their own capacity to do so unaided. That’s not necessarily a bad thing, in itself. Few of us can still recite every word of a novel from memory, or create a bow and arrow, or perform complex mental arithmetic, because we don’t need to. Coarse grained cognition – thinking in bigger chunks, using the products of our own and other humans’ thought – is what has let us build pyramids, spaceships, welfare systems and virtually every invention ever, including this sentence. It’s our collective, extended cognition that makes it possible to constantly create more. That’s more of a problem when creativity itself is at stake, however, because we risk delegating too much of it to the machine, and allowing our own capabilities to atrophy. Already, I quite often tell the machine what I’m trying to do then ask it for a list of ideas and select one, rather than trying to think of one myself: that’s how the picture at the top of this post was conceived. At scale, this is not a great idea.  If the world is going to be a better and not a worse place, we need to learn to be creative with the creative outputs of the cognitive Santa Claus machines, not simply to specify and use them. I think that the idea I suggest above is one of the ways this can happen. A plugin-based (or other component-oriented) approach enables us to do bricolage with the pieces, assembling, disassembling, and reassembling them in new and creative ways that neither we nor genAIs could do alone. It is not Levi Strauss’s bricolage of the “savage mind”, however, nor is it engineering. I think it is a new paradigm in which we do not simply assemble pieces we happen to have lying around but actively help to shape them so that they will fit. Our roles are closer to those of architects like Frank Gehry, who famously couldn’t use the machines that were essential to creating his iconic machine-made designs, instead relying on hand-drawn sketches to communicate his idea to those who could. I don’t know what to call this: “bricoleering” perhaps, or “adaptafacture”?