Back to the schedule
Previous: Moldable Emacs, a step towards sustainable software
Next: Emacs Lisp native compiler, current status and future developments

Extending the "model" of Emacs to other applications

Laszlo Krajnikovszkij

Q&A: after the conference
Duration: 9:49

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

Description

Emacs is a great operating environment in a sense that it provides consistency across different tools and applications within the Emacs ecosystem, as well as external apps that can be integrated into it. It is also the most truly malleable environment, each element of which can be adjusted or extended, therefore providing the user with more power and freedom in personal computing. Emacs definitely can be considered one of greatest software products in existence.

As a non-programmer, having had the chance to stumble upon Emacs a couple of years ago, the only regret to have is that it didn't happen earlier. The definite killer feature of Emacs - Org-mode, is what draws many of the less technical folks to join the party and gradually start to use Emacs for writing documents, whether personal or work related, manage tasks, emails and potentially everything else. The learning curve and difference in approach, however, leaves some potential users too scared of the arcane interface even with all it's quirks and features because it requires at least some technical skills to understand and use properly, and does not have an easy way to connect with external tools that most people are forced to use for work.

This talk proposes some ideas about how the model of Emacs, it's focus on consistency, extensibility, as well as it's powerful interaction model can be carried over to make modern interfaces, whether desktop or web applications, that would be designed with a goal of reflecting the spirit of Emacs in terms of the aforementioned features it possesses, and therefore enhance the capabilities of the Emacs, while at the same time utilizing it as a backend for text-processing and editing to a large extent. It would be really great to have a personal web-interface for using modern task management tools, chats, emails and such, but from a UI defined by the user. The goal is to use it on a desktop or mobile, locally or self-hosted on a server, with support for touch and gesture-based workflows, while preserving the Emacs philosophy and allowing to seamlessly switch between Emacs and its web extension

The proposed solution is to integrate more of the modern tools with Emacs, utilize Org-mode as a way to define application-specific parameters for these tools through Org properties, and then utilize these parameters for making a modern local frontend that would enhance Emacs UI while allowing to use external tools in a more personal and freedom respecting way (making the originals obsolete over time). The talk serves the purpose of inviting community members to a discussion about how Emacs can become more modern, more approachable by people who don't possess the neccessarry technical skills to adjust it themselves, but are keen to learn it, and potentially how to attract more users to greater productivity, computer literacy and the ideas of free software.

Discussion

  • Q1: What is the URL of your web page? I guess the URL on your slide is currently not available (see links below).
    • A: The URL written is correct, but unfortunately the website is down due to some misconfiguration and will be back soon. You can contact me at laszlo.lk@protonmail.com until it is resolved
  • Q2: It is important to note that for EAF to extend to the web apps you mentioned (Asana, Jira) in a deeper way than just displaying the web app using EAF Browser, the APIs of these web apps need to be exposed too.
    • A:Exactly, otherwise only a one way update would be possible. As long as they have integration with other external tools, there must be a closed API documentation for making it work.

Links:

Outline

  • 5-10 minutes
    • Introduction
    • Issues with most modern tools for work
    • Issues with Emacs as a tool for work
    • In search for a hybrid approach
    • User controlled web-apps
    • Opinions encouraged
    • Contacts

Transcript

Hello, everyone. My name is Laszlo Krajnikovszkij, and today I would like to share some ideas about extending the model of Emacs to other applications. Brief introduction of myself: I am from Budapest, Hungary; and I have a background in Financial Economics, but by occupation I run a software development company where I mostly do product management. I try to do most of my work from Emacs. I've been using it for the past two or three years as a computer science hobby and this fascinating piece of software taught me a lot of different concepts about software architecture and programming languages, and also raised a lot of philosophical questions about human-computer interaction. I've been mostly using it for organizing my personal information, writing notes and tracking my agenda, but occasionally, I've also used it for reading and writing code and for also reading news, email, and browsing the web. What do I mean by the 'model' of Emacs? For me, the 'model' of Emacs is about the interaction model. And it's not... Emacs is just a tool for interacting with the computer. It's sort of a universal interface that allows for consistency across different apps, because everything is brought down to an Emacs buffer, which is a text-oriented interface, but that can have consistent keybinding scheme, they have consistent color scheme, and consistent workflow in general. Also, Emacs has a lot of functionality and utilizes mnemonic key bindings for calling functions, which is much more powerful than navigating contextual menus with a pointer, because the functions that are repeated the most are then ingrained in the muscle memory, therefore reducing the lag between the thought that is occurring in your mind, and its reflection on your computer screen. And also, Emacs provides a huge number of packages that can all be inspected and modified, and extended, and recombined, and just provides the best-possible malleable system experience that can potentially lead to almost any desired setup for the end-user. So, Emacs is great, but I need to use a lot of different other tools to collaborate with my coworkers, with my clients and vendors. On a normal day, I would need to be switching between five to six different web applications and chat applications. They all have the same flaws. They all lack customizability, because it was never intended by the original developers of the app that the end user can tinker with the product they're creating. But also, those apps are cloud-based, and usually not very good for privacy, and this also creates limitations for offline-based workflows, or for in general not relying on the internet connection to use something. All these applications, they create a situation when there's a lot of context-switching between different apps, and this context-switching comes from different color schemes, different workflows in general for different apps. So, there is always this little frame of time where you need to orient yourself in this other application. Of course, over time, it gets more automated, but still, this context switching is very bad for productivity. These apps don't support very well the keyboard-driven workflows, because the default set of keybindings is always limited, and you always need to resort to mouse-driven workflows. But Emacs has some issues as a tool for work as well. First of all, it lacks integration with all these tools, so I constantly need to be switching between Emacs and these applications, or basically, my web browser. Emacs is very good for text input and for editing text, but it's not always perfect for reading information from an Emacs buffer, because it doesn't render images and HTML properly. Also, Emacs lacks performance under heavy load, so when you try to run too many things in parallel, the single-threaded nature of Emacs just makes it hang. For this reason, I wouldn't rely on Emacs to take care of all my system processes. And of course, it has some legacy UI limitations being a software that was written 40 years ago. This results in a very limited usability on mobile and other touch devices. I've been thinking about a hybrid approach that you could still use Emacs as a core of your life, and then extend it with adjacent web applications where Emacs can be used as a text processing backend and use Org mode files as a universal format for converting textual data, and then If emacs can be connected with those applications that I mentioned a couple of slides before through their API, and you can have a two-way communication between them, and just export in JSON, let's say, and then convert to Org mode, and then use the Org mode for these local web apps. Then you can use Emacs for editing, and Org mode, but then you can use this adjacent web application for viewing information, making small edits, and in general, possibly have an enhanced user-defined UI that is directly connected to Emacs. Emacs Application Framework is a project that tries to achieve a common goal, but it tries to achieve that through displaying everything in the Emacs buffer, whereas I'm thinking if it can be displayed in any web browser, but utilize Emacs Application Framework API as a bridge between Elisp and Python and Javascript, so you can use the modern front-end frameworks to create those web interfaces easier and connect them with Emacs functionality. These user-controlled web apps would basically result in the user connecting to this external cloud-based tool, let's say Asana, but then process everything through Org mode and then display in an Org mode file or display in this enhanced way through the adjacent local web app, a front-end for which could be written in any .js framework for front-end development. I encourage everyone in the community who is interested in similar questions to share their opinion about the potential risks and drawbacks, about any other ways to achieve a similar goal, if anyone else is doing this already that i might not know about, and in general, just share ideas about what else can be done to integrate Emacs with more stuff and how Emacs can become more approachable by non-technical users because I would love to see more people using Emacs, to be honest. Yeah. Thank you very much for listening to this talk. I will be taking questions and feedback in the pad after the conference. You can reach me through this email laszlo@laszlo.is . I'll be posting some more detailed articles and description of this idea that I was trying to present today. captions by Laszlo

Back to the schedule
Previous: Moldable Emacs, a step towards sustainable software
Next: Emacs Lisp native compiler, current status and future developments