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]