unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* Taming some chaos
@ 2015-10-14 11:47 John Yates
  2015-10-16 15:36 ` Dmitry Gutov
  2015-10-16 23:20 ` John Wiegley
  0 siblings, 2 replies; 5+ messages in thread
From: John Yates @ 2015-10-14 11:47 UTC (permalink / raw)
  To: Emacs developers

[-- Attachment #1: Type: text/plain, Size: 5122 bytes --]

On Sat, Oct 10, 2015 at 2:31 PM, John Wiegley <johnw@newartisans.com> wrote:

> We should define what we want from a "more IDE" Emacs. For example, I do
> not
> want window-layout functionality. That's a presentation aspect of IDEs
> that's
> entirely separate from what I want from them.
>
...

> To reiterate: I think Emacs becomes more of an IDE when it provides the
> backbone of an IDE, and not when it looks like one. We have some pieces of
> that backbone already, which have avoided fragmentation in those areas,
> but we
> need more. A standardized way to do tooltips, popups, visual completion
> selection (or at least the structure), REPLs that interact with buffer
> contents, etc., would give us a foundation to move to the next step.


Apart from any IDE functionality there are general weaknesses in Emacs'
current collection of packages that I think represents a significant
barrier to
bringing in new recruits, both users and developers.  I want to argue that
most
packages dabble in too many areas and are coded in too imperative a manner.
Such shortcoming can be understood in light of the era and technological
setting in which many Emacs conventions and paradigms were first  developed.
But that does not alter the fact that the state of computing / UX /
what-have-you
has advanced significantly.

From a user's POV too many Emacs packages violate the Unix paradigm
of simple composable tools that perform a single task well.  Instead of
being
supported by a framework or an environment in which a user registers global
policies and preferences and wherein an executing package requests services
in terms of high-level abstractions too many Emacs packages implement
large swashes of concrete, detailed UI logic.  Here are two examples:

Window management

Too many packages explicitly choreograph how windows are managed,
where and when they should be split, where buffers should be displayed
and whether or not any previous window configuration should be restored.
Such logic is articulated in terms of detailed manipulation of a simplistic
 "current-window / other-window" model no matter how poorly it maps to
the user's actual configuration.  In essence such packages have taken on
managing the presentation layer even when that is not their main focus.

I have been developing a small package to maintain a persistent horizontal
window (PHW) akin to ECB's persistent shell window.  My default layout on
a 30" 2560x1600 screen now includes a shallow full width PHW plus two,
three or four additional, balanced vertical "user" or "edit" windows.  I am
struck by how many packages behave poorly in this setting.  When I am
lucky a package I want to use provides sufficient config settings and hooks
that I can achieve satisfactory behavior in my less typical environment.
When I am unlucky I have to add ad-hoc logic into my window manager
to accommodate a number of packages.  Predictably the more window
manipulation a package performs the more likely I am to have to resort to
such ad-hoc solutions.

It does not have to be that way.  In the X world there are any number of
window manages (both tiling and overlapping).  The overwhelming majority
of applications run correctly irrespective of the user's choice of Wm.  In
fact
users have a sufficient expectation of correct inter-operation that when it
breaks they do not accept that breakage as "just the way things are", as
we might do in the Emacs world.  Instead it is viewed as an outright bug,
be it in the WM or in the application (most likely its toolkit or
framework).

Fonts and colors schemes

The "angry salad" meme is only a way of brushing off a truly awful aspect
of adopting a new Emacs package.  Here again we suffer from a lack of
abstractions.  In the realm of text markup technologies we all recognize the
merits of declarative ("this is a first level heading", "this is an element
of an
numbered list", "emphasize this text") over imperative (render this text in
a specific font at a particular point size and weight, prefix this paragraph
with '3.' and indent it by 1/2", use italics).  Surely given Emacs' support
for
inheritance within the faces framework we should be able to introduce a
vocabulary of basic concept faces from which packages then would be
encouraged to inherit.

That said I am not so naive as to think that a finite set of base faces
mapped to semantic concepts will cover the needs of the rich packages
we have.  Ediff has nearly 20 faces and the current version of magit has
over 90.  Trying to wrestle that many faces into a coherent color scheme
and trying to achieve any degree of commonality across packages is
excruciating.  I have to believe there are members of our community who
are familiar with color palette UX strategies and technologies (e.g. iPhone
or Android Material style guidelines).  Hopefully someone will come forward
and propose a model.  In my vision an Emacs user would choose a palette
(likely along with a mapping of palette items to visual roles).  Then an
Emacs
provided service could generate faces on demand based on application
requested attributes / properties.

/john

[-- Attachment #2: Type: text/html, Size: 6594 bytes --]

^ permalink raw reply	[flat|nested] 5+ messages in thread

end of thread, other threads:[~2015-10-18  5:30 UTC | newest]

Thread overview: 5+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2015-10-14 11:47 Taming some chaos John Yates
2015-10-16 15:36 ` Dmitry Gutov
2015-10-16 23:20 ` John Wiegley
2015-10-17 15:16   ` John Yates
2015-10-18  5:30     ` John Wiegley

Code repositories for project(s) associated with this public inbox

	https://git.savannah.gnu.org/cgit/emacs.git

This is a public inbox, see mirroring instructions
for how to clone and mirror all data and code used for this inbox;
as well as URLs for read-only IMAP folder(s) and NNTP newsgroup(s).