Back to the schedule
Previous: GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer
Next: Emacs as Design Pattern Learning

Emacs and Montessori Philosophy


Q&A: live
Duration: 10:27

This talk was also streamed at an alternate time for APAC hours:

If you have questions and the speaker has not indicated public contact information on this page, please feel free to e-mail us at and we'll forward your question to the speaker.


00:04 Introduction 00:20 Respect 00:35 The Prepared Environment 01:19 Human tendencies 01:56 Orientation 03:30 Order 04:26 Exploration 05:12 Communication 05:46 Activity 06:21 Manipulation 06:48 Work (or Purposeful Activity) 07:09 Repetition 07:38 Exactness 08:16 Abstraction 09:02 Perfection



As a former Montessori guide and now parent, I often think about the relationship of this particular educational philosophy and how it manifests in my work with software, Emacs in particular. This talk introduces the concept of Emacs as an educational environment and how it expresses elements of Montessori psychology regarding "Human Tendencies". Human tendencies are innate drives present in everybody that allow us to explore and make sense of our world.


  • Q1:  Would you say that the Montessori philosophy follows a "verb" based methodology, where an abstract action is performed on an item, without locking the action to what the item can support, like an Object-oriented language would do? 
    • e.g.  throw(rock) instead of rock.throw(), i.e. a function in a global namespace, instead of a function belonging to an object?
    • A: i'd like to think about this some more, but honestly i think its a bit of both? there's certainly some things I can think of that are more like rock.throw()... Here are the things you can do with these materials, and that is it. On the other hand, I've certainly seen inventive uses of educational materials that follow more of a throw(pencil) type of thing.
    • The philosophy is highly observation based, so I'm thinking about the difference of something like Child::new.learn() vs learn(some-child).  In this case I do feel like the "verb" based methodology is more appropriate. We need to stop and observe a child, to notice what is driving them, what they're responding to, and where they are in their abilities. Depending on our observations, we may offer different kinds of input. Its certainly much less like "oh i have another Child object and I need to have them do x, y, z" in order to get to point B.
    • I hope this somewhat answers the question. I'll keep pondering :)
      • Thank you, I guess some children favour one method over another, but it's not as black and white as I initially thought. Thanks!
  • Q2: How old do you think childen need to be to start exploring with Emacs?
    • A: Children 0-6 are in a phase called the "absorbent mind". It is this miraculous superpower that children have to absorb everything around them. The ability to learn language is probably the most obvious example. So, if children can interact with Emacs, they can start exploring it. Of course, as a text editor, basic literacy is pretty important.  I personally have not tried teaching young children Emacs, but I believe with the right kinds of interfaces, it could be possible.
  • Q3: How to let my kids exploring Emacs?(No need to answer this. It's simillar to Q2)
    • A: Great question! Much of the early childhood Montessori work is highly tactile. Abstract concepts are embodied in physical objects. One example is the "binomial cube" which is a set of blocks that demonstrates (a + b)3. Children know nothing about the math behind it, but by interacting with it as a tactile puzzle, something about the math concept behind it, the abstraction, is available to the child and their absorbent mind.
    • That is to say... perhaps there are ways to bring Emacs into the physical world for the very young. I've been fantasizing about some kind of "physical lisp" where young children can interact with a sort of physical programming language. I don't have a lot of concrete ideas on how to get young children exploring Emacs, but I  do believe it is possible.
    • For older, literate children, I believe simple things that give instant feedback are a great way to encourage interaction. Being able to do something like (set-cursor-color "orange") and see it work at your finger tips is amazing. I believe that a well prepared set up where M-x is easy to access and you get some kind of completion to show you what you can do would go far.  Even ielm could be useful. Children are not nearly as afraid of a command prompt as some grown ups are. They come to it with much less preconceptions on how it should be used.
    • I would like to think more about this, as giving children the opportunity to experience Emacs feels critical these days, when they may be forced into using much non-free software just do do their school work.
  • Q4: How big of an impact does the environment have on the children that you teach?
    • A: the environment is huge. giving children a prepared space where everything is accessible to them, down at their level, the correct size, etc, it can lead to amazing things. When I worked with 1.5-3 year olds, I remember telling people it was like managing a restaurant where my employees were toddlers. I could work with a group of children to get food served into properly sized dishes, beverages poured, ceramic plates and glass cups set on the tables, napkins folded, and so on all finished in time to get everyone down for lunch before we had major melt downs.  This would not be possible in a normal grown-up environment. 
    • I'm not sure i said this in the talk, but the environment is an active process on all of us, not just children. the 0-6 year olds (and beyond) are absorbing so much from the environment that we simply filter out. i think this is important to consider for new emacs users. I tend to filter out a lot of things that a new user may pick up and stumble over.
    • To re-emphasize: the elements of education are The Learner, The Guide(s), and The Environment. Montessori focuses on the Prepared Environment, in order that it can be the most effective for the child's ability to become an independent, self-realized person.
  • Q5:Do you have a good reference for the Montessori principles (actually any nice book ref)?
    • A: I'd like to find a more modern resource, I'm sure they are out there. Much of my experience was direct hands-on classroom time.  I've read much of "The Absorbent Mind" which really lays out a lot of the observations Maria Montessori made of the young child, 0-6 years old.  The other book I've studied is "The Secret of Childhood".  I would like to stress though, a lot of the knowledge in Montessori is very very similar to traditional knowledge. When I was learning more about Lakota culture and parenting, I was finding that Montessori was expressing much of the same thing. Any resource (book, human, whatever) that respects children as whole human beings is worth paying attention to. Another author I've enjoyed is Aletha Solter, who writes about parenting.
  • Q6:How do you think Emacs could improve re: Montessori Principles (if at all)?
    • A: My main takeaway is that we should acknowledge the three elements of learning: The Learner (user), The Guides (contributors), and The (Prepared) Environment. Each user coming to Emacs is an individual with their own mix of internal drives (human tendencies) that compel them to learn and experience. Everyone that is a contributor to Emacs (whether in code, on the web, or in chat) acts as a Guide in the environment (whether they know it or not).  The Prepared Environment could be considered how the application is set up for users.  I think there is room for a friendlier Prepared Environment, though I am always amazed at what I can discover where the self-documenting feature helps me out.  Interactive tutorials teaching one how to learn how to learn Emacs would be tricky, but I think some interesting work could happen there!
    • Another principle is "control of error", meaning, when you fail at something or make a mistake, it should be obvious, and hopefully the correction of the error should be obvious as well. This is hard to do in a huge software environment like Emacs, but I think there could be some work done in this regard. I'm reminded of Racket's beginning student languages, which make error messages more human focused and less computery is a good example.
    • I think the community could also improve as Guides. I have certainly had many pleasant interactions with Emacs users, but sometimes you run into things like "RTFM" or "read the source". While I don't disagree, it can come off as elitist sometimes. Many new users are afraid to read source, or have found a manual but still don't understand. We certainly want to encourage independence, so offering techniques like "have you tried M-x describe-function?"  is better than just answering outright. Sometimes we need to take a moment and understand the Learner we're working with. Maybe they aren't ready for "read the source". I could keep writing, but I think I need to wrap up. Anyone should feel free to email me to talk more! perhaps i'll try doing some writing about it. 
  • Q8: What was the presentation mode you used?


  • having studied in a school which founded by following Montessori Philosophy, I can relate <3
  • Love the emphasis on creativity!
  • Such a cool talk
  • Great perspective in that talk.
  • the reference to Montessori made me think of Alan Kay's talks about Frenet and Papert.
    • i was thinking the exact same thing regarding Alan Kay and his talks about education, and of his philosophies behind Smalltalk (the programming language).
    • and Smalltalk as a platform shares a lot with Emacs, both are a world where a user lives and develops
    • garjola: yeah...the whole thing about discovery, figuring things out for yourself, having an epiphany.

Links and other notes:


  • 5-10 minutes: (brief description/outline) Quick overview of a Montessori classroom environment:

    • the adults or guides primarily observe and present material
    • the children are free to explore materials as they choose (within limits)
    • the environment itself is prepared specifically to foster engagement

    Enumerate the "Human Tendencies":

    • Abstraction
    • Activity
    • Communication
    • Exactness
    • Exploration
    • Manipulation (of the environment)
    • Order
    • Orientation
    • Repetition
    • Self-Perfection
    • Work (also described as "purposeful activity")

    How does Emacs express these things?

    • in the short version, pose the question, and perhaps give one example.
    • Emacs is an environment that provides facilities for individuals to find their way to proficiency through their Human Tendencies.
    • We are all both learners and guides, Emacs is our classroom


[00:00:04.960] Hello everyone. My name is Grant Shangreaux, and I'm happy to be back here at EmacsConf. So before I was a programmer professionally, I was a Montessori guide with young children, and now I'm a parent of a child in a Montessori classroom.

[00:00:20.320] I was thinking Emacs and Montessori philosophy are both fundamentally about respect. Respect children, for the child is the parent to the adult. And we should respect users. Maybe the user is the parent to the hacker. That was certainly my case.

[00:00:35.840] So this talk is about the similarities between the Emacs environment and the Montessori classroom, which is called a prepared environment, meaning that everything in the environment has been prepared for the child to come and interact with in a meaningful way. The child will be driven by natural human tendencies to interact with their environment and to construct and refine their understanding of the world and the things in it. What I hope you come away from this talk with is just a new perspective on Emacs and software, and how users interact in a prepared environment like Emacs following their human tendencies to gain understanding and reach toward perfection.

[00:01:19.119] Okay. So the human tendencies are innate drives present in everybody. They're what enable us to explore and make sense of our world. We use these human tendencies to construct and refine the world itself. You know, if you're an Emacs user, I hope that's ringing some bells for you right away, because what we do when we interact with Emacs as individuals is construct and refine our world in Emacs. So I'm going to go through the human tendencies one by one and bring up things that I have observed or noticed in Emacs. I'm sure there's plenty more. Feel free to share it in chat.

[00:01:56.560] So number one is orientation. Human beings want to know their relationship to the environment around them. With children, when they come into a new environment, they want to look at it, touch everything around them. They want to know where they fit in, things like that. In Emacs, the easiest thing to think of is the initial new Emacs buffer. Right away, that is giving you some guideposts to orient yourself. If you've used any of the other Emacs starter packages, different packages take different approaches to this. I think if you're trying to get people to use Emacs for some reason, thinking about how individuals might orient themselves to this new software world is important. I think that there are friendly ways to welcome people into the environment and to make it easier for people to orient themselves within Emacs. Of course we've also got the Info manuals, and one of my favorite examples is the which-key package, which, when you press a key, it'll pop up with all of the following key bindings that are available. That's a really important way for me to explore, which is another human tendency, or to orient myself; to think about when I press this key, now I've got these possibilities. You see that all over in Emacs with hydras or the Magit transient buffers. There's all sorts of ways that Emacs is trying to help us orient ourselves.

[00:03:30.720] The second tendency is order, which I probably should have talked about first, but here I am. I myself am not particularly attuned to order, but when I was in the Montessori classroom, I found that it wasn't necessarily myself imposing the order, it was... The environment itself has a certain order to it, and by creating an environment where everything has its place, and everything has its time, and you have a way of doing things, it makes it easier for the child to develop that internal sense of order and succeed at imposing order upon their work, which... We do that as programmers. If we're contributing to Emacs, we try to do so in an orderly way, use prefixes for namespacing, since we don't have that ability in Emacs Lisp, and by sharing well-ordered self-documenting programs with our community.

[00:04:26.000] Number three is exploration. I think exploration is what drew me into Emacs, personally. In the beginning, it was just this wondrous software environment that offered so many opportunities. I was curious. Like, you've got your scratch buffer. You can explore in there with expressions. You can start up IELM. You can explore your file system with Dired. You can explore different packages with list-packages. There's so many ways you can explore in Emacs. For me, that was very delightful. It really resonated with my bias of exploration and human tendencies. Places to explore in Emacs are wonderful, and eventually you get down into the source code, and it's great.

[00:05:12.080] And then we've got communication. I think communication kind of speaks for itself as well. Emacs is software. Software is a form of communication. We're all driven to communicate. That's why we're here at this conference. Within Emacs, you've got lots of ways to communicate. You've got IRC clients, mail, you've got news readers. You could use Org. I even started working on a magazine in Org that I was going to distribute via live Debian CDs back in the day. So I think Emacs for communication is pretty clear.

[00:05:46.160] Activity. So Activities is just a natural thing when you're... You see it in children. Right? Children always find something to do to keep busy, whether they're pretending, or running around, or moving. You don't have to have a goal or end-product in mind. People are just active. You do things. I find that in Emacs, all the time, when I don't know what to work on, sometimes I just go into Emacs and hack around and, like, change things in my config. I'm sure we've all been there. So Emacs encourages and enables that kind of activity as well.

[00:06:21.199] Manipulation is the next one. So Lisp. Anyone? The fact that Emacs is this live Lisp process that's running, that you can manipulate at your fingertips... You couldn't ask for something better. I think the malleability of Emacs is why people love it. Clearly, the environment of Emacs was prepared with manipulation in mind from the very start. We'll go through these next ones pretty quickly.

[00:06:48.319] We've got work or purposeful activity. Emacs would not exist without this human tendency. it's been worked on by free software volunteers for 40 years, and this is the kind of self-motivated work that inspired me to be a hacker.

[00:07:09.199] Repetition is another human tendency. I think that one kind of speaks for itself. It's this tendency that gave me Emacs pinky after learning all of those key bindings, and then that same tendency drove me to learn another modal key mapping to deal with that. I've repeated myself, starting over new Emacs configs several times. I could give another example, but I'll just be repeating myself at this point.

[00:07:38.960] And then exactness. So we have a tendency, a human tendency toward exactness. That's not one that's very strong for me. I'm not a super exacting person. But I think you can see that in Emacs, like certain parts of it have been refined down to exactness. I know when I'm working, sometimes it's just the theme that I choose or making sure the mode line is exactly the way I want it... You know, getting that environment to feel conducive to thought and work is important to me.

[00:08:16.319] And then we have abstraction, which... That one goes pretty deep, but I think you can see how abstraction works in Emacs. A buffer is an abstraction. One of the great things about Emacs and about Montessori philosophy is that these abstractions might not be something you need to think about right away, but they're there, right, like the fact that a buffer abstracts over working with text. Once that becomes clear to you, once you have a reason to manipulate it, having the abstraction of the buffer there to work with makes a huge difference. And then of course, we can create our own abstractions: transients, pop-up buffers, hydras... I'm sure there's plenty of examples in chat that I can't come up with.

[00:09:02.000] And finally, perfection. All of the human tendencies culminate in this one. Perfection doesn't mean like you just have to make this perfect shining idealistic thing. It's about perfecting what we do. I think everybody who's worked with Emacs for a long time, you perfect your configuration. Sometimes you tear it down and start over. If you're working on a package, you perfect that, and it's an ongoing process. An example I can think of are like raxod502's packages. straight.el is an attempt at perfecting the package management system in Emacs, and he's taken a stab at several other common things, like incremental selection and so on. These aren't necessarily finished problems. There's room for perfection, and we have a human tendency to pursue that. I hope this talk has gotten you thinking about how Emacs and the Montessori classroom are similar--they're both prepared environments that call upon our human tendencies to construct and refine our world-- and how Emacs respects us as users in the hopes that we will grow up into creative hackers. Thank you for listening. I'm happy to answer any questions (captions by sachac)

Back to the schedule
Previous: GNU's Not UNIX: Why Emacs Demonstrates The UNIX Philosophy Isn't Always The Only Answer
Next: Emacs as Design Pattern Learning