unofficial mirror of emacs-devel@gnu.org 
 help / color / mirror / code / Atom feed
* redisplay system of emacs
@ 2010-01-28  0:19 alin.s
  2010-01-28  4:13 ` Eli Zaretskii
                   ` (3 more replies)
  0 siblings, 4 replies; 162+ messages in thread
From: alin.s @ 2010-01-28  0:19 UTC (permalink / raw)
  To: Emacs-devel


I was wondering if it is possible to change the system of redisplay of emacs
to a less obfuscated one.

The current system , based on redisplay internal, for me it is very
obfuscated.

It could be possible to adopt a more clear system and keep all the other
functionalism ?

Could it be possible to take off all the redisplay and create a standardized
system of redisplay, that everybody can understand quickly? Everybody can
write an add-on for Mozilla. I do not know how redisplay of Mozilla works,
but as time as new add ons appear every day, that means that the system is
very standardized and easy to learn.

What are your opinions concerning this problem?



-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27349166.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-01-28  0:19 redisplay system of emacs alin.s
@ 2010-01-28  4:13 ` Eli Zaretskii
  2010-01-28  9:07   ` Lennart Borgman
  2010-01-28  5:10 ` Ken Hori
                   ` (2 subsequent siblings)
  3 siblings, 1 reply; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-28  4:13 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

> Date: Wed, 27 Jan 2010 16:19:09 -0800 (PST)
> From: "alin.s" <alinsoar@voila.fr>
> Cc: 
> 
> 
> I was wondering if it is possible to change the system of redisplay of emacs
> to a less obfuscated one.
> 
> The current system , based on redisplay internal, for me it is very
> obfuscated.

It's true that the code is quite arcane, and in a couple of places
barely maintainable, even though it was almost completely overhauled
just 10 years ago.

The high level of the display engine is very simple and can be
explained in a few simple sentences, but the details...

> It could be possible to adopt a more clear system and keep all the other
> functionalism ?

I'm not sure.  Somebody should propose a design, and then we could
discuss it.  But designing and implementing a completely new display
engine that supports everything Emacs supports now is not an easy
task, so it will take a highly motivated and able individual to make
that happen.

> Could it be possible to take off all the redisplay and create a standardized
> system of redisplay, that everybody can understand quickly? Everybody can
> write an add-on for Mozilla. I do not know how redisplay of Mozilla works,
> but as time as new add ons appear every day, that means that the system is
> very standardized and easy to learn.

Last time I looked, Mozilla wasn't anywhere close to supporting the
features Emacs has in its display engine.




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

* Re: redisplay system of emacs
  2010-01-28  0:19 redisplay system of emacs alin.s
  2010-01-28  4:13 ` Eli Zaretskii
@ 2010-01-28  5:10 ` Ken Hori
  2010-01-28 12:10 ` Stephen J. Turnbull
  2010-02-12  8:31 ` alin.s
  3 siblings, 0 replies; 162+ messages in thread
From: Ken Hori @ 2010-01-28  5:10 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

+1 vote.

On Wed, Jan 27, 2010 at 4:19 PM, alin.s <alinsoar@voila.fr> wrote:
>
> I was wondering if it is possible to change the system of redisplay of emacs
> to a less obfuscated one.
>
> The current system , based on redisplay internal, for me it is very
> obfuscated.
>
> It could be possible to adopt a more clear system and keep all the other
> functionalism ?
>
> Could it be possible to take off all the redisplay and create a standardized
> system of redisplay, that everybody can understand quickly? Everybody can
> write an add-on for Mozilla. I do not know how redisplay of Mozilla works,
> but as time as new add ons appear every day, that means that the system is
> very standardized and easy to learn.
>
> What are your opinions concerning this problem?
>
>
>
> --
> View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27349166.html
> Sent from the Emacs - Dev mailing list archive at Nabble.com.
>
>
>
>




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

* Re: redisplay system of emacs
  2010-01-28  4:13 ` Eli Zaretskii
@ 2010-01-28  9:07   ` Lennart Borgman
  2010-01-28 11:27     ` Eli Zaretskii
  0 siblings, 1 reply; 162+ messages in thread
From: Lennart Borgman @ 2010-01-28  9:07 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: alin.s, Emacs-devel

On Thu, Jan 28, 2010 at 5:13 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>
>> Could it be possible to take off all the redisplay and create a standardized
>> system of redisplay, that everybody can understand quickly? Everybody can
>> write an add-on for Mozilla. I do not know how redisplay of Mozilla works,
>> but as time as new add ons appear every day, that means that the system is
>> very standardized and easy to learn.
>
> Last time I looked, Mozilla wasn't anywhere close to supporting the
> features Emacs has in its display engine.


What features?




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

* Re: redisplay system of emacs
  2010-01-28  9:07   ` Lennart Borgman
@ 2010-01-28 11:27     ` Eli Zaretskii
  2010-01-28 11:47       ` Lennart Borgman
  0 siblings, 1 reply; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-28 11:27 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: alinsoar, Emacs-devel

> From: Lennart Borgman <lennart.borgman@gmail.com>
> Date: Thu, 28 Jan 2010 10:07:57 +0100
> Cc: "alin.s" <alinsoar@voila.fr>, Emacs-devel@gnu.org
> 
> On Thu, Jan 28, 2010 at 5:13 AM, Eli Zaretskii <eliz@gnu.org> wrote:
> >
> >> Could it be possible to take off all the redisplay and create a standardized
> >> system of redisplay, that everybody can understand quickly? Everybody can
> >> write an add-on for Mozilla. I do not know how redisplay of Mozilla works,
> >> but as time as new add ons appear every day, that means that the system is
> >> very standardized and easy to learn.
> >
> > Last time I looked, Mozilla wasn't anywhere close to supporting the
> > features Emacs has in its display engine.
> 
> 
> What features?

The ones described in the nodes "Display Property" and "Special
Properties" in the ELisp manual, for example.




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

* Re: redisplay system of emacs
  2010-01-28 11:27     ` Eli Zaretskii
@ 2010-01-28 11:47       ` Lennart Borgman
  2010-01-28 12:43         ` Eli Zaretskii
  0 siblings, 1 reply; 162+ messages in thread
From: Lennart Borgman @ 2010-01-28 11:47 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: alinsoar, Emacs-devel

On Thu, Jan 28, 2010 at 12:27 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Lennart Borgman <lennart.borgman@gmail.com>
>> Date: Thu, 28 Jan 2010 10:07:57 +0100
>> Cc: "alin.s" <alinsoar@voila.fr>, Emacs-devel@gnu.org
>>
>> On Thu, Jan 28, 2010 at 5:13 AM, Eli Zaretskii <eliz@gnu.org> wrote:
>> >
>> >> Could it be possible to take off all the redisplay and create a standardized
>> >> system of redisplay, that everybody can understand quickly? Everybody can
>> >> write an add-on for Mozilla. I do not know how redisplay of Mozilla works,
>> >> but as time as new add ons appear every day, that means that the system is
>> >> very standardized and easy to learn.
>> >
>> > Last time I looked, Mozilla wasn't anywhere close to supporting the
>> > features Emacs has in its display engine.
>>
>>
>> What features?
>
> The ones described in the nodes "Display Property" and "Special
> Properties" in the ELisp manual, for example.


Thanks Eli, maybe I understand what you mean but I am a bit surprised.

The Mozilla display engine displays images and text with different
properties very well. And it is very flexible in its way to do that
(since CSS requires that).

I guess it does not directly has something that reminds of "special
properties", but would that be hard to add?

Another point is of course searching for the properties. But Emacs has
its own difficulties there (overlays).




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

* redisplay system of emacs
  2010-01-28  0:19 redisplay system of emacs alin.s
  2010-01-28  4:13 ` Eli Zaretskii
  2010-01-28  5:10 ` Ken Hori
@ 2010-01-28 12:10 ` Stephen J. Turnbull
  2010-01-28 13:41   ` alin.s
  2010-02-12  8:31 ` alin.s
  3 siblings, 1 reply; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-28 12:10 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

alin.s writes:

 > Could it be possible to take off all the redisplay and create a
 > standardized system of redisplay, that everybody can understand
 > quickly? Everybody can write an add-on for Mozilla.

But nobody (except a few experts) messes with redisplay.  Redisplay is
*hard*.  There are very few redisplays capable of doing what Emacs can
do.  Emacs, XEmacs.  *Maybe* Gecko (Mozilla) or Webkit (Safari).  On
the other hand, the way you write your post, I doubt it requires
changes to redisplay, but I could be wrong.  So I think you need to
explain what it is you want to do.

Note that Mozilla has a high-level language (XUL) for managing its
display (and other aspects of user interface).  Add-ons are written in
that language.  Well, so does Emacs: Emacs Lisp.

 > I do not know how redisplay of Mozilla works, but as time as new
 > add ons appear every day, that means that the system is very
 > standardized and easy to learn.

Emacs is also standardized and easy to learn.  There are just many
fewer people interested in writing Lisp libraries than there are
writing Mozilla add-ons.





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

* Re: redisplay system of emacs
  2010-01-28 11:47       ` Lennart Borgman
@ 2010-01-28 12:43         ` Eli Zaretskii
  2010-01-28 12:53           ` Lennart Borgman
  0 siblings, 1 reply; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-28 12:43 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: alinsoar, Emacs-devel

> From: Lennart Borgman <lennart.borgman@gmail.com>
> Date: Thu, 28 Jan 2010 12:47:26 +0100
> Cc: alinsoar@voila.fr, Emacs-devel@gnu.org
> 
> The Mozilla display engine displays images and text with different
> properties very well. And it is very flexible in its way to do that
> (since CSS requires that).

Even images support in Emacs (which is admittedly young and unevolved)
already supports advanced features like :pointer and :map (see the
node "Image Descriptors").  And I wasn't talking about simple text
properties that just change faces or the size of the characters, of
course.  What about properties that need to evaluate Lisp forms or
depend on Lisp-level variables?

> I guess it does not directly has something that reminds of "special
> properties", but would that be hard to add?

I have no idea.

> Another point is of course searching for the properties. But Emacs has
> its own difficulties there (overlays).

The difficulties is not with searching, the difficulties are with
maintaining many overlays.




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

* Re: redisplay system of emacs
  2010-01-28 12:43         ` Eli Zaretskii
@ 2010-01-28 12:53           ` Lennart Borgman
  2010-01-28 14:10             ` Miles Bader
  0 siblings, 1 reply; 162+ messages in thread
From: Lennart Borgman @ 2010-01-28 12:53 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: alinsoar, Emacs-devel

On Thu, Jan 28, 2010 at 1:43 PM, Eli Zaretskii <eliz@gnu.org> wrote:
>> From: Lennart Borgman <lennart.borgman@gmail.com>
>> Date: Thu, 28 Jan 2010 12:47:26 +0100
>> Cc: alinsoar@voila.fr, Emacs-devel@gnu.org
>>
>> The Mozilla display engine displays images and text with different
>> properties very well. And it is very flexible in its way to do that
>> (since CSS requires that).
>
> Even images support in Emacs (which is admittedly young and unevolved)
> already supports advanced features like :pointer and :map (see the
> node "Image Descriptors").


?? Of course Mozilla supports these kind of things too.


> And I wasn't talking about simple text
> properties that just change faces or the size of the characters, of
> course.  What about properties that need to evaluate Lisp forms or
> depend on Lisp-level variables?


Yes, I know you are talking about this. But AFAICS Mozilla has the
framework to support similar things. Otherwise it could not support
all the things needed to display certain web pages.


>> I guess it does not directly has something that reminds of "special
>> properties", but would that be hard to add?
>
> I have no idea.
>
>> Another point is of course searching for the properties. But Emacs has
>> its own difficulties there (overlays).
>
> The difficulties is not with searching, the difficulties are with
> maintaining many overlays.


I thought the problem was that it takes long time to search for the
overlays at point for example. Is that not the case?




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

* Re: redisplay system of emacs
  2010-01-28 12:10 ` Stephen J. Turnbull
@ 2010-01-28 13:41   ` alin.s
  2010-01-28 14:50     ` Stephen J. Turnbull
  0 siblings, 1 reply; 162+ messages in thread
From: alin.s @ 2010-01-28 13:41 UTC (permalink / raw)
  To: Emacs-devel


When I first started to write the tabs, I started from redisplay_internal.
Fortunatelly, I found the solution such that I did not touch that code.

But trying to read it, it was impossible for me to make a general coherence
of the code. Only in parts I could understand it.

Yes, in genral the redisplay is superior with its overlays, but many
overlays like in linum-mode make it works bad.

I did not invest much effort in trying to read it, because I am afraid that
apart a few persons who were motivated to write some code in that part,
nobody knows it.

I wanted to say that it should be adopted a system that everybody can
understand, in order for everybody interested to be able to gain a coherence
in thought about that part of emacs.





-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27356155.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-01-28 12:53           ` Lennart Borgman
@ 2010-01-28 14:10             ` Miles Bader
  2010-01-28 15:04               ` alin.s
                                 ` (2 more replies)
  0 siblings, 3 replies; 162+ messages in thread
From: Miles Bader @ 2010-01-28 14:10 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: alinsoar, Eli Zaretskii, Emacs-devel

Lennart Borgman <lennart.borgman@gmail.com> writes:
> ?? Of course Mozilla supports these kind of things too.

Note that mozilla's display engine makes some dramatically different
assumptions about what is important for the display engine to do.

Most importantly, it does the layout and display calculation for the
_entire page_ at once.  Emacs, by contrast does it on the fly for the
small amount being displayed at the moment.

Mozilla's method allows some nice things -- for instance it makes much
more complicated layout tractable -- but it really really sucks for huge
files, and in general probably isn't such a good idea if the document
tends to change a lot in real time.  Emacs' method, by contrast works
really well for those cases.

I think this difference in approach makes sense given the different
goals of the two applications, and it's not at all clear that Mozilla's
display engine would work well for Emacs too.

Of course, you could try it and see.... :|

-miles

-- 
Cat, n. A soft, indestructible automaton provided by nature to be kicked when
things go wrong in the domestic circle.




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

* Re: redisplay system of emacs
  2010-01-28 13:41   ` alin.s
@ 2010-01-28 14:50     ` Stephen J. Turnbull
  0 siblings, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-28 14:50 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

alin.s writes:

 > 
 > When I first started to write the tabs, I started from redisplay_internal.
 > Fortunatelly, I found the solution such that I did not touch that code.

It's not "fortunate", it's designed that way.  Redisplay is the lowest
level of the display code, and tightly bound to the event loop.  If
there's an X display involved, life is very difficult, because X
protocol is totally asynchronous.

But most things (like adding a tab widget) should be able to work with
higher level display features.




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

* Re: redisplay system of emacs
  2010-01-28 14:10             ` Miles Bader
@ 2010-01-28 15:04               ` alin.s
  2010-01-28 22:34               ` Lennart Borgman
  2010-01-29 10:04               ` Paul R
  2 siblings, 0 replies; 162+ messages in thread
From: alin.s @ 2010-01-28 15:04 UTC (permalink / raw)
  To: Emacs-devel



OK,

Let us keep as good Emacs' method. But let us clarify somehow in the least
details ! 




Miles Bader-2 wrote:
> 
> Lennart Borgman <lennart.borgman@gmail.com> writes:
>> ?? Of course Mozilla supports these kind of things too.
> 
> Note that mozilla's display engine makes some dramatically different
> assumptions about what is important for the display engine to do.
> 
> Most importantly, it does the layout and display calculation for the
> _entire page_ at once.  Emacs, by contrast does it on the fly for the
> small amount being displayed at the moment.
> 
> Mozilla's method allows some nice things -- for instance it makes much
> more complicated layout tractable -- but it really really sucks for huge
> files, and in general probably isn't such a good idea if the document
> tends to change a lot in real time.  Emacs' method, by contrast works
> really well for those cases.
> 
> I think this difference in approach makes sense given the different
> goals of the two applications, and it's not at all clear that Mozilla's
> display engine would work well for Emacs too.
> 
> Of course, you could try it and see.... :|
> 
> -miles
> 
> -- 
> Cat, n. A soft, indestructible automaton provided by nature to be kicked
> when
> things go wrong in the domestic circle.
> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27357399.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-01-28 14:10             ` Miles Bader
  2010-01-28 15:04               ` alin.s
@ 2010-01-28 22:34               ` Lennart Borgman
  2010-01-29 10:04               ` Paul R
  2 siblings, 0 replies; 162+ messages in thread
From: Lennart Borgman @ 2010-01-28 22:34 UTC (permalink / raw)
  To: Miles Bader; +Cc: alinsoar, Eli Zaretskii, Emacs-devel

On Thu, Jan 28, 2010 at 3:10 PM, Miles Bader <miles@gnu.org> wrote:
> Lennart Borgman <lennart.borgman@gmail.com> writes:
>> ?? Of course Mozilla supports these kind of things too.
>
> Note that mozilla's display engine makes some dramatically different
> assumptions about what is important for the display engine to do.
>
> Most importantly, it does the layout and display calculation for the
> _entire page_ at once.  Emacs, by contrast does it on the fly for the
> small amount being displayed at the moment.
>
> Mozilla's method allows some nice things -- for instance it makes much
> more complicated layout tractable --


Yes, it is necessary for web files.


> but it really really sucks for huge
> files, and in general probably isn't such a good idea if the document
> tends to change a lot in real time.  Emacs' method, by contrast works
> really well for those cases.


True. I have no idea if Mozilla allows this kind a display handling
too. Maybe it does.


> I think this difference in approach makes sense given the different
> goals of the two applications, and it's not at all clear that Mozilla's
> display engine would work well for Emacs too.
>
> Of course, you could try it and see.... :|


Some rainy day, perhaps...


> -miles
>
> --
> Cat, n. A soft, indestructible automaton provided by nature to be kicked when
> things go wrong in the domestic circle.
>




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

* Re: redisplay system of emacs
  2010-01-28 14:10             ` Miles Bader
  2010-01-28 15:04               ` alin.s
  2010-01-28 22:34               ` Lennart Borgman
@ 2010-01-29 10:04               ` Paul R
  2010-01-29 10:17                 ` David Kastrup
  2010-01-29 11:35                 ` Eli Zaretskii
  2 siblings, 2 replies; 162+ messages in thread
From: Paul R @ 2010-01-29 10:04 UTC (permalink / raw)
  To: Miles Bader; +Cc: alinsoar, Eli Zaretskii, Lennart Borgman, Emacs-devel

Hello,

> Note that mozilla's display engine makes some dramatically different
> assumptions about what is important for the display engine to do.


I found a related discussion in a previous thread, mid-2009 :

  http://lists.gnu.org/archive/html/emacs-devel/2009-07/threads.html#00344


As many emacs youngsters, I feel that emacs really uses too much
home-made code. Surprisingly, Emacs does not benefit that much from the
free software ecosystem. This is certainly connected to the fact that it
has been ahead of its time in many aspects, so it had to build its own
bricks without waiting for others to provide them. But in the meantime
some things has changed, high quality generic free software fragments
has entered the game. Entrusting them rather than home-made code would
certainly be a big job, but would instantly enlarge emacs (indirect)
contributors list.


> Most importantly, it does the layout and display calculation for the
> _entire page_ at once. Emacs, by contrast does it on the fly for the
> small amount being displayed at the moment.

> Mozilla's method allows some nice things -- for instance it makes much
> more complicated layout tractable -- but it really really sucks for
> huge files, and in general probably isn't such a good idea if the
> document tends to change a lot in real time. Emacs' method, by
> contrast works really well for those cases.

The performance of those engines has gotten surprisingly good, and is
still improving at a very fast rate. I would be interested to have some
real-case benchmarks. In the meantime I pasted the whole wikipedia
article into http://ckeditor.com/demo then edited some text in the
middle of the page. It was not blazing fast to be honnest, but still
usable on my 10 years old hardware.

-- 
  Paul




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

* Re: redisplay system of emacs
  2010-01-29 10:04               ` Paul R
@ 2010-01-29 10:17                 ` David Kastrup
  2010-01-29 10:23                   ` Lennart Borgman
                                     ` (2 more replies)
  2010-01-29 11:35                 ` Eli Zaretskii
  1 sibling, 3 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-29 10:17 UTC (permalink / raw)
  To: emacs-devel

Paul R <paul.r.ml@gmail.com> writes:

> The performance of those engines has gotten surprisingly good, and is
> still improving at a very fast rate.

It is nowhere near workable for large documents.  Not web pages,
documents.

> I would be interested to have some real-case benchmarks. In the
> meantime I pasted the whole wikipedia article into
> http://ckeditor.com/demo then edited some text in the middle of the
> page. It was not blazing fast to be honnest, but still usable on my 10
> years old hardware.

Uh, Emacs needs to work without noticeable delays and with syntax
highlighting for documents of _book_ size, easily containing thousands
of pages.  In fact, the size of the total document should not affect
editing speed.  And we are not just talking "editing" or fixed documents
here: run-off compilation/log output needs to be fast.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-29 10:17                 ` David Kastrup
@ 2010-01-29 10:23                   ` Lennart Borgman
  2010-01-29 10:30                     ` David Kastrup
  2010-01-29 11:03                     ` Miles Bader
  2010-01-29 10:48                   ` Paul R
  2010-01-29 18:19                   ` Stefan Monnier
  2 siblings, 2 replies; 162+ messages in thread
From: Lennart Borgman @ 2010-01-29 10:23 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

On Fri, Jan 29, 2010 at 11:17 AM, David Kastrup <dak@gnu.org> wrote:
>
> Uh, Emacs needs to work without noticeable delays and with syntax
> highlighting for documents of _book_ size, easily containing thousands
> of pages.


Is this necessarily related to the display engine?




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

* Re: redisplay system of emacs
  2010-01-29 10:23                   ` Lennart Borgman
@ 2010-01-29 10:30                     ` David Kastrup
  2010-01-29 13:18                       ` Lennart Borgman
  2010-01-29 11:03                     ` Miles Bader
  1 sibling, 1 reply; 162+ messages in thread
From: David Kastrup @ 2010-01-29 10:30 UTC (permalink / raw)
  To: emacs-devel

Lennart Borgman <lennart.borgman@gmail.com> writes:

> On Fri, Jan 29, 2010 at 11:17 AM, David Kastrup <dak@gnu.org> wrote:
>>
>> Uh, Emacs needs to work without noticeable delays and with syntax
>> highlighting for documents of _book_ size, easily containing thousands
>> of pages.
>
>
> Is this necessarily related to the display engine?

Since the Mozilla model renders the whole document (admittedly starting
before it is completely available), I don't see how it should be
otherwise.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-29 10:17                 ` David Kastrup
  2010-01-29 10:23                   ` Lennart Borgman
@ 2010-01-29 10:48                   ` Paul R
  2010-01-29 11:01                     ` David Kastrup
  2010-01-29 18:19                   ` Stefan Monnier
  2 siblings, 1 reply; 162+ messages in thread
From: Paul R @ 2010-01-29 10:48 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

Hi David,

> Uh, Emacs needs to work without noticeable delays and with syntax
> highlighting for documents of _book_ size, easily containing thousands
> of pages. In fact, the size of the total document should not affect
> editing speed.

Is it so common to write books in a single monolithic file ? The two
typesetting systems I use from emacs allow (and encourage) to split the
documents in many files. And emacs corresponding modes are designed for
easy navigation between them.

That said, I totally agree that this is a real concern : what happens if
someone wants to _open_ a huge document. As Lennart said, it probably
isn't the job of the display system to restrict the data to render to
a subset, but rather the job of an intermediate layer, between the
document and the rendering engine.


-- 
  Paul




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

* Re: redisplay system of emacs
  2010-01-29 10:48                   ` Paul R
@ 2010-01-29 11:01                     ` David Kastrup
  0 siblings, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-29 11:01 UTC (permalink / raw)
  To: emacs-devel

Paul R <paul.r.ml@gmail.com> writes:

> Hi David,
>
>> Uh, Emacs needs to work without noticeable delays and with syntax
>> highlighting for documents of _book_ size, easily containing
>> thousands of pages. In fact, the size of the total document should
>> not affect editing speed.
>
> Is it so common to write books in a single monolithic file ?

Yes.  Because otherwise search&replace and other stuff become
increasingly painful to do.  In particular if not everybody working with
the same documents is using Emacs.

> The two typesetting systems I use from emacs allow (and encourage) to
> split the documents in many files. And emacs corresponding modes are
> designed for easy navigation between them.

It is fine if Emacs supports more than one way of organizing your work.
It is not fine if it falls apart if you don't do it in a particular way.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-29 10:23                   ` Lennart Borgman
  2010-01-29 10:30                     ` David Kastrup
@ 2010-01-29 11:03                     ` Miles Bader
  2010-01-29 11:38                       ` Eli Zaretskii
  1 sibling, 1 reply; 162+ messages in thread
From: Miles Bader @ 2010-01-29 11:03 UTC (permalink / raw)
  To: Lennart Borgman; +Cc: David Kastrup, emacs-devel

Lennart Borgman <lennart.borgman@gmail.com> writes:
>> Uh, Emacs needs to work without noticeable delays and with syntax
>> highlighting for documents of _book_ size, easily containing thousands
>> of pages.
>
> Is this necessarily related to the display engine?

Different display engines models are affected differently by changes in
document size.

Mozilla's model, where the _entire document_ is converted into an
internal "layed-out-document" data structure, and then that is rendered,
and which is mainly targeted at documents of "reasonable" length but
with complex layout requirements (web pages), is pretty likely to have
an unacceptably high overhead (time and memory used by the
layed-out-document) for extremely large documents.

Emacs, which doesn't maintain a separate "layed-out-document" data
structure at all, and mainly just worries about rendering what's on the
screen from the raw document, has a very different set of tradeoffs.

Now, it's certainly _possible_ that mozilla actually contains special
code to deal with very-large-but-very-simple document structures, and
use a different method with different tradeoffs to render them, but...
it seems unlikely , and AFAIK, it doesn't.  [but of course, this
"special" code would more or less just be an implementation of what
Emacs does already!]

It's also _possible_ that mozilla's algorithms and data-structures are
so incredibly fast and efficient that this overhead is acceptable even
for extremely large documents on modern machines.  Judging from the
observed performance of e.g. firefox on large but simple web pages,
though, this also seems pretty unlikely.

[Emacs of course also does some processing that is proportional to
document length, e.g., coding/decoding, and at the most basic,
I/O... however such processing is likely to be much simpler/faster (and
memory efficient) than what Mozilla has to do layout the document for
display.]

-Miles

-- 
Friendless, adj. Having no favors to bestow. Destitute of fortune. Addicted to
utterance of truth and common sense.




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

* Re: redisplay system of emacs
  2010-01-29 10:04               ` Paul R
  2010-01-29 10:17                 ` David Kastrup
@ 2010-01-29 11:35                 ` Eli Zaretskii
  2010-01-29 13:06                   ` Paul R
  2010-01-29 13:07                   ` David Kastrup
  1 sibling, 2 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-29 11:35 UTC (permalink / raw)
  To: Paul R; +Cc: Emacs-devel

> From: Paul R <paul.r.ml@gmail.com>
> Cc: Lennart Borgman <lennart.borgman@gmail.com>,  alinsoar@voila.fr,  Eli Zaretskii <eliz@gnu.org>,  Emacs-devel@gnu.org
> Date: Fri, 29 Jan 2010 11:04:42 +0100
> 
> Hello,
> 
> > Note that mozilla's display engine makes some dramatically different
> > assumptions about what is important for the display engine to do.
> 
> 
> I found a related discussion in a previous thread, mid-2009 :
> 
>   http://lists.gnu.org/archive/html/emacs-devel/2009-07/threads.html#00344

Yeah, this pops up from time to time.

> As many emacs youngsters, I feel that emacs really uses too much
> home-made code. Surprisingly, Emacs does not benefit that much from the
> free software ecosystem.

That's a pretty general assessment.  Any data points other than the
display engine?

> This is certainly connected to the fact that it
> has been ahead of its time in many aspects, so it had to build its own
> bricks without waiting for others to provide them. But in the meantime
> some things has changed, high quality generic free software fragments
> has entered the game. Entrusting them rather than home-made code would
> certainly be a big job, but would instantly enlarge emacs (indirect)
> contributors list.

"Big job" is an understatement of the century.  Most of these "generic
free software fragments" are not written with Emacs peculiar
requirements in mind, and don't have a Lisp API.

Where these issues don't matter, Emacs does use existing software,
like with the font support and display-specific back ends that
actually render the characters on glass.

> The performance of those engines has gotten surprisingly good, and is
> still improving at a very fast rate. I would be interested to have some
> real-case benchmarks.

One of the most important benchmarks would be inserting or deleting a
small amount of text in a very large document.  As an interactive
editor, Emacs has to deal with this most of the time.  Not sure if
those other display engines are optimized to this modus operandi.




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

* Re: redisplay system of emacs
  2010-01-29 11:03                     ` Miles Bader
@ 2010-01-29 11:38                       ` Eli Zaretskii
  2010-01-29 15:10                         ` Miles Bader
  0 siblings, 1 reply; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-29 11:38 UTC (permalink / raw)
  To: Miles Bader; +Cc: dak, lennart.borgman, emacs-devel

> From: Miles Bader <miles@gnu.org>
> Date: Fri, 29 Jan 2010 20:03:47 +0900
> Cc: David Kastrup <dak@gnu.org>, emacs-devel@gnu.org
> 
> Emacs, which doesn't maintain a separate "layed-out-document" data
> structure at all

Actually, I think it does: that's the "glyph matrices", which are a
structured description of what should be drawn.  The display-specific
back end then actually draws the glyphs according to what the glyph
matrix tells it.

Not sure if it's relevant or important for this discussion, though.




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

* Re: redisplay system of emacs
  2010-01-29 11:35                 ` Eli Zaretskii
@ 2010-01-29 13:06                   ` Paul R
  2010-01-29 13:10                     ` David Kastrup
                                       ` (3 more replies)
  2010-01-29 13:07                   ` David Kastrup
  1 sibling, 4 replies; 162+ messages in thread
From: Paul R @ 2010-01-29 13:06 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: Emacs-devel

Hi Eli,

>> As many emacs youngsters, I feel that emacs really uses too much
>> home-made code. Surprisingly, Emacs does not benefit that much from
>> the free software ecosystem.

Eli> That's a pretty general assessment. Any data points other than the
Eli> display engine?

Emacs Lisp and all the librairies that emacs hackers had to implement on
top of it, IOW the 'emacs lisp standard library'.

Since 80ies, many languages appeared, and many of them meet very well
the requirements to extend a text editor. And because they are
general-purpose language, they do much more. Designing a language,
implementing it, maintaining it, providing a large and up to date
standard library, is a project on its own. Scheme, Ruby or Python come
to mind. The latters, at least, come with extensive support to parsing,
file operations, networking and so on.

Eli> "Big job" is an understatement of the century. Most of these
Eli> "generic free software fragments" are not written with Emacs
Eli> peculiar requirements in mind, and don't have a Lisp API.

Yes you are right. I'm mostly thinking loud how could be designed emacs
in today landscape.


-- 
  Paul




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

* Re: redisplay system of emacs
  2010-01-29 11:35                 ` Eli Zaretskii
  2010-01-29 13:06                   ` Paul R
@ 2010-01-29 13:07                   ` David Kastrup
  1 sibling, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-29 13:07 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Paul R <paul.r.ml@gmail.com>
>
>> As many emacs youngsters, I feel that emacs really uses too much
>> home-made code. Surprisingly, Emacs does not benefit that much from
>> the free software ecosystem.
>
> That's a pretty general assessment.  Any data points other than the
> display engine?

One main data point is that its copyright assignment policies don't
allow taking XEmacs code.

Since only explicitly FSF copyright-assigned contributions can be used
in Emacs, Emacs' involvement in the "free software ecosystem" as such is
purely contributing, not taking.  As far as generally available material
such as toolkit libraries are concerned, Emacs does not benefit more or
less than proprietary applications from the "free software ecosystem".

It is a consciously made tradeoff.  It has been expensive at times.  Not
everything comes cheap.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-29 13:06                   ` Paul R
@ 2010-01-29 13:10                     ` David Kastrup
  2010-01-29 13:45                     ` Eli Zaretskii
                                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-29 13:10 UTC (permalink / raw)
  To: emacs-devel

Paul R <paul.r.ml@gmail.com> writes:

> Hi Eli,
>
>>> As many emacs youngsters, I feel that emacs really uses too much
>>> home-made code. Surprisingly, Emacs does not benefit that much from
>>> the free software ecosystem.
>
> Eli> That's a pretty general assessment. Any data points other than the
> Eli> display engine?
>
> Emacs Lisp and all the librairies that emacs hackers had to implement on
> top of it, IOW the 'emacs lisp standard library'.
>
> Since 80ies, many languages appeared, and many of them meet very well
> the requirements to extend a text editor. And because they are
> general-purpose language, they do much more.

So where are all those powerful extensible text editors?

> Designing a language, implementing it, maintaining it, providing a
> large and up to date standard library, is a project on its
> own. Scheme, Ruby or Python come to mind. The latters, at least, come
> with extensive support to parsing, file operations, networking and so
> on.

So where are all those powerful extensible text editors?

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-29 10:30                     ` David Kastrup
@ 2010-01-29 13:18                       ` Lennart Borgman
  0 siblings, 0 replies; 162+ messages in thread
From: Lennart Borgman @ 2010-01-29 13:18 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

On Fri, Jan 29, 2010 at 11:30 AM, David Kastrup <dak@gnu.org> wrote:
> Lennart Borgman <lennart.borgman@gmail.com> writes:
>
>> On Fri, Jan 29, 2010 at 11:17 AM, David Kastrup <dak@gnu.org> wrote:
>>>
>>> Uh, Emacs needs to work without noticeable delays and with syntax
>>> highlighting for documents of _book_ size, easily containing thousands
>>> of pages.
>>
>>
>> Is this necessarily related to the display engine?
>
> Since the Mozilla model renders the whole document (admittedly starting
> before it is completely available), I don't see how it should be
> otherwise.


I am not sure that is the Mozilla model. It is just necessary for web pages.




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

* Re: redisplay system of emacs
  2010-01-29 13:06                   ` Paul R
  2010-01-29 13:10                     ` David Kastrup
@ 2010-01-29 13:45                     ` Eli Zaretskii
  2010-01-29 15:28                     ` Chong Yidong
  2010-01-29 18:35                     ` Stefan Monnier
  3 siblings, 0 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-29 13:45 UTC (permalink / raw)
  To: Paul R; +Cc: Emacs-devel

> From: Paul R <paul.r.ml@gmail.com>
> Date: Fri, 29 Jan 2010 14:06:20 +0100
> Cc: Emacs-devel@gnu.org
> 
> >> As many emacs youngsters, I feel that emacs really uses too much
> >> home-made code. Surprisingly, Emacs does not benefit that much from
> >> the free software ecosystem.
> 
> Eli> That's a pretty general assessment. Any data points other than the
> Eli> display engine?
> 
> Emacs Lisp and all the librairies that emacs hackers had to implement on
> top of it, IOW the 'emacs lisp standard library'.

And what replacements do you see for that in the ``free software
ecosystem''?  Apart of replacing Lisp with another language, an
endeavor that no one succeeded in to this day (although there were
attempts, and one of them is even still alive), what else could be
done to replace all that?




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

* Re: redisplay system of emacs
  2010-01-29 11:38                       ` Eli Zaretskii
@ 2010-01-29 15:10                         ` Miles Bader
  2010-01-29 17:30                           ` Eli Zaretskii
  0 siblings, 1 reply; 162+ messages in thread
From: Miles Bader @ 2010-01-29 15:10 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: dak, lennart.borgman, emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:
>> Emacs, which doesn't maintain a separate "layed-out-document" data
>> structure at all
>
> Actually, I think it does: that's the "glyph matrices", which are a
> structured description of what should be drawn.  The display-specific
> back end then actually draws the glyphs according to what the glyph
> matrix tells it.

That is only used for the portion of the document actually being
displayed on the screen at the moment, though, so it's more of a
temporary data structure representing the current screen than a
"layed-out" copy of the entire document like Mozilla uses.

-Miles

-- 
Brain, n. An apparatus with which we think we think.




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

* Re: redisplay system of emacs
  2010-01-29 13:06                   ` Paul R
  2010-01-29 13:10                     ` David Kastrup
  2010-01-29 13:45                     ` Eli Zaretskii
@ 2010-01-29 15:28                     ` Chong Yidong
  2010-01-29 18:35                     ` Stefan Monnier
  3 siblings, 0 replies; 162+ messages in thread
From: Chong Yidong @ 2010-01-29 15:28 UTC (permalink / raw)
  To: Paul R; +Cc: Eli Zaretskii, Emacs-devel

Paul R <paul.r.ml@gmail.com> writes:

> Since 80ies, many languages appeared, and many of them meet very well
> the requirements to extend a text editor. And because they are
> general-purpose language, they do much more. Designing a language,
> implementing it, maintaining it, providing a large and up to date
> standard library, is a project on its own. Scheme, Ruby or Python come
> to mind. The latters, at least, come with extensive support to parsing,
> file operations, networking and so on.

This has been discussed before ;-)

http://lists.gnu.org/archive/html/emacs-devel/2006-04/msg00030.html




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

* Re: redisplay system of emacs
  2010-01-29 15:10                         ` Miles Bader
@ 2010-01-29 17:30                           ` Eli Zaretskii
  0 siblings, 0 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-29 17:30 UTC (permalink / raw)
  To: Miles Bader; +Cc: dak, lennart.borgman, emacs-devel

> From: Miles Bader <miles@gnu.org>
> Cc: dak@gnu.org,  lennart.borgman@gmail.com,  emacs-devel@gnu.org
> Date: Sat, 30 Jan 2010 00:10:16 +0900
> 
> Eli Zaretskii <eliz@gnu.org> writes:
> >> Emacs, which doesn't maintain a separate "layed-out-document" data
> >> structure at all
> >
> > Actually, I think it does: that's the "glyph matrices", which are a
> > structured description of what should be drawn.  The display-specific
> > back end then actually draws the glyphs according to what the glyph
> > matrix tells it.
> 
> That is only used for the portion of the document actually being
> displayed on the screen at the moment

But of course: that's all Emacs display engine cares about.




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

* Re: redisplay system of emacs
  2010-01-29 10:17                 ` David Kastrup
  2010-01-29 10:23                   ` Lennart Borgman
  2010-01-29 10:48                   ` Paul R
@ 2010-01-29 18:19                   ` Stefan Monnier
  2 siblings, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-01-29 18:19 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

> In fact, the size of the total document should not affect editing
> speed.  And we are not just talking "editing" or fixed documents here:
> run-off compilation/log output needs to be fast.

That's the ideal goal, yes.  And Emacs is hopefully closer to it than
web browsers.  But Emacs is definitely not there in general: in some
cases (fundamental-mode, no line-number-mode, ...), it's mostly
there, but once you add enough font-locking and stuff, document size
does matter.  So we end up only caring about "fast enough on oldish
hardware when editing fairly large documents", and give up on "still
fast even on C header files larger than your memory" (sorry, Alan ;-)


        Stefan






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

* Re: redisplay system of emacs
  2010-01-29 13:06                   ` Paul R
                                       ` (2 preceding siblings ...)
  2010-01-29 15:28                     ` Chong Yidong
@ 2010-01-29 18:35                     ` Stefan Monnier
  2010-01-29 18:56                       ` Óscar Fuentes
                                         ` (2 more replies)
  3 siblings, 3 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-01-29 18:35 UTC (permalink / raw)
  To: Paul R; +Cc: Eli Zaretskii, Emacs-devel

Eli> That's a pretty general assessment. Any data points other than the
Eli> display engine?

Most of what Emacs's code offers is available elsewhere one way or
another in *apparently* better shape and with an active community.
That's true of the redisplay as we've been discussing, it's true of the
extension language, the GC, the coding-conversion libraries, the
wiget/menu code, and probably a lot more.

So, yes, it's probably fairly easy to do an Emacs-like editor using
another extension language etc... and the result is likely to be
cleaner, more efficient, better maintained code in many ways.
Actually such Emacs-like editors exist, using extension languages like
CommonLisp, OCaml, Haskell, Python, younameit.

The problem is that they're not Emacs, so they start with a small user
community and it's hard for them to grow.  At some point, I've
considered the possibility to switch to one of those (where the
extension language is statically typed ;-), but ... they didn't have
PCL-CVS, diff-mode, Gnus, ... so it was really an uphill battle.
Maybe later.


        Stefan




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

* Re: redisplay system of emacs
  2010-01-29 18:35                     ` Stefan Monnier
@ 2010-01-29 18:56                       ` Óscar Fuentes
  2010-01-30 11:46                         ` Richard Stallman
  2010-01-29 19:53                       ` Eli Zaretskii
  2010-01-30 10:34                       ` Fabian Ezequiel Gallina
  2 siblings, 1 reply; 162+ messages in thread
From: Óscar Fuentes @ 2010-01-29 18:56 UTC (permalink / raw)
  To: emacs-devel

Stefan Monnier <monnier@IRO.UMontreal.CA> writes:

[snip]

> At some point, I've considered the possibility to switch to one of
> those (where the extension language is statically typed ;-), but
> ... they didn't have PCL-CVS, diff-mode, Gnus, ... so it was really an
> uphill battle.  Maybe later.

Now that you are on the mod of discussing far-fetched possibilities,
think on a language that...

* Statically typed ;-) No fancy type system, though. Dynamic typing can
  be emulated.

* Can easily interface with C/C++. Registering a C function, type or
  variable is a one-liner. In principle, it is possible to automatize
  the task.

* Optionally, can compile to efficient native code.

* Lisp-like syntax.

* Has defmacro (yay!).

* Has eval.

* Has instrospection facilities.

Whenever I look at the Emacs C codebase, I think that a language like
the described above would do wonders replacing a good chunk of it.

I have such language with the corresponding compiler. It has its warts,
no doubt. But, as a maintainer of the Emacs C code, how it looks the
perspective of using a language like that instead of the Emacs C
pseudo-dialect? Is it painful enough to maintain the C codebase to make
you dream about switching to something else?





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

* Re: redisplay system of emacs
@ 2010-01-29 19:48 grischka
  2010-01-30  5:39 ` Stephen J. Turnbull
  2010-01-30 11:46 ` Richard Stallman
  0 siblings, 2 replies; 162+ messages in thread
From: grischka @ 2010-01-29 19:48 UTC (permalink / raw)
  To: emacs-devel

David Kastrup wrote:
 > Since only explicitly FSF copyright-assigned contributions can be used
 > in Emacs, Emacs' involvement in the "free software ecosystem" as such is
 > purely contributing, not taking.

Emacs is contributing in the sense of providing a swiss knife to
produce free software, but not in the sense of being free software.
For that it would need to be modular.

One could imagine a modular emacs consisting of a lisp engine that
could be used without the editor, a display module that can be used
without windows/frames, an UI module that would allow to build
standalone applications.  That is applications with emacs under the
hood, as opposed to the one emacs with many applications under the
hood.

But as is, emacs comes with an implicit structural clause to its
license, as in "[You may convey a work based on the Program, ...]
BUT WE DO OUR BEST TO PREVENT THAT."

Well, that is how I see it.  Technical and structural reasons are
real, and if in practice such reasons prevent distribution of
modified versions, then the license becomes pointless.

Now, of course the problem exists elsewhere too.  People may or may
not be aware, and may or may not address it, in this or that way.

--- grischka





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

* Re: redisplay system of emacs
  2010-01-29 18:35                     ` Stefan Monnier
  2010-01-29 18:56                       ` Óscar Fuentes
@ 2010-01-29 19:53                       ` Eli Zaretskii
  2010-01-30 18:04                         ` Stefan Monnier
  2010-01-30 10:34                       ` Fabian Ezequiel Gallina
  2 siblings, 1 reply; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-29 19:53 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: paul.r.ml, Emacs-devel

> From: Stefan Monnier <monnier@IRO.UMontreal.CA>
> Cc: Eli Zaretskii <eliz@gnu.org>, Emacs-devel@gnu.org
> Date: Fri, 29 Jan 2010 13:35:28 -0500
> 
> Eli> That's a pretty general assessment. Any data points other than the
> Eli> display engine?
> 
> Most of what Emacs's code offers is available elsewhere one way or
> another in *apparently* better shape and with an active community.
> That's true of the redisplay as we've been discussing, it's true of the
> extension language, the GC, the coding-conversion libraries, the
> wiget/menu code, and probably a lot more.
> 
> So, yes, it's probably fairly easy to do an Emacs-like editor using
> another extension language etc...

I thought the issue was not creation of a new editor, but using in
Emacs code written elsewhere for some tasks Emacs now does with code
written specifically for it.

> At some point, I've considered the possibility to switch to one of
> those (where the extension language is statically typed ;-), but
> ... they didn't have PCL-CVS, diff-mode, Gnus, ... so it was really
> an uphill battle.

Heh, that's how I came to Emacs 15 years ago: I got tired
reimplementing in a workalike all the features I missed and in Emacs
were there to be used...




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

* Re: redisplay system of emacs
  2010-01-29 19:48 grischka
@ 2010-01-30  5:39 ` Stephen J. Turnbull
  2010-01-30  9:53   ` David Kastrup
  2010-01-30  9:57   ` Eli Zaretskii
  2010-01-30 11:46 ` Richard Stallman
  1 sibling, 2 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-30  5:39 UTC (permalink / raw)
  To: grischka; +Cc: emacs-devel

grischka writes:

 > But as is, emacs comes with an implicit structural clause to its
 > license, as in "[You may convey a work based on the Program, ...]
 > BUT WE DO OUR BEST TO PREVENT THAT."

That's simply not true.  There have historically been a large number
of editors based on Emacs code, some of which are in active
development (of course XEmacs is an example, and many wilder
alternatives have existed: pymacs, perlmacs).  And every long time
user has more or less substantial app-specific code in their init
file, while many have private branches, sometimes shared with friends.
Corporate IT departments often have quite substantial applications
built on Emacs (a friend of mine feeds his family by maintaining a bug
database query frontend in Emacs Lisp for a leading technology company
-- that's his fulltime job).

I can say to those who say "we can rebuild Emacs using third-party
libraries and it would be more maintainable and flexible" that XEmacs
has tried that several times for different areas of functionality, and
for one reason or another the code has always come back out again.  In
fact, those third party libraries have always either turned out to
lack the flexibility demanded by an editor application, or to be less
stable than XEmacs itself, and since they didn't offer any high-level
capabilities that couldn't be coded in three lines of Lisp, they went
back on the shelf.

Of course low-level facilities like displaying glyphs from fonts are
best done with specialized libraries.  Guess what?  Emacs uses native
X for legacy fonts, but it doesn't go to Xrender for scalable fonts,
it uses freetype and/or Xft.  But even at the level of displaying
images which you would think would be eminently suitable for a third-
party library like libmagick or maybe netpbm, XEmacs was forced to
abandon its attemtp to use libmagick as a common interface to all
image formats, and go back to direct support of the various underlying
libraries such as libjpeg and libungif -- which itself turned out to
be too unstable, so instead of using it, we had until recently a
locally hacked code based on an older version.  Today, we've gone back
to using giflib directly and libmagick is probably stable enough to
use as a replacement for our custom high-level code, but if you were
to try to use all of the various libraries proposed to replace core
Emacs functionality, some would be lemons and you'd take two steps
back for every step forward.

You can complain that "plugins" should be written in a more popular
language like Python or Visual BASIC<snort />, of course, but as
several others have pointed out, you would not be able to take
advantage of 3 decades worth of Lisp libraries in doing that, and
often the libraries available in Python or Ruby are more buggy because
much younger.

And if you look at what people who want a non-Emacs advanced editor
for their Python or Ruby projects do, they don't write it in Python or
Ruby.  (Yes, I know about IDLE, and it's not an advanced editor, nor
is it as easy to extend as Emacs.)  No, they go hack on vim!

As for browsing 1GB (well, for Emacs it would be 256MB, I guess?) log
files, there's nothing like (X)Emacs!




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

* Re: redisplay system of emacs
  2010-01-30  5:39 ` Stephen J. Turnbull
@ 2010-01-30  9:53   ` David Kastrup
  2010-01-30 11:01     ` Stephen J. Turnbull
  2010-01-30  9:57   ` Eli Zaretskii
  1 sibling, 1 reply; 162+ messages in thread
From: David Kastrup @ 2010-01-30  9:53 UTC (permalink / raw)
  To: emacs-devel

"Stephen J. Turnbull" <stephen@xemacs.org> writes:

> grischka writes:
>
>  > But as is, emacs comes with an implicit structural clause to its
>  > license, as in "[You may convey a work based on the Program, ...]
>  > BUT WE DO OUR BEST TO PREVENT THAT."
>
> That's simply not true.  There have historically been a large number
> of editors based on Emacs code, some of which are in active
> development (of course XEmacs is an example, and many wilder
> alternatives have existed: pymacs, perlmacs).

Maybe the point was that it is not trivial to get home-brewn extensions
back into Emacs upstream.  In particular, if they have been brewed in
somebody else's home...

> I can say to those who say "we can rebuild Emacs using third-party
> libraries and it would be more maintainable and flexible" that XEmacs
> has tried that several times for different areas of functionality, and
> for one reason or another the code has always come back out again.

Thanks for that data point.

> As for browsing 1GB (well, for Emacs it would be 256MB, I guess?)

most-positive-fixnum => 536870911

> log files, there's nothing like (X)Emacs!

less is better, actually.  I need my virtual memory for other things
than decorated log files.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-30  5:39 ` Stephen J. Turnbull
  2010-01-30  9:53   ` David Kastrup
@ 2010-01-30  9:57   ` Eli Zaretskii
  1 sibling, 0 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-30  9:57 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: grishka, emacs-devel

> From: "Stephen J. Turnbull" <stephen@xemacs.org>
> Date: Sat, 30 Jan 2010 14:39:48 +0900
> Cc: emacs-devel@gnu.org
> 
> As for browsing 1GB (well, for Emacs it would be 256MB, I guess?) log
> files, there's nothing like (X)Emacs!            ^^^^^

512MB (on 32bit machines).




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

* Re: redisplay system of emacs
  2010-01-29 18:35                     ` Stefan Monnier
  2010-01-29 18:56                       ` Óscar Fuentes
  2010-01-29 19:53                       ` Eli Zaretskii
@ 2010-01-30 10:34                       ` Fabian Ezequiel Gallina
  2010-01-30 10:52                         ` David Kastrup
  2010-01-30 21:18                         ` Stefan Monnier
  2 siblings, 2 replies; 162+ messages in thread
From: Fabian Ezequiel Gallina @ 2010-01-30 10:34 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, Paul R, Emacs-devel

2010/1/29 Stefan Monnier <monnier@iro.umontreal.ca>:
>
> So, yes, it's probably fairly easy to do an Emacs-like editor using
> another extension language etc... and the result is likely to be
> cleaner, more efficient, better maintained code in many ways.
> Actually such Emacs-like editors exist, using extension languages like
> CommonLisp, OCaml, Haskell, Python, younameit.
>
> The problem is that they're not Emacs, so they start with a small user
> community and it's hard for them to grow.  At some point, I've
> considered the possibility to switch to one of those (where the
> extension language is statically typed ;-), but ... they didn't have
> PCL-CVS, diff-mode, Gnus, ... so it was really an uphill battle.
> Maybe later.
>

I think Emacs Lisp is a great extension language. To be honest, when I
was changing my current programing editor and was testing VIM and
Emacs, I've choosen Emacs mainly because of Lisp (...and because I
hated switching modes in VIM).

I have to say also, that beign (mainly) a Python programmer I feel
Emacs Lisp very familiar in some places, and I guess it's true what
people say that is an enlightning language.

There is a really nice project which allows you to extend GNU/Emacs
using Python called Pymacs[0]. I guess that instead of changing Emacs
Lisp we should develop and encourage this kind of interfaces. This
will keep everyone happy, people who actually wants to learn Emacs
Lisp and people who don't want quit using their preferred language.

An example of an extension using Pymacs would be ropemacs[1] which is
a Python refactoring tool (that saves my life everyday).

[0] http://pymacs.progiciels-bpi.ca/pymacs.html
[1] http://rope.sourceforge.net/ropemacs.html


Regards,
-- 
Fabián E. Gallina
http://www.from-the-cloud.com




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

* Re: redisplay system of emacs
  2010-01-30 10:34                       ` Fabian Ezequiel Gallina
@ 2010-01-30 10:52                         ` David Kastrup
  2010-01-30 21:18                         ` Stefan Monnier
  1 sibling, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-30 10:52 UTC (permalink / raw)
  To: emacs-devel

Fabian Ezequiel Gallina <galli.87@gmail.com> writes:

> 2010/1/29 Stefan Monnier <monnier@iro.umontreal.ca>:
>>
>> So, yes, it's probably fairly easy to do an Emacs-like editor using
>> another extension language etc... and the result is likely to be
>> cleaner, more efficient, better maintained code in many ways.
>> Actually such Emacs-like editors exist, using extension languages
>> like CommonLisp, OCaml, Haskell, Python, younameit.
>>
>> The problem is that they're not Emacs, so they start with a small
>> user community and it's hard for them to grow.  At some point, I've
>> considered the possibility to switch to one of those (where the
>> extension language is statically typed ;-), but ... they didn't have
>> PCL-CVS, diff-mode, Gnus, ... so it was really an uphill battle.
>> Maybe later.
>
> I think Emacs Lisp is a great extension language.

I don't think so.  It is a functional language used in a procedural
style, causing permanent changes as its ultimate purpose.  Not even with
lexical bindings.

It does automatic allocation and garbage collection, is concise and with
data structures catered to the task at hand.  Mostly.

If it were a great extension language, it would be in use outside of
Emacs.

Things like Lua would meet the bill quite better, but they are too late
in the game now.

Emacs is not a program, it is an ecosystem.  And ecosystems play by
different rules than individuals.  Emacs has not yet reached
equilibrium, the state where bit rot destroys functionality at the same
pace as new stuff gets added.

Moving that ecosystem to a different language is about as ambitious as
moving a carbon-based ecosystem to silicon-based.

You don't know where to start.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-30  9:53   ` David Kastrup
@ 2010-01-30 11:01     ` Stephen J. Turnbull
  2010-01-30 11:08       ` David Kastrup
                         ` (2 more replies)
  0 siblings, 3 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-30 11:01 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David Kastrup writes:
 > "Stephen J. Turnbull" <stephen@xemacs.org> writes:
 > 
 > > grischka writes:
 > >
 > >  > But as is, emacs comes with an implicit structural clause to its
 > >  > license, as in "[You may convey a work based on the Program, ...]
 > >  > BUT WE DO OUR BEST TO PREVENT THAT."
 > >
 > > That's simply not true.  There have historically been a large number
 > > of editors based on Emacs code,
 > 
 > Maybe the point was that it is not trivial to get home-brewn extensions
 > back into Emacs upstream.  In particular, if they have been brewed in
 > somebody else's home...

That's not how I read it.  It seems to me that the OP (and others in
this thread, as well is in the package manager threads) are looking
for a more open ecology, something like the various C*AN networks on
the "Emacs is a platform for application development" side, and FFI on
the the "Emacs interacts with various communication protocols and
storage formats" side.

In other words, less, not more, centralization.  A smaller core Emacs
doing less better, and delegating more to 3rd-party libraries.

 > > As for browsing 1GB (well, for Emacs it would be 256MB, I guess?)
 > 
 > most-positive-fixnum => 536870911

Oops.  I wish you had posted 30 minutes earlier, I just misquoted
myself in another channel.  Thank you (and Eli) for the correction,
anyway.

 > > log files, there's nothing like (X)Emacs!

 > less is better, actually.  I need my virtual memory for other things
 > than decorated log files.

I don't decorate the log files.  I use things like M-x occur or M-x
delete-non-matching lines on them, though.  Does less support such
features now?




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

* Re: redisplay system of emacs
  2010-01-30 11:01     ` Stephen J. Turnbull
@ 2010-01-30 11:08       ` David Kastrup
  2010-01-30 11:54         ` Paul R
  2010-01-30 11:24       ` Eli Zaretskii
  2010-01-30 12:53       ` Alan Mackenzie
  2 siblings, 1 reply; 162+ messages in thread
From: David Kastrup @ 2010-01-30 11:08 UTC (permalink / raw)
  To: emacs-devel

"Stephen J. Turnbull" <stephen@xemacs.org> writes:

> David Kastrup writes:
>
>  > most-positive-fixnum => 536870911
>
> Oops.  I wish you had posted 30 minutes earlier, I just misquoted
> myself in another channel.  Thank you (and Eli) for the correction,
> anyway.

This value has been in flux, anyway.  I suppose it might at one point of
time reach the 1GB value of XEmacs (which is pretty much the maximum
power of 2 possible for tagged words).

>  > > log files, there's nothing like (X)Emacs!
>
>  > less is better, actually.  I need my virtual memory for other things
>  > than decorated log files.
>
> I don't decorate the log files.  I use things like M-x occur or M-x
> delete-non-matching lines on them, though.  Does less support such
> features now?

Well, you can search for non-matches by starting the regexp with !.  And
you can limit the display to matching/non-matching lines using &.  And
you can search across multiple files with specific search pattern
characters as well.

It's not really all too bad.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-30 11:01     ` Stephen J. Turnbull
  2010-01-30 11:08       ` David Kastrup
@ 2010-01-30 11:24       ` Eli Zaretskii
  2010-01-30 12:53       ` Alan Mackenzie
  2 siblings, 0 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-30 11:24 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: dak, emacs-devel

> From: "Stephen J. Turnbull" <stephen@xemacs.org>
> Date: Sat, 30 Jan 2010 20:01:19 +0900
> Cc: emacs-devel@gnu.org
> 
>  > > log files, there's nothing like (X)Emacs!
> 
>  > less is better, actually.  I need my virtual memory for other things
>  > than decorated log files.
> 
> I don't decorate the log files.  I use things like M-x occur or M-x
> delete-non-matching lines on them, though.  Does less support such
> features now?

Since version 424, Less has this:

  * New "&" command allows filtering of lines based on a pattern.

But you need that version installed (it was released less than a year
ago) to take advantage of this, and it doesn't seem to support the
equivalent of delete-matching-lines; instead, you will need to invert
the regexp manually.

In my daytime job, I also need to browse huge log files.  I love Less
and use it for simple browsing and searching (the fact that it doesn't
have Emacs limitations of size is sometimes very important).  But as
soon as I need to do something complex, like compare two large log
files or jump between several places, I always fire up Emacs (if it's
not up already), because it's just too painful with Less, even though
features to do that do exist.  If the file is too large, I just cut
the interesting part with Sed.




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

* Re: redisplay system of emacs
  2010-01-29 18:56                       ` Óscar Fuentes
@ 2010-01-30 11:46                         ` Richard Stallman
  2010-01-30 12:51                           ` Óscar Fuentes
  0 siblings, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-01-30 11:46 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

    Whenever I look at the Emacs C codebase, I think that a language like
    the described above would do wonders replacing a good chunk of it.

The code written in C in Emacs is mostly in C so it can be as fast as
possible.  To move it into such a language would be a big practical
loss.

There is some code that was originally in C but doesn't need to be
fast.  We have rewritten some of that code in Lisp in recent years.
If more such C code remains, we could move that to Lisp too.




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

* Re: redisplay system of emacs
  2010-01-29 19:48 grischka
  2010-01-30  5:39 ` Stephen J. Turnbull
@ 2010-01-30 11:46 ` Richard Stallman
  2010-01-30 12:11   ` Paul R
  1 sibling, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-01-30 11:46 UTC (permalink / raw)
  To: grischka; +Cc: emacs-devel

    Emacs is contributing in the sense of providing a swiss knife to
    produce free software, but not in the sense of being free software.

You are factually mistaken.  Emacs is free software, and people take
advantage of that freedom with their modified versions.

The term "ecosystem" is best avoided because it supposes an
amoral stance.  See http://www.gnu.org/philosophy/words-to-avoid.html
for the explanation.





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

* Re: redisplay system of emacs
  2010-01-30 11:08       ` David Kastrup
@ 2010-01-30 11:54         ` Paul R
  2010-01-30 13:52           ` Stephen J. Turnbull
  0 siblings, 1 reply; 162+ messages in thread
From: Paul R @ 2010-01-30 11:54 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David, Eli, Stephen, Stefan, and others, thank you very much for your
insights. That was well argumented, and very constructive, which I guess
is not an easy task when speaking from the inside reality of the system,
to an enthusiastic outsider. As Stefan pointed out, decades of
developers horsepower has so far provided better results than
alternative systems, although better designed and backed-up by robust
third-party components.

Is there an official "emacs 2" page (or project) where emacs people can
elaborate on how they would design emacs, if they had to start it from
scratch today ? If not, I would be happy to start one and try to
sumarize your points, from this thread. It would also be interesting, in
this project, to monitor various other attempts to create extensible
systems, and retrieve feedback. For exemple, I am amazed by the success
of the Xmonad window manager in this field : dynamic community, good
documentation, robust and correct behaviour. Few people have expected it
3 years ago, when this Haskell extensible system was first announced.
A lot of people (including me) considered static strictness to be a poor
design choice for extensibility. This is just an example of interesting
feedback from other's experiences.



-- 
  Paul




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

* Re: redisplay system of emacs
  2010-01-30 11:46 ` Richard Stallman
@ 2010-01-30 12:11   ` Paul R
  2010-01-30 13:26     ` Alan Mackenzie
  2010-01-31 12:41     ` Richard Stallman
  0 siblings, 2 replies; 162+ messages in thread
From: Paul R @ 2010-01-30 12:11 UTC (permalink / raw)
  To: rms; +Cc: grischka, emacs-devel

Richard,

> The term "ecosystem" is best avoided because it supposes an amoral
> stance. See http://www.gnu.org/philosophy/words-to-avoid.html for the
> explanation.

I don't think the word ecosystem "(...) implies the absence of intention
and ethics", as stated in this page. It does not implie the presence of
them either. I think they are independant concepts, and that a free
software ecosystem is an acceptable metaphore because it shows that
their is interdependency (in fact free software licence favours this
interdependency).

Can you suggest an alternative word that expresses this simple, yet
fundamental, concept ?



-- 
  Paul




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

* Re: redisplay system of emacs
  2010-01-30 11:46                         ` Richard Stallman
@ 2010-01-30 12:51                           ` Óscar Fuentes
  2010-01-30 15:39                             ` Eli Zaretskii
  2010-01-31 12:41                             ` Richard Stallman
  0 siblings, 2 replies; 162+ messages in thread
From: Óscar Fuentes @ 2010-01-30 12:51 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     Whenever I look at the Emacs C codebase, I think that a language like
>     the described above would do wonders replacing a good chunk of it.
>
> The code written in C in Emacs is mostly in C so it can be as fast as
> possible.  To move it into such a language would be a big practical
> loss.

Just a clarification:

You missed the part that says "Optionally, can compile to efficient
native code." Here, efficient means "at least as good as C".

Nowadays, thanks to projects like LLVM, it is easy to roll an
industrial-grade optimizing compiler if the language runtime
requirements are not too far from C. It is straightforward to design a
language that equals C in speed of execution and that is way more
expressive.

Actually, some of those languages often compile applications to code
that is faster than their C counterpart, as they are more
optimizer-friendly.





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

* Re: redisplay system of emacs
  2010-01-30 11:01     ` Stephen J. Turnbull
  2010-01-30 11:08       ` David Kastrup
  2010-01-30 11:24       ` Eli Zaretskii
@ 2010-01-30 12:53       ` Alan Mackenzie
  2 siblings, 0 replies; 162+ messages in thread
From: Alan Mackenzie @ 2010-01-30 12:53 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: David Kastrup, emacs-devel

Hi, Stephen,

On Sat, Jan 30, 2010 at 08:01:19PM +0900, Stephen J. Turnbull wrote:

> In other words, less, not more, centralization.  A smaller core Emacs
> doing less better, and delegating more to 3rd-party libraries.

You mean, with a project team based around a micro-colonel?

-- 
Alan Mackenzie (Nuremberg, Germany).




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

* Re: redisplay system of emacs
  2010-01-30 12:11   ` Paul R
@ 2010-01-30 13:26     ` Alan Mackenzie
  2010-01-30 13:42       ` David Kastrup
                         ` (3 more replies)
  2010-01-31 12:41     ` Richard Stallman
  1 sibling, 4 replies; 162+ messages in thread
From: Alan Mackenzie @ 2010-01-30 13:26 UTC (permalink / raw)
  To: Paul R; +Cc: grischka, rms, emacs-devel

Hi, Paul,

On Sat, Jan 30, 2010 at 01:11:57PM +0100, Paul R wrote:
> Richard,

> > The term "ecosystem" is best avoided because it supposes an amoral
> > stance. See http://www.gnu.org/philosophy/words-to-avoid.html for the
> > explanation.

> I don't think the word ecosystem "(...) implies the absence of intention
> and ethics", as stated in this page.

Are you a native English speaker?  "Ecosystem" is a system of ecology,
which is the study of how organisms react with eachother and their
shared environment.  Implicit in ecology is its participants'
obliviousness to ecology.

> It does not imply the presence of them either. I think they are
> independant concepts, and that a free software ecosystem is an
> acceptable metaphor, because it shows that there is interdependency
> (in fact free software licence favours this interdependency).

There are other words which also imply interdependency yet which are
less laden with loaded meanings.  "Ecosystem" implies its participants
(hackers etc.) are on the level of bugs, beetles and bacteria.  It
denigrates hackers, suggesting they are simply swept along helplessly by
outrageous fortune, rather than being the agents of it.  Some of these
other words would be better, much better, such as ....

> Can you suggest an alternative word that expresses this simple, yet
> fundamental, concept ?

A "community" for example, which expresses all the tenets of
interdependency and tension.  If you want to emphasise the ideas of
competition between bits of free software (say, between perl, python and
ruby), the best word is perhaps "market", or "marketplace of ideas".

> -- 
>   Paul

-- 
Alan Mackenzie (Nuremberg, Germany).




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

* Re: redisplay system of emacs
  2010-01-30 13:26     ` Alan Mackenzie
@ 2010-01-30 13:42       ` David Kastrup
  2010-01-30 13:49       ` Juanma Barranquero
                         ` (2 subsequent siblings)
  3 siblings, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-30 13:42 UTC (permalink / raw)
  To: emacs-devel

Alan Mackenzie <acm@muc.de> writes:

> Hi, Paul,
>
> On Sat, Jan 30, 2010 at 01:11:57PM +0100, Paul R wrote:
>> Richard,
>
>> > The term "ecosystem" is best avoided because it supposes an amoral
>> > stance. See http://www.gnu.org/philosophy/words-to-avoid.html for the
>> > explanation.
>
>> I don't think the word ecosystem "(...) implies the absence of intention
>> and ethics", as stated in this page.
>
> Are you a native English speaker?  "Ecosystem" is a system of ecology,
> which is the study of how organisms react with eachother and their
> shared environment.  Implicit in ecology is its participants'

Implicit in "ecosystem" you likely mean.

> obliviousness to ecology.
>
> There are other words which also imply interdependency yet which are
> less laden with loaded meanings.  "Ecosystem" implies its participants
> (hackers etc.) are on the level of bugs, beetles and bacteria.

With regard to their function, yes.  "Ecosystem" is used exactly when
talking about an emergent rather than controlled system.

>> Can you suggest an alternative word that expresses this simple, yet
>> fundamental, concept ?
>
> A "community" for example, which expresses all the tenets of
> interdependency and tension.

But it's simply the wrong choice of words if you want to include the
effects on entities that profit without active participation.

The FSF is a _charity_, and the whole point of a charity is that it
differs from a community by benefitting people on the receiving end.

> If you want to emphasise the ideas of competition between bits of free
> software (say, between perl, python and ruby), the best word is
> perhaps "market", or "marketplace of ideas".

Again, different connotations.

By far the largest ratio of profiting people don't act as an active part
in some "community".  Choosing terms excluding them from consideration
is not doing the concept full justice.

Since free software changes the world far beyond the scope of its active
communities, I don't find "ecosystem" a bad choice of words when
describing the _effects_ of free software, even though it may prosper
mostly from within communities.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-30 13:26     ` Alan Mackenzie
  2010-01-30 13:42       ` David Kastrup
@ 2010-01-30 13:49       ` Juanma Barranquero
  2010-01-30 13:54       ` Paul R
  2010-01-30 15:07       ` Stephen J. Turnbull
  3 siblings, 0 replies; 162+ messages in thread
From: Juanma Barranquero @ 2010-01-30 13:49 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: grischka, Paul R, rms, emacs-devel

On Sat, Jan 30, 2010 at 14:26, Alan Mackenzie <acm@muc.de> wrote:

> "Ecosystem" implies its participants
> (hackers etc.) are on the level of bugs, beetles and bacteria.

Yes, of course, because apes, whales, dolphins and other quite
intelligent animals are not part of any ecosystem.

    Juanma




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

* Re: redisplay system of emacs
  2010-01-30 11:54         ` Paul R
@ 2010-01-30 13:52           ` Stephen J. Turnbull
  0 siblings, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-30 13:52 UTC (permalink / raw)
  To: Paul R; +Cc: emacs-devel

Paul R writes:

 > Is there an official "emacs 2" page (or project) where emacs people can
 > elaborate on how they would design emacs, if they had to start it from
 > scratch today ?

Dunno.  Some references for you, though:

The Emacswiki (http://www.emacswiki.org/), especially the
ExtensionLanguage, WishList, EmacsImplementations, and History pages
may be of interest, and a good place for such a resource.  Ben Wing's
Architecting XEmacs is "official" (as much as anything can be in a
free software project) but for the wrong Emacs
(http://www.xemacs.org/Architecting-XEmacs/).  The XEmacs Internals
manual is probably the most detailed description of current Emacs
implementation, although again it's the wrong Emacs (and partial).
(http://www.xemacs.org/Documentation/21.5/html/internals.html).

 > For exemple, I am amazed by the success of the Xmonad window
 > manager in this field : dynamic community, good documentation,
 > robust and correct behaviour.

I wasn't.  They knew what they wanted, the problem was well-defined,
and that community is oriented to correctness-by-design.

Note that Emacs is none of those (google for xwem.el and Emacsspeak
and tell me again anybody knows what Emacs users want and the problem
is well-defined :-), and the first two "is nots" are inherent in the
problem domain.  The third could be changed, but seems unlikely.  The
"kaizen" style (continuous improvement and extension of a simple idea
and initial implementation by dynamic hacking) has served the Emacs
community well so far.





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

* Re: redisplay system of emacs
  2010-01-30 13:26     ` Alan Mackenzie
  2010-01-30 13:42       ` David Kastrup
  2010-01-30 13:49       ` Juanma Barranquero
@ 2010-01-30 13:54       ` Paul R
  2010-01-30 15:15         ` Stephen J. Turnbull
  2010-01-30 15:07       ` Stephen J. Turnbull
  3 siblings, 1 reply; 162+ messages in thread
From: Paul R @ 2010-01-30 13:54 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: grischka, rms, emacs-devel

Hello Alan,

> Are you a native English speaker? "Ecosystem" is a system of ecology,
> which is the study of how organisms react with eachother and their
> shared environment. Implicit in ecology is its participants'
> obliviousness to ecology.

No, I am not a native English speaker, so I cared to read the definition
I had at hand, as well as the wikipedia article before giving my point
of view. I could not relate what I read there to what I read in the GNU
words-to-avoid page.

> There are other words which also imply interdependency yet which are
> less laden with loaded meanings. "Ecosystem" implies its participants
> (hackers etc.) are on the level of bugs, beetles and bacteria. It
> denigrates hackers, suggesting they are simply swept along helplessly
> by outrageous fortune, rather than being the agents of it. Some of
> these other words would be better, much better, such as ....

A free software ecosystem is composed of free software, isn't it ?

Also, it is probably just cultural, but around me the word 'ecosystem'
connotes very respected ideas, of equilibrium, sustainability, fairness.

-- 
  Paul




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

* Re: redisplay system of emacs
  2010-01-30 13:26     ` Alan Mackenzie
                         ` (2 preceding siblings ...)
  2010-01-30 13:54       ` Paul R
@ 2010-01-30 15:07       ` Stephen J. Turnbull
  3 siblings, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-30 15:07 UTC (permalink / raw)
  To: Alan Mackenzie; +Cc: grischka, Paul R, rms, emacs-devel

Alan Mackenzie writes:

 > Are you a native English speaker?  "Ecosystem" is a system of ecology,
 > which is the study of how organisms react with eachother and their
 > shared environment.  Implicit in ecology is its participants'
 > obliviousness to ecology.

I am a native speaker of English, and while *in science* "ecosystem"
*normally* is used to refer to natural systems where the participants
are "oblivious to ecology", in *policy discussions* (like this thread)
it almost always signifies that that speaker takes a moral stance
which (1) values the ecosystem as a whole and (2) holds that conscious
participants in an ecosystem have a responsibility to help preserve
that ecosystem.

Both principles are somewhat opposed to the individualistic ethos of
the free software movement.  I am not at all surprised that (some)
diehard free software advocates dislike the word "ecosystem", and most
especially the suggestion that they are members of one.

 > There are other words which also imply interdependency yet which are
 > less laden with loaded meanings.  "Ecosystem" implies its participants
 > (hackers etc.) are on the level of bugs, beetles and bacteria.

Ah, if only we could aspire to such moral heights!  Unfortunately,
"just call me Lucifer, 'cause I'm in need of some restraint."  (It's
spelled differently in the Preamble to the GNU General Public License,
but you can find that statement there if you look. :-)

 > It denigrates hackers, suggesting they are simply swept along
 > helplessly by outrageous fortune, rather than being the agents of
 > it. 

Hackers certainly do behave outrageously on occasion.  However, while
they are not helpless, to call them "agents of fortune" is hubris.

 > A "community" for example, which expresses all the tenets of
 > interdependency and tension.

No good, sorry.  "Community" derives from the word "common".  As soon
as we speak of multiple communities, we're clearly lost some important
commonality, and the need for a term such as "ecosystem" becomes
urgent.  To borrow a word from David (+1 to everything he wrote, by
the way), "ecosystem" stands for the *emergent* properties of a
network of more or less different communities.

Any casual observer of the Japanese or US political systems is
immediately aware that communities only with extreme difficulty behave
as rationally as humans, let alone beetles.  I see no reason why a
network of communities shouldn't be treated as an ecosystem, even if
you object to the human members being treated as part of an ecosystem.

 > If you want to emphasise the ideas of competition between bits of
 > free software (say, between perl, python and ruby), the best word
 > is perhaps "market", or "marketplace of ideas".

But that is precisely *not* the desired connotation!  The idea is to
emphasize and encourage cooperation and sharing among those bits.  For
example, though Bazaar, git, Subversion, and Mercurial compete "in the
marketplace of ideas", they are currently engaged in hammering out the
"fastimport format", a common dump format for VCS data.  When they're
done, you'll be able to dump a bzr database and read it into git, and
get sane behavior.  Bazaar and Mercurial will probably even be able to
share code for dumping and undumping.

How'd that happen?  I'd sure like to know, because I'd like to apply
it to the Emacs-XEmacs-SXEmacs etc community.  But "community" doesn't
tell me anything about where to look.  Nor does "market".  "Ecosystem"
does....





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

* Re: redisplay system of emacs
  2010-01-30 13:54       ` Paul R
@ 2010-01-30 15:15         ` Stephen J. Turnbull
  0 siblings, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-30 15:15 UTC (permalink / raw)
  To: Paul R; +Cc: Alan Mackenzie, grischka, rms, emacs-devel

Paul R writes:

 > A free software ecosystem is composed of free software, isn't it ?

No, to be precise, it's composed of *users* of free software.





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

* Re: redisplay system of emacs
  2010-01-30 12:51                           ` Óscar Fuentes
@ 2010-01-30 15:39                             ` Eli Zaretskii
  2010-01-30 19:21                               ` Óscar Fuentes
  2010-01-31  9:32                               ` David Kastrup
  2010-01-31 12:41                             ` Richard Stallman
  1 sibling, 2 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-30 15:39 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

> From: Óscar Fuentes <ofv@wanadoo.es>
> Date: Sat, 30 Jan 2010 13:51:41 +0100
> 
> Nowadays, thanks to projects like LLVM, it is easy to roll an
> industrial-grade optimizing compiler if the language runtime
> requirements are not too far from C. It is straightforward to design a
> language that equals C in speed of execution and that is way more
> expressive.
> 
> Actually, some of those languages often compile applications to code
> that is faster than their C counterpart, as they are more
> optimizer-friendly.

But switching to a language that is significantly less widespread than
C would mean significantly less potential contributors.

We could learn from Texinfo experience: the next release replaces the
venerable makeinfo implementation in C with a modified texi2html,
which is written in Perl.  I suspect that, once that happens, the only
one who will hack the translator will be its author and no one else.
We shall see.





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

* Re: redisplay system of emacs
  2010-01-29 19:53                       ` Eli Zaretskii
@ 2010-01-30 18:04                         ` Stefan Monnier
  2010-01-30 18:39                           ` Stephen J. Turnbull
  0 siblings, 1 reply; 162+ messages in thread
From: Stefan Monnier @ 2010-01-30 18:04 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: paul.r.ml, Emacs-devel

>> So, yes, it's probably fairly easy to do an Emacs-like editor using
>> another extension language etc...
> I thought the issue was not creation of a new editor, but using in
> Emacs code written elsewhere for some tasks Emacs now does with code
> written specifically for it.

Given that there's no other Elisp implementation that I know of, if you
want to use one of the existing language implementations to replace
Emacs's own code...


        Stefan




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

* Re: redisplay system of emacs
  2010-01-30 18:04                         ` Stefan Monnier
@ 2010-01-30 18:39                           ` Stephen J. Turnbull
  0 siblings, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-01-30 18:39 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Eli Zaretskii, paul.r.ml, Emacs-devel

Stefan Monnier writes:

 > Given that there's no other Elisp implementation that I know of, if you
 > want to use one of the existing language implementations to replace
 > Emacs's own code...

Eh?<wink>  I think Miles might also <wink>, too ....  And Mike Sperber
and students, for that matter.

There's also librepl, used in the sawfish window manager for X11,
which was deliberately modeled on Elisp.  Obviously the domain-
specific functions will differ, but the Lisp environment was indeed
similar.





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

* Re: redisplay system of emacs
  2010-01-30 15:39                             ` Eli Zaretskii
@ 2010-01-30 19:21                               ` Óscar Fuentes
  2010-01-30 21:31                                 ` Eli Zaretskii
  2010-01-31  9:32                               ` David Kastrup
  1 sibling, 1 reply; 162+ messages in thread
From: Óscar Fuentes @ 2010-01-30 19:21 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> Nowadays, thanks to projects like LLVM, it is easy to roll an
>> industrial-grade optimizing compiler if the language runtime
>> requirements are not too far from C. It is straightforward to design a
>> language that equals C in speed of execution and that is way more
>> expressive.
>> 
>> Actually, some of those languages often compile applications to code
>> that is faster than their C counterpart, as they are more
>> optimizer-friendly.
>
> But switching to a language that is significantly less widespread than
> C would mean significantly less potential contributors.

The Emacs C codebase is, to most effects, written on a dialect of C that
requires learning by its own.

In principle, it is possible to create a language which is similar
enough to Lisp that the amount of learning it requires is similar in
magnitude to the Emacs C dialect for someone who already knows Lisp, but
being as optimizable as C and much more expressive and
maintainable. (Some people would retort that this was already tried:
that Emacs variant written on Common Lisp)

I know this is just wild dreaming given the current status of Emacs.

[snip]





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

* Re: redisplay system of emacs
  2010-01-30 10:34                       ` Fabian Ezequiel Gallina
  2010-01-30 10:52                         ` David Kastrup
@ 2010-01-30 21:18                         ` Stefan Monnier
  1 sibling, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-01-30 21:18 UTC (permalink / raw)
  To: Fabian Ezequiel Gallina; +Cc: Eli Zaretskii, Paul R, Emacs-devel

> I think Emacs Lisp is a great extension language.

It's *very* difficult to make it fast, so it leaves a lot of work on
C part of the code.


        Stefan




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

* Re: redisplay system of emacs
  2010-01-30 19:21                               ` Óscar Fuentes
@ 2010-01-30 21:31                                 ` Eli Zaretskii
  0 siblings, 0 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-01-30 21:31 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

> From: Óscar Fuentes <ofv@wanadoo.es>
> Date: Sat, 30 Jan 2010 20:21:18 +0100
> 
> > But switching to a language that is significantly less widespread than
> > C would mean significantly less potential contributors.
> 
> The Emacs C codebase is, to most effects, written on a dialect of C that
> requires learning by its own.

Yes, but that's hardly the same as learning an entirely new language.





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

* Re: redisplay system of emacs
  2010-01-30 15:39                             ` Eli Zaretskii
  2010-01-30 19:21                               ` Óscar Fuentes
@ 2010-01-31  9:32                               ` David Kastrup
  1 sibling, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-01-31  9:32 UTC (permalink / raw)
  To: emacs-devel

Eli Zaretskii <eliz@gnu.org> writes:

>> From: Óscar Fuentes <ofv@wanadoo.es>
>> 
>> Actually, some of those languages often compile applications to code
>> that is faster than their C counterpart, as they are more
>> optimizer-friendly.
>
> But switching to a language that is significantly less widespread than
> C would mean significantly less potential contributors.

The majority of Emacs is written in Elisp.  Which is significantly less
widespread than pretty much anything else.

I don't think that in the last decade or so people contributed
non-trivial C code to Emacs without knowledge of Elisp.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-01-30 12:11   ` Paul R
  2010-01-30 13:26     ` Alan Mackenzie
@ 2010-01-31 12:41     ` Richard Stallman
  2010-01-31 16:36       ` grischka
  1 sibling, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-01-31 12:41 UTC (permalink / raw)
  To: Paul R; +Cc: grishka, emacs-devel

    I don't think the word ecosystem "(...) implies the absence of intention
    and ethics", as stated in this page. It does not implie the presence of
    them either.

The term implies a stance in which intention and ethics do not enter.
Whoever takes that stance probably has some idea of ethics too, but
that stance does not treat it as pertinent.  That's the problem in the
term.

    I think they are independant concepts,

Treating them as independent is a step on the wrong path.  The first
question we should ask about a program is "Is this program ethical?"
For instance, is it free software?  If it is not free, it's unethical.

    Can you suggest an alternative word that expresses this simple, yet
    fundamental, concept ?

I think it's a secondary issue.  The reason software should be free is
because users deserve freedom.  Whether programs depend on each other
is merely a technical issue.  At most it affects the rate of some
development, but it doesn't play a role in the more basic question of
whether the development good or evil.

    Also, it is probably just cultural, but around me the word 'ecosystem'
    connotes very respected ideas, of equilibrium, sustainability, fairness.

The concept of fairness plays no role in the study of ecosystems.  We
don't ask whether it is fair for an owl to eat a mouse, or for a mouse
to eat a plant.  We just note that these interactions are part of the
system.

Real ecosystems are often not in equilibrium.  The populations of some
species can vary widely from year to year.  Some ecosystems cannot
continue without big changes.




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

* Re: redisplay system of emacs
  2010-01-30 12:51                           ` Óscar Fuentes
  2010-01-30 15:39                             ` Eli Zaretskii
@ 2010-01-31 12:41                             ` Richard Stallman
  1 sibling, 0 replies; 162+ messages in thread
From: Richard Stallman @ 2010-01-31 12:41 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: emacs-devel

    Nowadays, thanks to projects like LLVM, it is easy to roll an
    industrial-grade optimizing compiler if the language runtime
    requirements are not too far from C. It is straightforward to design a
    language that equals C in speed of execution and that is way more
    expressive.

I am skeptical.  In any case, if we use a compiled language we will
compile it with GCC.  We must support other GNU packages whenever
possible.






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

* Re: redisplay system of emacs
  2010-01-31 12:41     ` Richard Stallman
@ 2010-01-31 16:36       ` grischka
  2010-02-01 21:06         ` Richard Stallman
  0 siblings, 1 reply; 162+ messages in thread
From: grischka @ 2010-01-31 16:36 UTC (permalink / raw)
  To: rms; +Cc: Paul R, emacs-devel

Richard Stallman wrote:
>     Also, it is probably just cultural, but around me the word 'ecosystem'
>     connotes very respected ideas, of equilibrium, sustainability, fairness.
> 
> The concept of fairness plays no role in the study of ecosystems.  We
> don't ask whether it is fair for an owl to eat a mouse, or for a mouse
> to eat a plant.  We just note that these interactions are part of the
> system.

But we are not owls or mice.  Humans in between have become able
to ask whether it is fair towards other humans or future generations
or even nature, if we burn oil for energy, as an example.  We also
recognize that this is not a secondary issue but may directly impact
our freedom.

Back to software, see that COPYING is only one of many files in the
emacs-x.x.tar.bz2 that people will receive.  This means that the
freedom of this software is defined by the legal clauses as well as
by the algorithms and design in the code.

So, in my opinion it is necessary to offer the potential in the software
in a shape that allows efficient reuse for other purposes.

--- grischka





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

* Re: redisplay system of emacs
  2010-01-31 16:36       ` grischka
@ 2010-02-01 21:06         ` Richard Stallman
  2010-02-02  3:32           ` Stephen J. Turnbull
  0 siblings, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-02-01 21:06 UTC (permalink / raw)
  To: grischka; +Cc: paul.r.ml, emacs-devel

    > The concept of fairness plays no role in the study of ecosystems.  We
    > don't ask whether it is fair for an owl to eat a mouse, or for a mouse
    > to eat a plant.  We just note that these interactions are part of the
    > system.

    But we are not owls or mice.  Humans in between have become able
    to ask whether it is fair towards other humans or future generations
    or even nature, if we burn oil for energy, as an example.

Exactly.  This aspect of things is what the term "ecosystem" does not
recognize, and that's why it is better not to use that term here.




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

* Re: redisplay system of emacs
  2010-02-01 21:06         ` Richard Stallman
@ 2010-02-02  3:32           ` Stephen J. Turnbull
  2010-02-02 21:21             ` Richard Stallman
  0 siblings, 1 reply; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-02-02  3:32 UTC (permalink / raw)
  To: rms; +Cc: grischka, paul.r.ml, emacs-devel

Richard Stallman writes:
 >     > The concept of fairness plays no role in the study of ecosystems.  We
 >     > don't ask whether it is fair for an owl to eat a mouse, or for a mouse
 >     > to eat a plant.  We just note that these interactions are part of the
 >     > system.
 > 
 >     But we are not owls or mice.  Humans in between have become able
 >     to ask whether it is fair towards other humans or future generations
 >     or even nature, if we burn oil for energy, as an example.
 > 
 > Exactly.  This aspect of things is what the term "ecosystem" does not
 > recognize, and that's why it is better not to use that term here.

I really am amused by this turn of discussion, because advocates of
copyleft are in precisely the same position.  Their *amoral*,
objective analysis of human behavior is that some humans will try to
restrict the software freedom of others, and the vast majority of
those others will see no profit in resisting.  Therefore, a free
software license that *deliberately restricts* licensees' freedom is
carefully designed, a profoundly moral act.

In fact, even in the presence of copyright or patent, an individual
always has the right to choose only software under a free license, at
the cost of giving up proprietary software, thus preserving his own
freedom.  Therefore copyleft, restricting the freedom to bargain away
the "four freedoms" in return for something else of value, can be
justified morally *only* by reference to the software "ecosystem", ie,
emergent effects of your use of non-free software on my freedom.[1]

As far as I can see, opposing the use of the *word* "ecosystem" to
clarify how the analysis is conducted is simply an attempt to restrict
the field of discussion of your position and policies to ground you're
comfortable defending.

Footnotes: 
[1]  Strictly speaking, "but I *like* to apply copyleft licenses to
software I write" is an unanswerable moral justification -- but that
doesn't justify asking others to use copyleft for their work.





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

* Re: redisplay system of emacs
  2010-02-02  3:32           ` Stephen J. Turnbull
@ 2010-02-02 21:21             ` Richard Stallman
  2010-02-02 21:42               ` David Kastrup
  2010-02-03  2:48               ` Stephen J. Turnbull
  0 siblings, 2 replies; 162+ messages in thread
From: Richard Stallman @ 2010-02-02 21:21 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: grishka, paul.r.ml, emacs-devel

     > Exactly.  This aspect of things is what the term "ecosystem" does not
     > recognize, and that's why it is better not to use that term here.

    I really am amused by this turn of discussion, because advocates of
    copyleft are in precisely the same position.  Their *amoral*,
    objective analysis of human behavior

This is a paradox -- an appearance of contradiction that comes from
a misunderstanding.

The argument for copyleft comes from taking a moral stance towards the
situation in which many people do not follow our moral ideals.  It is
a fact that many people in our field take an amoral stance towards
this issue, and it is important to recognize the facts, but that is
not the same as taking an amoral stance ourselves.

By contrast, if we call our software an "ecosystem", then we take
an amoral stance.  That's what we shouldn't do.

Thus, the difference between _our stance_ and our recognition of
_others' stances_ dispels the paradox.




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

* Re: redisplay system of emacs
  2010-02-02 21:21             ` Richard Stallman
@ 2010-02-02 21:42               ` David Kastrup
  2010-02-03  0:24                 ` Lennart Borgman
  2010-02-03 13:34                 ` Richard Stallman
  2010-02-03  2:48               ` Stephen J. Turnbull
  1 sibling, 2 replies; 162+ messages in thread
From: David Kastrup @ 2010-02-02 21:42 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>      > Exactly.  This aspect of things is what the term "ecosystem" does not
>      > recognize, and that's why it is better not to use that term here.
>
>     I really am amused by this turn of discussion, because advocates of
>     copyleft are in precisely the same position.  Their *amoral*,
>     objective analysis of human behavior
>
> This is a paradox -- an appearance of contradiction that comes from
> a misunderstanding.
>
> The argument for copyleft comes from taking a moral stance towards the
> situation in which many people do not follow our moral ideals.  It is
> a fact that many people in our field take an amoral stance towards
> this issue, and it is important to recognize the facts, but that is
> not the same as taking an amoral stance ourselves.
>
> By contrast, if we call our software an "ecosystem", then we take
> an amoral stance.  That's what we shouldn't do.

The whole point is that most people can't be bothered.  You can call
that good or bad, but their use and distribution of free software is not
governed by a moral stance.  And not that of the software authors
either.  And you'll find that most contributors can't be bothered about
licensing, either.  They'll sign papers and are glad that's it.

Whether or not you take a moral stance does not imply that everybody
else in the system does.  There is enough free software that nobody
bothers anymore about morals.  People contribute to free software
because it hardly makes a difference and is what others do.  There is
lots of free software by now, and little morals.

In a similar way, the stock market trades lots of money, but most money
is traded on money rather than on goods.  Lots of money, little payout.

An emergent system.  An ecosystem with rules of its own, rules that its
originators did not plan in that manner.

> Thus, the difference between _our stance_ and our recognition of
> _others' stances_ dispels the paradox.

"our stance" is lost in the noise.  But it still gets the world
somewhere, because the noise has no direction and will get things
backwards just as often as forwards.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-02 21:42               ` David Kastrup
@ 2010-02-03  0:24                 ` Lennart Borgman
  2010-02-03  6:45                   ` David Kastrup
  2010-02-03 13:34                 ` Richard Stallman
  1 sibling, 1 reply; 162+ messages in thread
From: Lennart Borgman @ 2010-02-03  0:24 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

On Tue, Feb 2, 2010 at 10:42 PM, David Kastrup <dak@gnu.org> wrote:
>
> Whether or not you take a moral stance does not imply that everybody
> else in the system does.  There is enough free software that nobody
> bothers anymore about morals.  People contribute to free software
> because it hardly makes a difference and is what others do.  There is
> lots of free software by now, and little morals.


Maybe you are right, but there is perhaps a couple of things to notice:

- Quality: This is in my opinion a critical thing for free software.
If the quality is not good enough it will be a burdon to use free
software. This is a moral question then, especially since there are
still people that needs free software because of the cost.

- Future constraints: I think we should not forget about the
possibility of future restraints. All the evil attachs on the internet
gives arguments to restrict free software. I believe they will be
used. The way to meat that threat and protect integrity and freedom is
(again) quality.




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

* Re: redisplay system of emacs
  2010-02-02 21:21             ` Richard Stallman
  2010-02-02 21:42               ` David Kastrup
@ 2010-02-03  2:48               ` Stephen J. Turnbull
  2010-02-03 12:19                 ` Juanma Barranquero
  2010-02-03 13:34                 ` Richard Stallman
  1 sibling, 2 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-02-03  2:48 UTC (permalink / raw)
  To: rms; +Cc: grishka, paul.r.ml, emacs-devel

Richard Stallman writes:
 >      > Exactly.  This aspect of things is what the term "ecosystem" does not
 >      > recognize, and that's why it is better not to use that term here.
 > 
 >     I really am amused by this turn of discussion, because advocates of
 >     copyleft are in precisely the same position.  Their *amoral*,
 >     objective analysis of human behavior
 > 
 > This is a paradox -- an appearance of contradiction that comes from
 > a misunderstanding.

But the misunderstanding is yours.

 > The argument for copyleft comes from taking a moral stance towards the
 > situation in which many people do not follow our moral ideals.  It is
 > a fact that many people in our field take an amoral stance towards
 > this issue, and it is important to recognize the facts, but that is
 > not the same as taking an amoral stance ourselves.

Of course it's not.  But taking a moral stance does not imply taking
*your* moral stance.  There are other moral stances, and those who
hold them are often as fervent about them as you are about yours.  The
choice is not between your moral stance and an amoral stance; it is
among many moral stances (including the extreme case of an amoral
stance).

In particular, use of the word "ecosystem" is typically a signal that
the person is taking a moral stance that values relationships and
stability thereof.  Depending on the person, it is sometimes more,
sometimes less than they value software freedom.  (And sometimes more,
sometimes less than they value freedom of any kind.)

 > By contrast, if we call our software an "ecosystem", then we take
 > an amoral stance.  That's what we shouldn't do.

Of course we *should* take an amoral stance in explaining "how things
work".  It is madness to try to apply "should" to the facts.

And I don't know what you mean by "our software" (use of possessives
by a free software advocate? tut-tut!), but if there exists a separate
body of "their software", then it is technically incorrect to call
"our software" an "ecosystem".  Ecosystems are *closed* systems, but
software has a strong tendency to become related to other software.
Unless you are speaking of all software, it's not big enough to be an
ecosystem.

 > Thus, the difference between _our stance_ and our recognition of
 > _others' stances_ dispels the paradox.

No, it doesn't, because it doesn't explain why you refuse to use a
single word, "ecosystem", that emphasizes the existence of variety
(including but not restricted to variety of moral stances) and the
behavioral interactions that entails.  See also David's response.




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

* Re: redisplay system of emacs
  2010-02-03  0:24                 ` Lennart Borgman
@ 2010-02-03  6:45                   ` David Kastrup
  0 siblings, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-02-03  6:45 UTC (permalink / raw)
  To: emacs-devel

Lennart Borgman <lennart.borgman@gmail.com> writes:

> On Tue, Feb 2, 2010 at 10:42 PM, David Kastrup <dak@gnu.org> wrote:
>>
>> Whether or not you take a moral stance does not imply that everybody
>> else in the system does.  There is enough free software that nobody
>> bothers anymore about morals.  People contribute to free software
>> because it hardly makes a difference and is what others do.  There is
>> lots of free software by now, and little morals.
>
>
> Maybe you are right, but there is perhaps a couple of things to notice:
>
> - Quality: This is in my opinion a critical thing for free software.

It is because most people can't be bothered about freedom.

> If the quality is not good enough it will be a burdon to use free
> software. This is a moral question then, especially since there are
> still people that needs free software because of the cost.

Free software is not about cost.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-03  2:48               ` Stephen J. Turnbull
@ 2010-02-03 12:19                 ` Juanma Barranquero
  2010-02-04 11:00                   ` Richard Stallman
  2010-02-03 13:34                 ` Richard Stallman
  1 sibling, 1 reply; 162+ messages in thread
From: Juanma Barranquero @ 2010-02-03 12:19 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: grishka, paul.r.ml, rms, emacs-devel

On Wed, Feb 3, 2010 at 03:48, Stephen J. Turnbull <stephen@xemacs.org> wrote:

> Of course we *should* take an amoral stance in explaining "how things
> work".  It is madness to try to apply "should" to the facts.

Glad to hear someone say this. "ecosystem" is a description, or a
label, of a kind of process; what their participants think or want is
irrelevant *to the description*. Perhaps wolves have long
philosophical discussions among them about the need and ethics of
eating rabbits; that will affect *how* the ecosystem evolves, not
whether it *is* an ecosystem or not. Those that study the software
ecosystem can, and likely do, write long dissertations about the
effect of free software on the system, but surely not about the
labeling of the system per se.

    Juanma




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

* Re: redisplay system of emacs
  2010-02-02 21:42               ` David Kastrup
  2010-02-03  0:24                 ` Lennart Borgman
@ 2010-02-03 13:34                 ` Richard Stallman
  2010-02-03 14:15                   ` David Kastrup
  1 sibling, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-02-03 13:34 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

    > By contrast, if we call our software an "ecosystem", then we take
    > an amoral stance.  That's what we shouldn't do.

    The whole point is that most people can't be bothered.  You can call
    that good or bad, but their use and distribution of free software is not
    governed by a moral stance.

That is how things are.  The point is, we are trying to change how
things are, not just observe.

    Whether or not you take a moral stance does not imply that everybody
    else in the system does.

Our mission is to lead them, not imitate them.




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

* Re: redisplay system of emacs
  2010-02-03  2:48               ` Stephen J. Turnbull
  2010-02-03 12:19                 ` Juanma Barranquero
@ 2010-02-03 13:34                 ` Richard Stallman
  2010-02-03 17:26                   ` Stephen J. Turnbull
  1 sibling, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-02-03 13:34 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: grishka, paul.r.ml, emacs-devel

     > This is a paradox -- an appearance of contradiction that comes from
     > a misunderstanding.

    But the misunderstanding is yours.

I chose not to cast blame for it; I tried to point out the shift of
topic in a way that didn't criticize anyone.

It is clear that the shift came from you.  Your message was a response
to mine, and it shifted the topic subject in the way I described --
from whether we are amoral, to whether others are.  However, I am not
trying to castigate you for that.  Your message claimed to show a
contradiction in the free software philosophy, but my aim is not to
counterattack, only to show there is no contradiction.

    Of course it's not.  But taking a moral stance does not imply taking
    *your* moral stance.

This particular moral stance is that of the free software movement and
the GNU Project.  This project is based on that stance.

You are entitled to your own views, of course.

    No, it doesn't, because it doesn't explain why you refuse to use a
    single word, "ecosystem", that emphasizes the existence of variety
    (including but not restricted to variety of moral stances) and the
    behavioral interactions that entails.

People distribute and use software in a variety of ways; that is the
present situation.  We say some are good and some are bad.  Our goal
is to put an end to the one that are bad.

The term "ecosystem" is unhelpful for this goal because it implies a
nonjudgmental approach to that variety, and our whole purpose is based
on judging them.




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

* Re: redisplay system of emacs
  2010-02-03 13:34                 ` Richard Stallman
@ 2010-02-03 14:15                   ` David Kastrup
  2010-02-03 14:18                     ` Daniel Colascione
  0 siblings, 1 reply; 162+ messages in thread
From: David Kastrup @ 2010-02-03 14:15 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     > By contrast, if we call our software an "ecosystem", then we take
>     > an amoral stance.  That's what we shouldn't do.
>
>     The whole point is that most people can't be bothered.  You can call
>     that good or bad, but their use and distribution of free software is not
>     governed by a moral stance.
>
> That is how things are.  The point is, we are trying to change how
> things are, not just observe.

We won't change the way how things are by calling them what we'd want
them to be instead.

> Our mission is to lead them, not imitate them.

You can't lead anybody by telling him that he already is where you want
him to be.  In particular if he isn't.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-03 14:15                   ` David Kastrup
@ 2010-02-03 14:18                     ` Daniel Colascione
  2010-02-04 11:01                       ` Richard Stallman
  0 siblings, 1 reply; 162+ messages in thread
From: Daniel Colascione @ 2010-02-03 14:18 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 2/3/10 9:15 AM, David Kastrup wrote:
> We won't change the way how things are by calling them what we'd want
> them to be instead.

Recent political history would suggest that you are incorrect here.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEARECAAYFAktphbwACgkQ17c2LVA10VtZ5ACgsvFSDk9bpViJ+ATD354Ufez2
hyQAnjIyySzwJNHlmWnBdrf4IJcZKPuJ
=lmyx
-----END PGP SIGNATURE-----




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

* Re: redisplay system of emacs
  2010-02-03 13:34                 ` Richard Stallman
@ 2010-02-03 17:26                   ` Stephen J. Turnbull
  2010-02-03 17:45                     ` David Kastrup
                                       ` (3 more replies)
  0 siblings, 4 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-02-03 17:26 UTC (permalink / raw)
  To: rms; +Cc: grishka, paul.r.ml, emacs-devel

Richard Stallman writes:

 >      > This is a paradox -- an appearance of contradiction that
 >      > comes from a misunderstanding.
 > 
 >     But the misunderstanding is yours.
 > 
 > I chose not to cast blame for it; I tried to point out the shift of
 > topic in a way that didn't criticize anyone.

Indeed you did.  But that was not possible for me, since I needed to
contradict your explicit claim that my position is due to a
misunderstanding.  That being so, I might as well make my criticism
explicit.

 > It is clear that the shift came from you.

There was no shift.

You see?  Even though I used passive phrasing this time, the criticism
is unmistakable.

 > Your message was a response to mine, and it shifted the topic
 > subject in the way I described -- from whether we are amoral, to
 > whether others are.

No, it did not.  Some others are amoral (and occasionally even
immoral), but that is a fact.  We are moral (if occasionally we slip),
and that is also a fact.  Who is amoral is simply not in question as
far as I can see.  My claim is that use of the word "ecosystem"
does not imply an amoral stance, and therefore we may use it.

The point is that "ecosystem" describes only one aspect of the
phenomenon of software development.  That aspect is not very
self-conscious and therefore amoral.  Nevertheless, it is powerful and
we should include it in our reckoning when we consider what kinds of
actions will advance our moral goals.  The word "ecosystem" is an aid
to that reckoning, and indeed used properly can be very persuasive, to
certain people, against copyright and patent.

 > Your message claimed to show a contradiction in the free software
 > philosophy, but my aim is not to counterattack, only to show there
 > is no contradiction.

Excuse me?  I did not mention "contradiction".  There is some kind of
misunderstanding here.  I described a similarity of the argument used
to justify copyleft to the kind of argument that uses the word
"ecosystem".  But that does not imply a philosophical contradiction in
your deprecation of the word "ecosystem".

 >     But taking a moral stance does not imply taking *your* moral
 >     stance.
 > 
 > This particular moral stance is that of the free software movement
 > and the GNU Project.  This project is based on that stance.

Certainly, and equally certainly I made no claim to the contrary.  But
I do claim that having a particular moral stance does not entitle you
to call other moral stances "amoral".

 > The term "ecosystem" is unhelpful for this goal because it implies a
 > nonjudgmental approach to that variety, and our whole purpose is based
 > on judging them.

The last part of that sentence doesn't make sense to me.

I disagree that it's non-judgmental.  Preserving ecosystems is a
positive value.  Interfering with their natural flows, as copyright
and patent clearly do in the realm of software, is bad, just as bad as
any pollution of our biological environment.

As for being unhelpful, understanding the existing modes of the
software distribution system as an ecosystem cannot replace advocacy
of software freedom for its own sake.  But it can be complementary.
It is important to the movement that people (inside and outside the
movement) understand that successes like the Linux kernel, the Apache
webserver, and the Mozilla web browser are not flukes.  These programs
were not written by "two genius programmers in a garage".  These
programs were written by a cast of thousands, including contributions
from some of the most ruthless users ("abusers", if you prefer) of
"intellectual property rights" in the world.

And they weren't written by radical reformers with a social agenda,
either.  The contribution of the GNU project is essential, as history
and the current social environment make it all too likely that the
cause of freedom will be ignored if nobody makes a point of freedom.
But the success of freely-licensed software without a social agenda is
our hope for a victory within the current term of copyright :-/, and
a proof of righteousness, if you like.

Sharing software freely *is* the natural state and equilibrium of the
"software ecosystem".  Distorting that equilibrium is wrong, morally
wrong.  Not in the same way nor to the same degree as violating
fundamental human rights, but it's still wrong.

You will probably respond that this is a variation on the Raymondist
heresy.  True, it's not an argument that software freedom is a basic
human right.  But it's different from Raymondism.  "Open source" is
based on an economic argument that software freedom is profitable.
The argument from the ecosystem is that software freedom is natural,
and that disturbing its equilibrium is *wrong*.  This is more closely
related to, and complementary to, the argument from freedom as a right
than it is to economism.

Regards,




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

* Re: redisplay system of emacs
  2010-02-03 17:26                   ` Stephen J. Turnbull
@ 2010-02-03 17:45                     ` David Kastrup
  2010-02-03 18:35                     ` grischka
                                       ` (2 subsequent siblings)
  3 siblings, 0 replies; 162+ messages in thread
From: David Kastrup @ 2010-02-03 17:45 UTC (permalink / raw)
  To: emacs-devel

"Stephen J. Turnbull" <stephen@xemacs.org> writes:

> I disagree that it's non-judgmental.  Preserving ecosystems is a
> positive value.

No, it isn't.  Underdeveloped countries have a stable ecosystem of
enough people dying early due to scarcity of resources that population
is maintained.  Or at least they had until their land became "owned" and
the flow of money meant that it was more effective to starve them
completely and use the land for producing lifestock fodder for the
countries delivering the guns to the "land owners".

Preserving the preexisting ecosystem would not have been a positive
value.  A positive value would have been giving (rather than taking)
them the means to improve their manner of living.

There are complex and stable ecosystems with parasites passing through a
multiple number of hosts in their development.

Preserving those is not a positive value.

Proprietary software has its own ecosystems.  Preserving those is not
the aim of the FSF and others.

And free software also has its ecosystems.  Not all of that which
happens in those systems is desirable.

But that does not mean that the term is inappropriate to describe
phenomena which are not planned, but make for dynamics beyond the
individual control of the software creators.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-03 17:26                   ` Stephen J. Turnbull
  2010-02-03 17:45                     ` David Kastrup
@ 2010-02-03 18:35                     ` grischka
  2010-02-03 18:36                     ` Óscar Fuentes
  2010-02-04 11:01                     ` Richard Stallman
  3 siblings, 0 replies; 162+ messages in thread
From: grischka @ 2010-02-03 18:35 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: paul.r.ml, rms, emacs-devel

Stephen J. Turnbull wrote:
> Nevertheless, it is powerful and
> we should include it in our reckoning when we consider what kinds of
> actions will advance our moral goals.  The word "ecosystem" is an aid
> to that reckoning, and indeed used properly can be very persuasive, to
> certain people, against copyright and patent.

Yep.  Just as a matter of lingual ecology such powerful term must be
reused and not be thrown away easily.

--- grischka





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

* Re: redisplay system of emacs
  2010-02-03 17:26                   ` Stephen J. Turnbull
  2010-02-03 17:45                     ` David Kastrup
  2010-02-03 18:35                     ` grischka
@ 2010-02-03 18:36                     ` Óscar Fuentes
  2010-02-03 19:03                       ` Lennart Borgman
  2010-02-04  8:23                       ` Stephen J. Turnbull
  2010-02-04 11:01                     ` Richard Stallman
  3 siblings, 2 replies; 162+ messages in thread
From: Óscar Fuentes @ 2010-02-03 18:36 UTC (permalink / raw)
  To: emacs-devel; +Cc: rms

"Stephen J. Turnbull" <stephen@xemacs.org> writes:

[snip]

> "Open source" is
> based on an economic argument that software freedom is profitable.

About this specific topic, is there any serious economic analysis of
Free Software? Because it is not clear to me that some people would get
the software they need on the world envisioned by the FSF.

[snip]





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

* Re: redisplay system of emacs
  2010-02-03 18:36                     ` Óscar Fuentes
@ 2010-02-03 19:03                       ` Lennart Borgman
  2010-02-03 20:31                         ` Ted Zlatanov
  2010-02-04  8:23                       ` Stephen J. Turnbull
  1 sibling, 1 reply; 162+ messages in thread
From: Lennart Borgman @ 2010-02-03 19:03 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: rms, emacs-devel

On Wed, Feb 3, 2010 at 7:36 PM, Óscar Fuentes <ofv@wanadoo.es> wrote:
> "Stephen J. Turnbull" <stephen@xemacs.org> writes:
>
> [snip]
>
>> "Open source" is
>> based on an economic argument that software freedom is profitable.
>
> About this specific topic, is there any serious economic analysis of
> Free Software? Because it is not clear to me that some people would get
> the software they need on the world envisioned by the FSF.


I do not know of any, but it is an interesting subject.

Doing a reasonable economic analysis is difficult and it seems like it
often fails. Compare for example todays news: 37 miljon US citizens
need economic help to get the most basic food they need. Something
must be utterly wrong in an economic analysis that leads to such a
situation.

To me the important factor to analys today is redistribution because
that is where the market economy fails. Redistribution means
redistribution of power. Economic power. Political power. Power to
tell about experiences.

I think for some of us there is an ethical problem that when trying to
help with free software we can't avoid also helping those we think is
fighting against freedom. But it is the net effect that counts in the
end. An economical analysis should look upon that.

I could go on writing about this, but I guess it would be
uninteresting here ... ;-)




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

* Re: redisplay system of emacs
  2010-02-03 19:03                       ` Lennart Borgman
@ 2010-02-03 20:31                         ` Ted Zlatanov
  2010-02-03 20:37                           ` Lennart Borgman
  0 siblings, 1 reply; 162+ messages in thread
From: Ted Zlatanov @ 2010-02-03 20:31 UTC (permalink / raw)
  To: emacs-devel

On Wed, 3 Feb 2010 20:03:47 +0100 Lennart Borgman <lennart.borgman@gmail.com> wrote: 

LB> Doing a reasonable economic analysis is difficult and it seems like it
LB> often fails. Compare for example todays news: 37 miljon US citizens
LB> need economic help to get the most basic food they need. Something
LB> must be utterly wrong in an economic analysis that leads to such a
LB> situation.

The right way to state it:

"37 million US citizens are losing weight.  Want to know the secret?"

Only half-joking...

Ted





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

* Re: redisplay system of emacs
  2010-02-03 20:31                         ` Ted Zlatanov
@ 2010-02-03 20:37                           ` Lennart Borgman
  0 siblings, 0 replies; 162+ messages in thread
From: Lennart Borgman @ 2010-02-03 20:37 UTC (permalink / raw)
  To: Ted Zlatanov; +Cc: emacs-devel

2010/2/3 Ted Zlatanov <tzz@lifelogs.com>:
> On Wed, 3 Feb 2010 20:03:47 +0100 Lennart Borgman <lennart.borgman@gmail.com> wrote:
>
> LB> Doing a reasonable economic analysis is difficult and it seems like it
> LB> often fails. Compare for example todays news: 37 miljon US citizens
> LB> need economic help to get the most basic food they need. Something
> LB> must be utterly wrong in an economic analysis that leads to such a
> LB> situation.
>
> The right way to state it:
>
> "37 million US citizens are losing weight.  Want to know the secret?"
>
> Only half-joking...


Those who want to loose weight might want to try my little pause.el
instead... ;-)

   http://bazaar.launchpad.net/~nxhtml/nxhtml/main/annotate/head%3A/util/pause.el




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

* Re: redisplay system of emacs
  2010-02-03 18:36                     ` Óscar Fuentes
  2010-02-03 19:03                       ` Lennart Borgman
@ 2010-02-04  8:23                       ` Stephen J. Turnbull
  2010-02-04 23:18                         ` Richard Stallman
  1 sibling, 1 reply; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-02-04  8:23 UTC (permalink / raw)
  To: Óscar Fuentes; +Cc: rms, emacs-devel

Óscar Fuentes writes:

 > About this specific topic, is there any serious economic analysis of
 > Free Software?

Yes.  There is list on the FSF's web site, but it was chosen for
political correctness and some of it is trash, while the rest should
be considered extremely controversial.  There isn't much that's
reliably known, even 15 years or so into the research program.

If you're interested in following up, write me off-list; this thread
has gotten way out of hand.





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

* Re: redisplay system of emacs
  2010-02-03 12:19                 ` Juanma Barranquero
@ 2010-02-04 11:00                   ` Richard Stallman
  2010-02-04 11:06                     ` Juanma Barranquero
  0 siblings, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-02-04 11:00 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: stephen, paul.r.ml, grishka, emacs-devel

    Glad to hear someone say this. "ecosystem" is a description, or a
    label, of a kind of process; what their participants think or want is
    irrelevant *to the description*.

If we only wanted to study and describe them, "ecosystem" would be a
suitable term.  However, describing them is just secondary issue for
our main concern which is to make them more ethical.





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

* Re: redisplay system of emacs
  2010-02-03 17:26                   ` Stephen J. Turnbull
                                       ` (2 preceding siblings ...)
  2010-02-03 18:36                     ` Óscar Fuentes
@ 2010-02-04 11:01                     ` Richard Stallman
  2010-02-04 11:38                       ` David Kastrup
  2010-02-04 12:28                       ` Stephen J. Turnbull
  3 siblings, 2 replies; 162+ messages in thread
From: Richard Stallman @ 2010-02-04 11:01 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: grishka, paul.r.ml, emacs-devel

    The point is that "ecosystem" describes only one aspect of the
    phenomenon of software development.  That aspect is not very
    self-conscious and therefore amoral.  Nevertheless, it is powerful and
    we should include it in our reckoning when we consider what kinds of
    actions will advance our moral goals.

We already do take account of others' tendencies (whatever their
basis) when they are relevant to our decisions.

However, using the term "ecosystem" to refer to them would shift the
way WE frame the issues, from a moral/political one to an amoral
nonjudgmental one.  That is what we should not do.

    Excuse me?  I did not mention "contradiction".  There is some kind of
    misunderstanding here.  I described a similarity of the argument used
    to justify copyleft to the kind of argument that uses the word
    "ecosystem".

You didn't use the word "contradiction" but that was implicit
in the argument you made.  You attacked, I refuted, and now you
deny the attack.


We do not want to "preserve" the software "ecosystem".  On the contrary,
our aim is to eliminate part of it.  If you want a biological analogy
for what we do, the eradication of smallpox is a good example.




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

* Re: redisplay system of emacs
  2010-02-03 14:18                     ` Daniel Colascione
@ 2010-02-04 11:01                       ` Richard Stallman
  0 siblings, 0 replies; 162+ messages in thread
From: Richard Stallman @ 2010-02-04 11:01 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: dak, emacs-devel

You have noticed how words affect people's thoughts.

I recommend people read Lakoff's articles about how the words used
to frame issues affect politics.




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

* Re: redisplay system of emacs
  2010-02-04 11:00                   ` Richard Stallman
@ 2010-02-04 11:06                     ` Juanma Barranquero
  2010-02-05 12:44                       ` Richard Stallman
  0 siblings, 1 reply; 162+ messages in thread
From: Juanma Barranquero @ 2010-02-04 11:06 UTC (permalink / raw)
  To: rms; +Cc: stephen, paul.r.ml, grishka, emacs-devel

> If we only wanted to study and describe them, "ecosystem" would be a
> suitable term.  However, describing them is just secondary issue for
> our main concern which is to make them more ethical.

Then, it would be more reasonable to spend time and energy discussing
why or how do we try to make it more ethical, instead of alienating
people by confusing the terminology, which is both already in place,
and correct.

    Juanma




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

* Re: redisplay system of emacs
  2010-02-04 11:01                     ` Richard Stallman
@ 2010-02-04 11:38                       ` David Kastrup
  2010-02-05 19:08                         ` Richard Stallman
  2010-02-04 12:28                       ` Stephen J. Turnbull
  1 sibling, 1 reply; 162+ messages in thread
From: David Kastrup @ 2010-02-04 11:38 UTC (permalink / raw)
  To: emacs-devel

Richard Stallman <rms@gnu.org> writes:

>     The point is that "ecosystem" describes only one aspect of the
>     phenomenon of software development.  That aspect is not very
>     self-conscious and therefore amoral.  Nevertheless, it is powerful and
>     we should include it in our reckoning when we consider what kinds of
>     actions will advance our moral goals.
>
> We already do take account of others' tendencies (whatever their
> basis) when they are relevant to our decisions.
>
> However, using the term "ecosystem" to refer to them would shift the
> way WE frame the issues, from a moral/political one to an amoral
> nonjudgmental one.  That is what we should not do.

I don't see that.  The main point of freedom is that it benefits
everyone, including those who don't fight for it.

Do we really want to spread the impression that we don't want to have
anybody benefit from free software that does not agree with our own
values and moral stances?

The GPL creates a pool of free software shielded from proprietarization
of essential freedoms.  Do we really want to spread the idea that it is
immoral to prefer using free software unless you share our morals, and
that you should rather go elsewhere than benefit from it?

Freedom is not just for fighters.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-04 11:01                     ` Richard Stallman
  2010-02-04 11:38                       ` David Kastrup
@ 2010-02-04 12:28                       ` Stephen J. Turnbull
  1 sibling, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-02-04 12:28 UTC (permalink / raw)
  To: rms; +Cc: grishka, paul.r.ml, emacs-devel

Richard Stallman writes:

 >     Excuse me?  I did not mention "contradiction".
 > 
 > You didn't use the word "contradiction" but that was implicit
 > in the argument you made.  You attacked, I refuted, and now you
 > deny the attack.

I did not then and do not now deny that it was an "attack" of sorts.
Attacking is a fault of mine, I admit that.  But I have already told
you that as far as I'm concerned the "contradiction" interpretation is
untenable.  You are defending against an attack that never came.

As for the rest of your post, it's clear that my points have long
since been made: they have been constructively addressed by others.  I
see no point in continuing this thread, as nobody will profit from
doing so.




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

* Re: redisplay system of emacs
  2010-02-04  8:23                       ` Stephen J. Turnbull
@ 2010-02-04 23:18                         ` Richard Stallman
  2010-02-05  5:46                           ` Stephen J. Turnbull
  0 siblings, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-02-04 23:18 UTC (permalink / raw)
  To: Stephen J. Turnbull; +Cc: ofv, emacs-devel

    Yes.  There is list on the FSF's web site, but it was chosen for
    political correctness and some of it is trash, 

Name calling like this says more about your hostility than about us.

If you want to argue against the GNU Project's philosophy, please
use gnu.misc.discuss.  If you want to just call names, please do it
outside our lists.





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

* Re: redisplay system of emacs
  2010-02-04 23:18                         ` Richard Stallman
@ 2010-02-05  5:46                           ` Stephen J. Turnbull
  0 siblings, 0 replies; 162+ messages in thread
From: Stephen J. Turnbull @ 2010-02-05  5:46 UTC (permalink / raw)
  To: rms; +Cc: ofv, emacs-devel

Richard Stallman writes:

 >     Yes.  There is list on the FSF's web site, but it was chosen for
 >     political correctness and some of it is trash, 
 > 
 > Name calling like this says more about your hostility than about us.

Ad hominem attacks say more about you than they do about me.  There
are people here searching for truth, and such usage is only going to
offend them and make them distrust you on this subject.  I imagine my
many "fans" will be quite amused at you taking me down this way, but
is it really worth it?

Having said that, I am indeed in error.  Going back for confirmation,
I could not find the list I referred to.  The article, indirectly
linked from www.fsf.org, at

          http://endsoftpatents.org/resources-for-economists

is in fact balanced, citing well-done research on both sides of the
aisle.  The page itself is well-written and presents a very difficult
but crucial issue (the "null-result bias" of statistical practice)
quite clearly, though with a slight amount of exaggeration (most
harmless).  The fact that it comes to the conclusion that patents are
bad is neither surprising nor evidence of bias; it's quite reasonable
based on the works cited, which are well-known in the field.

However, it is quite limited, though it would be a reasonable starting
point for a study of patent economics.  It is very much focused on
patents, refers mostly to resources which are either in print or
probably electronically available only with a subscription, and
doesn't really present a starting point for the study the OP seems
interested in.

The list of third-party resources at

         http://www.gnu.org/philosophy/third-party-ideas.html

is less balanced, but describes itself as a list of opinions.  This is
not problematic, either, but the OP probably will find nothing that
really addresses his question.

I do not know where the much more extensive list I recall went.  It
linked or cited a number of articles based on anecdotes of people
whose works were suppressed by the copyright or patent laws which
lacked generalizable analysis, as well as the extremely controversial
and flawed theoretical analysis by Boldrin and Levine (a
representative selection is _Perfectly Competitive Innovation_ <URL
http://levine.sscnet.ucla.edu/papers/pci_august06.pdf>, although I'm
not sure that was the work cited in the FSF's list).  Maybe it was an
earlier version of resources-for-economists that was hosted on
www.fsf.org.

In any case, as far as I can tell that list no longer exists on an
FSF-related site.  I apologize for the misinformation, and thank you
(as a representative of the FSF) for "taking out the trash".

Sincerely yours,





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

* Re: redisplay system of emacs
  2010-02-04 11:06                     ` Juanma Barranquero
@ 2010-02-05 12:44                       ` Richard Stallman
  2010-02-05 18:37                         ` grischka
  0 siblings, 1 reply; 162+ messages in thread
From: Richard Stallman @ 2010-02-05 12:44 UTC (permalink / raw)
  To: Juanma Barranquero; +Cc: stephen, paul.r.ml, grishka, emacs-devel

    Then, it would be more reasonable to spend time and energy discussing
    why or how do we try to make it more ethical, instead of alienating
    people by confusing the terminology, which is both already in place,
    and correct.

To influence people we need to present arguments, and we do.  We also
need to choose our words to frame the issues in the right way, and we
do that too.

"Ecosystem" frames the issue according to an outlook that disagrees
with ours, so we don't use it.  The fact that other people use it is
no reason we should.  Perhaps they disagree with our basic outlook.
They have a right to their views, but it makes no sense for us to use
terms which promote their outlook.




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

* Re: redisplay system of emacs
  2010-02-05 12:44                       ` Richard Stallman
@ 2010-02-05 18:37                         ` grischka
  0 siblings, 0 replies; 162+ messages in thread
From: grischka @ 2010-02-05 18:37 UTC (permalink / raw)
  To: rms; +Cc: Juanma Barranquero, stephen, paul.r.ml, emacs-devel

Richard Stallman wrote:
>     Then, it would be more reasonable to spend time and energy discussing
>     why or how do we try to make it more ethical, instead of alienating
>     people by confusing the terminology, which is both already in place,
>     and correct.
> 
> To influence people we need to present arguments, and we do.  We also
> need to choose our words to frame the issues in the right way, and we
> do that too.
> 
> "Ecosystem" frames the issue according to an outlook that disagrees
> with ours, so we don't use it.  The fact that other people use it is
> no reason we should.  Perhaps they disagree with our basic outlook.
> They have a right to their views, but it makes no sense for us to use
> terms which promote their outlook.
> 

You may have noticed that nowadays the term "ecosystem" covers
very well the "ideas of ethical responsibility" as enumerated at
    http://www.gnu.org/philosophy/words-to-avoid.html#Ecosystem
It is true however that we need to carefully avoid cheap biological
and evolutionary analogies.

In any case, it is a total mystery to me how you wanted to stop
your fellow software people to extend their native thinking in
terms of systems onto non-technical areas, eventually.

If that is not your outlook, what is your outlook then?  How do
you suppose to promote freedom with software if not in terms of
its nature, that is defining systems?

--- grischka




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

* Re: redisplay system of emacs
  2010-02-04 11:38                       ` David Kastrup
@ 2010-02-05 19:08                         ` Richard Stallman
  0 siblings, 0 replies; 162+ messages in thread
From: Richard Stallman @ 2010-02-05 19:08 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

    I don't see that.  The main point of freedom is that it benefits
    everyone, including those who don't fight for it.

Freedom is a benefit for everyone who has freedom, including those who
don't fight for it.  But we have a fight on our hands, and if we want
to win it, we need to encourange more people to fight for freedom.
We need to present a clear example of judging the right and
wrong of the things people do in the software field.

      Do we really want to spread the idea that it is
    immoral to prefer using free software unless you share our morals,

We never say that.




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

* Re: redisplay system of emacs
  2010-01-28  0:19 redisplay system of emacs alin.s
                   ` (2 preceding siblings ...)
  2010-01-28 12:10 ` Stephen J. Turnbull
@ 2010-02-12  8:31 ` alin.s
  2010-02-12 12:10   ` Juanma Barranquero
  2010-02-12 12:49   ` Jan Djärv
  3 siblings, 2 replies; 162+ messages in thread
From: alin.s @ 2010-02-12  8:31 UTC (permalink / raw)
  To: Emacs-devel


An improvement in redisplay for X can be done by defining in the edit area of
every window a subwindow for every character. For a window of geometry
200x70 of characters, it would be 1400 windows registered in X-server.

The advantage is that redisplay would work automatically; every character
has associated its own expose event; the event PointerMotionMask would
simply signify LeaveWindow and EnterWindow; so it will always be able to be
captured without resource consuming.

To say more, in order to clear a character it would require no computation,
but only a simply call of XClearWindow().

Every window could have its own font.

And to say more, an image of high dimension will be divided in many
subwindows, and emacs will be able to display images normally, not as a huge
glyph.

And finally, because this structure is identical to the geometry of the
console, the code for X and console can be unified in many places.

-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27560255.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12  8:31 ` alin.s
@ 2010-02-12 12:10   ` Juanma Barranquero
  2010-02-12 13:41     ` alin.s
  2010-02-12 12:49   ` Jan Djärv
  1 sibling, 1 reply; 162+ messages in thread
From: Juanma Barranquero @ 2010-02-12 12:10 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

On Fri, Feb 12, 2010 at 09:31, alin.s <alinsoar@voila.fr> wrote:

> An improvement in redisplay for X can be done by defining in the edit area of
> every window a subwindow for every character. For a window of geometry
> 200x70 of characters, it would be 1400 windows registered in X-server.

Wouldn't that be 14,000?

    Juanma




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

* Re: redisplay system of emacs
  2010-02-12  8:31 ` alin.s
  2010-02-12 12:10   ` Juanma Barranquero
@ 2010-02-12 12:49   ` Jan Djärv
  2010-02-12 13:30     ` alin.s
  1 sibling, 1 reply; 162+ messages in thread
From: Jan Djärv @ 2010-02-12 12:49 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

alin.s skrev:
> An improvement in redisplay for X can be done by defining in the edit area of
> every window a subwindow for every character. For a window of geometry
> 200x70 of characters, it would be 1400 windows registered in X-server.

You are mad.  Everything would be 1400 times more.  1400 times more calls to 
the X server, 1400 times more GC:s created, 1400 times more events from the X 
server, 1400 times more Xft structures (XftDraws for example) created.
Emacs would be at least 1400 times slower.

> 
> The advantage is that redisplay would work automatically; every character
> has associated its own expose event; the event PointerMotionMask would
> simply signify LeaveWindow and EnterWindow; so it will always be able to be
> captured without resource consuming.

But Emacs still needs to figure out what character that is in that window in 
order to redraw it.

> 
> To say more, in order to clear a character it would require no computation,
> but only a simply call of XClearWindow().
> 
> Every window could have its own font.

So say we have 1400 windows each with a different font with a different size? 
  How do you purpose we lay this out?  Instead of laying out characters we are 
now laying out windows.  Same problem, but with an enormous overhead.

> 
> And to say more, an image of high dimension will be divided in many
> subwindows, and emacs will be able to display images normally, not as a huge
> glyph.

Again, making the display of an image to be so much slower, because instead of 
one (ideally), call to the X server, we now have one per window.  And what a 
nightmare to figure out what part of an image that needs to be redrawn and 
moved if the user changes the size of the Emacs frame...

> 
> And finally, because this structure is identical to the geometry of the
> console, the code for X and console can be unified in many places.
> 

Not very likely.

Did 1:st of April arrive early?

	Jan D.




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

* Re: redisplay system of emacs
  2010-02-12 12:49   ` Jan Djärv
@ 2010-02-12 13:30     ` alin.s
  2010-02-12 14:25       ` Jan Djärv
  0 siblings, 1 reply; 162+ messages in thread
From: alin.s @ 2010-02-12 13:30 UTC (permalink / raw)
  To: Emacs-devel




alin.s skrev:
> An improvement in redisplay for X can be done by defining in the edit area
> of
> every window a subwindow for every character. For a window of geometry
> 200x70 of characters, it would be 1400 windows registered in X-server.

You are mad.  Everything would be 1400 times more.  1400 times more calls to 
the X server, 1400 times more GC:s created, 1400 times more events from the
X 
server, 1400 times more Xft structures (XftDraws for example) created.
Emacs would be at least 1400 times slower.

The computations are not done as you say. Please read the X windows manual.

If you make 1000 identical calls of Xlib functions, Xlib put them into its
queue, and send them once.

On the other side, taking into account that I forgot a ZERO, we could have
many times calls to Xlib, but anyways, not too much, taking into account the
queue of Xlib.

I do not know what is bad to keep in the server 100.000 of little
structures. Apart from memory consuming, no problem of speed.

You do not need 14.000 Graphics Contextes, only 1 for window is enough!

It is not 14000 times slower, it is a few times faster.

It is many times more consuming of memory of the server side. Please learn
Xlib programming to understand it.

> 
> To say more, in order to clear a character it would require no
> computation,
> but only a simply call of XClearWindow().
> 
> Every window could have its own font.

So say we have 1400 windows each with a different font with a different
size? 
  How do you purpose we lay this out?  Instead of laying out characters we
are 
now laying out windows.  Same problem, but with an enormous overhead.

Same problem, only 1 GC for every window.

> 
> And to say more, an image of high dimension will be divided in many
> subwindows, and emacs will be able to display images normally, not as a
> huge
> glyph.

Again, making the display of an image to be so much slower, because instead
of 
one (ideally), call to the X server, we now have one per window.  And what a 
nightmare to figure out what part of an image that needs to be redrawn and 
moved if the user changes the size of the Emacs frame...

We do have 1 call for window, and 1 network message to the server for every
update.

The only problem in this implementation would be to compute the size of
every window, and to compute its coordinates.


> 
> And finally, because this structure is identical to the geometry of the
> console, the code for X and console can be unified in many places.
> 

Not very likely.

I do not know. Maybe.


-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27563610.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 12:10   ` Juanma Barranquero
@ 2010-02-12 13:41     ` alin.s
  0 siblings, 0 replies; 162+ messages in thread
From: alin.s @ 2010-02-12 13:41 UTC (permalink / raw)
  To: Emacs-devel




Juanma Barranquero wrote:
> 
>> An improvement in redisplay for X can be done by defining in the edit
>> area of
>> every window a subwindow for every character. For a window of geometry
>> 200x70 of characters, it would be 1400 windows registered in X-server.
> 
> Wouldn't that be 14,000?
> 

I do not pretend the solution to be realistic, I just asked if it is good or
not.

The only structure that would be allocated is a lot of little windows. Apart
from this, the computations on the client side are simpler.



-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27563728.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 13:30     ` alin.s
@ 2010-02-12 14:25       ` Jan Djärv
  2010-02-12 14:37         ` alin.s
  2010-02-12 14:53         ` alin.s
  0 siblings, 2 replies; 162+ messages in thread
From: Jan Djärv @ 2010-02-12 14:25 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

alin.s skrev:
> 
> 
> alin.s skrev:
>> An improvement in redisplay for X can be done by defining in the edit area
>> of
>> every window a subwindow for every character. For a window of geometry
>> 200x70 of characters, it would be 1400 windows registered in X-server.
> 
> You are mad.  Everything would be 1400 times more.  1400 times more calls to 
> the X server, 1400 times more GC:s created, 1400 times more events from the
> X 
> server, 1400 times more Xft structures (XftDraws for example) created.
> Emacs would be at least 1400 times slower.
> 
> The computations are not done as you say. Please read the X windows manual.

I have done so for every edition since X10.

> 
> If you make 1000 identical calls of Xlib functions, Xlib put them into its
> queue, and send them once.
> 

Yes it does put calls in a queue.  All 1400 of them instead of one.  But given 
how IPC works, in reality it will be many writes to the socket anyway, even if 
the queue tries to minimize that.  And the amount of data is still 1400 (or 
14000) times more.  X does not squeeze several calls into one, there are still 
several calls.  And they are not identical anyway, they are for different windows.

> 
> I do not know what is bad to keep in the server 100.000 of little
> structures. Apart from memory consuming, no problem of speed.

But you have to keep track of all handles to these data as well in Emacs so 
both have to have 14000 times more data.

> 
> You do not need 14.000 Graphics Contextes, only 1 for window is enough!

Ok, so GC:s wasn't a good example.

> It is many times more consuming of memory of the server side. Please learn
> Xlib programming to understand it.

No need to be condescending, it doesn't help your cause.  I've done X 
programming since the late 80:s.

> 
>> To say more, in order to clear a character it would require no
>> computation,
>> but only a simply call of XClearWindow().
>>
>> Every window could have its own font.
> 
> So say we have 1400 windows each with a different font with a different
> size? 
>   How do you purpose we lay this out?  Instead of laying out characters we
> are 
> now laying out windows.  Same problem, but with an enormous overhead.
> 
> Same problem, only 1 GC for every window.

No it is not the same problem.  For every window you will have to tell X where 
it will be positioned, i,e. x and y and width and height.  If every window 
have its own font with its own size you have to calculate all this for every 
window, and the recalculate it for all windows when a font changes in one 
window.  Sounds like what redisplay does today.

> 
>> And to say more, an image of high dimension will be divided in many
>> subwindows, and emacs will be able to display images normally, not as a
>> huge
>> glyph.
> 
> Again, making the display of an image to be so much slower, because instead
> of 
> one (ideally), call to the X server, we now have one per window.  And what a 
> nightmare to figure out what part of an image that needs to be redrawn and 
> moved if the user changes the size of the Emacs frame...
> 
> We do have 1 call for window, and 1 network message to the server for every
> update.

... times 14000 windows...

> 
> The only problem in this implementation would be to compute the size of
> every window, and to compute its coordinates.

So you have gained nothing really, redisplay is the hard part.

	Jan D.





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

* Re: redisplay system of emacs
  2010-02-12 14:25       ` Jan Djärv
@ 2010-02-12 14:37         ` alin.s
  2010-02-12 14:53         ` alin.s
  1 sibling, 0 replies; 162+ messages in thread
From: alin.s @ 2010-02-12 14:37 UTC (permalink / raw)
  To: Emacs-devel



I agree that it is not a good plan . I thought that the X server notifies
you exactly the characters that need redisplaying, and so it would be very
clear the redisplay for everybody !





Jan Djärv wrote:
> 
> alin.s skrev:
>> 
>> 
>> alin.s skrev:
>>> An improvement in redisplay for X can be done by defining in the edit
>>> area
>>> of
>>> every window a subwindow for every character. For a window of geometry
>>> 200x70 of characters, it would be 1400 windows registered in X-server.
>> 
>> You are mad.  Everything would be 1400 times more.  1400 times more calls
>> to 
>> the X server, 1400 times more GC:s created, 1400 times more events from
>> the
>> X 
>> server, 1400 times more Xft structures (XftDraws for example) created.
>> Emacs would be at least 1400 times slower.
>> 
>> The computations are not done as you say. Please read the X windows
>> manual.
> 
> I have done so for every edition since X10.
> 
>> 
>> If you make 1000 identical calls of Xlib functions, Xlib put them into
>> its
>> queue, and send them once.
>> 
> 
> Yes it does put calls in a queue.  All 1400 of them instead of one.  But
> given 
> how IPC works, in reality it will be many writes to the socket anyway,
> even if 
> the queue tries to minimize that.  And the amount of data is still 1400
> (or 
> 14000) times more.  X does not squeeze several calls into one, there are
> still 
> several calls.  And they are not identical anyway, they are for different
> windows.
> 
>> 
>> I do not know what is bad to keep in the server 100.000 of little
>> structures. Apart from memory consuming, no problem of speed.
> 
> But you have to keep track of all handles to these data as well in Emacs
> so 
> both have to have 14000 times more data.
> 
>> 
>> You do not need 14.000 Graphics Contextes, only 1 for window is enough!
> 
> Ok, so GC:s wasn't a good example.
> 
>> It is many times more consuming of memory of the server side. Please
>> learn
>> Xlib programming to understand it.
> 
> No need to be condescending, it doesn't help your cause.  I've done X 
> programming since the late 80:s.
> 
>> 
>>> To say more, in order to clear a character it would require no
>>> computation,
>>> but only a simply call of XClearWindow().
>>>
>>> Every window could have its own font.
>> 
>> So say we have 1400 windows each with a different font with a different
>> size? 
>>   How do you purpose we lay this out?  Instead of laying out characters
>> we
>> are 
>> now laying out windows.  Same problem, but with an enormous overhead.
>> 
>> Same problem, only 1 GC for every window.
> 
> No it is not the same problem.  For every window you will have to tell X
> where 
> it will be positioned, i,e. x and y and width and height.  If every window 
> have its own font with its own size you have to calculate all this for
> every 
> window, and the recalculate it for all windows when a font changes in one 
> window.  Sounds like what redisplay does today.
> 
>> 
>>> And to say more, an image of high dimension will be divided in many
>>> subwindows, and emacs will be able to display images normally, not as a
>>> huge
>>> glyph.
>> 
>> Again, making the display of an image to be so much slower, because
>> instead
>> of 
>> one (ideally), call to the X server, we now have one per window.  And
>> what a 
>> nightmare to figure out what part of an image that needs to be redrawn
>> and 
>> moved if the user changes the size of the Emacs frame...
>> 
>> We do have 1 call for window, and 1 network message to the server for
>> every
>> update.
> 
> ... times 14000 windows...
> 
>> 
>> The only problem in this implementation would be to compute the size of
>> every window, and to compute its coordinates.
> 
> So you have gained nothing really, redisplay is the hard part.
> 
> 	Jan D.
> 
> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27564505.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 14:25       ` Jan Djärv
  2010-02-12 14:37         ` alin.s
@ 2010-02-12 14:53         ` alin.s
  2010-02-12 15:11           ` Jan Djärv
  1 sibling, 1 reply; 162+ messages in thread
From: alin.s @ 2010-02-12 14:53 UTC (permalink / raw)
  To: Emacs-devel




Jan Djärv wrote:
> 
>> If you make 1000 identical calls of Xlib functions, Xlib put them into
>> its
>> queue, and send them once.
>> 
> 
> Yes it does put calls in a queue.  All 1400 of them instead of one.  But
> given 
> how IPC works, in reality it will be many writes to the socket anyway,
> even if 
> the queue tries to minimize that.  And the amount of data is still 1400
> (or 
> 14000) times more.  X does not squeeze several calls into one, there are
> still 
> several calls.  And they are not identical anyway, they are for different
> windows.
> 
> 

You can keep on server side many little windows, and on the client side you
can keep the image of the screen, and the little windows notifies you what
part of the image was changed, you update the local bitmap, and when the
bitmap is created, you send it to the server with only 1 X lib call.

The idea is that you ask the server to tell you what must be refreshed on
the scree, and you need no more obfuscated internal redisplay.


-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27564728.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 14:53         ` alin.s
@ 2010-02-12 15:11           ` Jan Djärv
  2010-02-12 15:31             ` David Kastrup
  0 siblings, 1 reply; 162+ messages in thread
From: Jan Djärv @ 2010-02-12 15:11 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

alin.s skrev:
> 
> 
> You can keep on server side many little windows, and on the client side you
> can keep the image of the screen, and the little windows notifies you what
> part of the image was changed, you update the local bitmap, and when the
> bitmap is created, you send it to the server with only 1 X lib call.
> 
> The idea is that you ask the server to tell you what must be refreshed on
> the scree, and you need no more obfuscated internal redisplay.
> 

This is done already, the expose event contains the rectangle that needs to be 
updated.  And if you need more exact information you can use the XDamage 
extension.

What you are describing is basically double buffering.  Since Gtk+ does this 
already, it makes sense for Emacs to go that way too, either by using more 
Gtk+ (we now turn double buffering off), or develop its own.

	Jan D.






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

* Re: redisplay system of emacs
  2010-02-12 15:11           ` Jan Djärv
@ 2010-02-12 15:31             ` David Kastrup
  2010-02-12 15:55               ` Jan Djärv
  2010-02-12 16:53               ` alin.s
  0 siblings, 2 replies; 162+ messages in thread
From: David Kastrup @ 2010-02-12 15:31 UTC (permalink / raw)
  To: emacs-devel

Jan Djärv <jan.h.d@swipnet.se> writes:

> What you are describing is basically double buffering.  Since Gtk+
> does this already, it makes sense for Emacs to go that way too,

I don't see this dependency.

> either by using more Gtk+ (we now turn double buffering off),

In particular if one can tell Gtk+ not to double buffer.

> or develop its own.

I don't think that the performance in partly obscured windows is really
that important.

Or maybe I don't understand what this is about.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-12 15:31             ` David Kastrup
@ 2010-02-12 15:55               ` Jan Djärv
  2010-02-12 16:53               ` alin.s
  1 sibling, 0 replies; 162+ messages in thread
From: Jan Djärv @ 2010-02-12 15:55 UTC (permalink / raw)
  To: David Kastrup; +Cc: emacs-devel

David Kastrup skrev:

> I don't think that the performance in partly obscured windows is really
> that important.
> 

No, it isn't.  But if you can get info about exactly what parts needs to be 
updated, maybe redisplay could do less work.  But the main point is that if 
you use double buffering (i.e. first render in an off-screen pixmap, and then 
copy the pixmap to the X window in one go), you can use a very crude 
redisplay, since you always copy from an up-to-date copy.  No need to worry 
about flickering.

	Jan D.






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

* Re: redisplay system of emacs
  2010-02-12 15:31             ` David Kastrup
  2010-02-12 15:55               ` Jan Djärv
@ 2010-02-12 16:53               ` alin.s
  2010-02-12 18:55                 ` David Kastrup
  2010-02-16 16:40                 ` Davis Herring
  1 sibling, 2 replies; 162+ messages in thread
From: alin.s @ 2010-02-12 16:53 UTC (permalink / raw)
  To: Emacs-devel



I did not want to state categorically that such or such solution is the good
one.

For example, if every emacs-window would be composed of lots of subwindows
on server side, that lots of sub-windows could be completely hidden. Never
use them to write something in them. They just report exactly the part of
the buffer that should be redisplayed. They only catch and report events.
They are invisible.

Redisplay_internal does lots and lots of computations to detect which part
of the buffer should be redisplayed at a given moment. All these
computations can be avoided using a system of subwindows (1 for every char).
That was my idea: to replace redisplay_internal with something simple and
efficient. Something simple and efficient is to keep in the emacs a vector
of little windows, and to register in the server all these windows.

The structure of windows is changed only when configure event is caught or
when one changes the font, or split windows, etc. So very rarely.

95% of the operations of redisplay can be covered with the system of little
windows registered in the server. No more need of redisplay_internal for X.





David Kastrup wrote:
> 
> Jan Djärv <jan.h.d@swipnet.se> writes:
> 
>> What you are describing is basically double buffering.  Since Gtk+
>> does this already, it makes sense for Emacs to go that way too,
> 
> I don't see this dependency.
> 
>> either by using more Gtk+ (we now turn double buffering off),
> 
> In particular if one can tell Gtk+ not to double buffer.
> 
>> or develop its own.
> 
> I don't think that the performance in partly obscured windows is really
> that important.
> 
> Or maybe I don't understand what this is about.
> 
> -- 
> David Kastrup
> 
> 
> 
> 
> 

-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27566385.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 16:53               ` alin.s
@ 2010-02-12 18:55                 ` David Kastrup
  2010-02-14 19:13                   ` alin.s
  2010-02-14 19:25                   ` redisplay system of emacs alin.s
  2010-02-16 16:40                 ` Davis Herring
  1 sibling, 2 replies; 162+ messages in thread
From: David Kastrup @ 2010-02-12 18:55 UTC (permalink / raw)
  To: emacs-devel

"alin.s" <alinsoar@voila.fr> writes:

> I did not want to state categorically that such or such solution is the good
> one.
>
> For example, if every emacs-window would be composed of lots of subwindows
> on server side, that lots of sub-windows could be completely hidden. Never
> use them to write something in them. They just report exactly the part of
> the buffer that should be redisplayed. They only catch and report events.
> They are invisible.
>
> Redisplay_internal does lots and lots of computations to detect which
> part of the buffer should be redisplayed at a given moment.

By checking which on-screen parts have changed how.

> All these computations can be avoided using a system of subwindows (1
> for every char).

That is nonsense.  One then has to check which subwindows need to be
moved/replaced as a result of buffer changes.  The X server has no clue
about buffers and the display matrix and its relative arrangement.

> That was my idea: to replace redisplay_internal with something simple
> and efficient. Something simple and efficient is to keep in the emacs
> a vector of little windows, and to register in the server all these
> windows.

And the server works by magic?  Unlikely.  Even if the scheme were not
unfeasible.

> The structure of windows is changed only when configure event is
> caught or when one changes the font, or split windows, etc. So very
> rarely.

Every insertion of a single character of a proportional font will change
the "windows" layout.

> 95% of the operations of redisplay can be covered with the system of
> little windows registered in the server. No more need of
> redisplay_internal for X.

I think you have the wrong idea about what redisplay_internal does, and
what an X server can do on its own.

-- 
David Kastrup





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

* Re: redisplay system of emacs
  2010-02-12 18:55                 ` David Kastrup
@ 2010-02-14 19:13                   ` alin.s
  2010-02-17 13:14                     ` Chong Yidong
  2010-02-14 19:25                   ` redisplay system of emacs alin.s
  1 sibling, 1 reply; 162+ messages in thread
From: alin.s @ 2010-02-14 19:13 UTC (permalink / raw)
  To: Emacs-devel



> The structure of windows is changed only when configure event is
> caught or when one changes the font, or split windows, etc. So very
> rarely.

Every insertion of a single character of a proportional font will change
the "windows" layout.


This is true, because not all characters have the same width. Anyways, the
idea of many subwindows was not good.


-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27585994.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 18:55                 ` David Kastrup
  2010-02-14 19:13                   ` alin.s
@ 2010-02-14 19:25                   ` alin.s
  1 sibling, 0 replies; 162+ messages in thread
From: alin.s @ 2010-02-14 19:25 UTC (permalink / raw)
  To: Emacs-devel




David Kastrup wrote:
> 
> 
>> 95% of the operations of redisplay can be covered with the system of
>> little windows registered in the server. No more need of
>> redisplay_internal for X.
> 
> I think you have the wrong idea about what redisplay_internal does, and
> what an X server can do on its own.
> 
> 

I\m not interested at all about X and graphical programming. I ' ve read the
Xlib manual just to be able to finish the task of tabs for
GTK/Athena/LessTiff


-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27586106.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-12 16:53               ` alin.s
  2010-02-12 18:55                 ` David Kastrup
@ 2010-02-16 16:40                 ` Davis Herring
  2010-02-16 19:20                   ` grischka
  1 sibling, 1 reply; 162+ messages in thread
From: Davis Herring @ 2010-02-16 16:40 UTC (permalink / raw)
  To: alin.s; +Cc: emacs-devel

[Alin, I'm fully aware that you're not advocating this idea now.  I don't
mean to attack, but to explain something that wasn't said explicitly.]

> Redisplay_internal does lots and lots of computations to detect which part
> of the buffer should be redisplayed at a given moment. All these
> computations can be avoided using a system of subwindows (1 for every
> char).

Those computations are complicated because the buffer contents (or window
width, or scroll amount, or...) might have changed, not just because the
window might have been damaged in some complicated fashion.

Davis

-- 
This product is sold by volume, not by mass.  If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.




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

* Re: redisplay system of emacs
@ 2010-02-16 19:20                   ` grischka
  2010-02-16 19:55                     ` Thien-Thi Nguyen
  2010-02-16 20:00                     ` Eli Zaretskii
  0 siblings, 2 replies; 162+ messages in thread
From: grischka @ 2010-02-16 19:20 UTC (permalink / raw)
  To: herring; +Cc: emacs-devel

>> Redisplay_internal does lots and lots of computations to detect which part
>> of the buffer should be redisplayed at a given moment. All these
>> computations can be avoided using a system of subwindows (1 for every
>> char).
>
> Those computations are complicated because the buffer contents (or window
> width, or scroll amount, or...) might have changed, not just because the
> window might have been damaged in some complicated fashion.

It's not _that_complicated.  Basically it just draws the new screen to
memory, then compares it with the current screen and then updates the
differences.

And actually it works nicely and fast, just maybe slightly over-designed
in cases.  (For example changing "bazfoobar" to "baz,foobar" would output
",f" and "obar" and thus reuse the originally second "o" for the new first
one.  One might think that drawing one additional "o" could be faster than
two XDrawString, but so what).

Whether the code could be written to be easier to understand is a different
question but who has time for cleanups anyway.

--- grischka





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

* Re: redisplay system of emacs
  2010-02-16 19:20                   ` grischka
@ 2010-02-16 19:55                     ` Thien-Thi Nguyen
  2010-02-17 13:56                       ` alin.s
  2010-02-16 20:00                     ` Eli Zaretskii
  1 sibling, 1 reply; 162+ messages in thread
From: Thien-Thi Nguyen @ 2010-02-16 19:55 UTC (permalink / raw)
  To: emacs-devel

() grischka <grishka@gmx.de>
() Tue, 16 Feb 2010 20:20:06 +0100

   but who has time for cleanups anyway.

Sometimes janitors and archeologists find the time.

thi




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

* Re: redisplay system of emacs
  2010-02-16 19:20                   ` grischka
  2010-02-16 19:55                     ` Thien-Thi Nguyen
@ 2010-02-16 20:00                     ` Eli Zaretskii
  2010-02-16 20:56                       ` grischka
  1 sibling, 1 reply; 162+ messages in thread
From: Eli Zaretskii @ 2010-02-16 20:00 UTC (permalink / raw)
  To: grischka; +Cc: emacs-devel

> Date: Tue, 16 Feb 2010 20:20:06 +0100
> From: grischka <grishka@gmx.de>
> Cc: emacs-devel@gnu.org
> 
> >> Redisplay_internal does lots and lots of computations to detect which part
> >> of the buffer should be redisplayed at a given moment. All these
> >> computations can be avoided using a system of subwindows (1 for every
> >> char).
> >
> > Those computations are complicated because the buffer contents (or window
> > width, or scroll amount, or...) might have changed, not just because the
> > window might have been damaged in some complicated fashion.
> 
> It's not _that_complicated.  Basically it just draws the new screen to
> memory, then compares it with the current screen and then updates the
> differences.

That's only a small part of the story.  It draws only part of the
screen, not all of it (unless optimizations fail), and it goes to
great lengths to minimize that part of the screen.

The reason is that delivering to the screen is not the heaviest part
of the redisplay; it's that ``drawing to memory'' that is.




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

* Re: redisplay system of emacs
  2010-02-16 20:00                     ` Eli Zaretskii
@ 2010-02-16 20:56                       ` grischka
  2010-02-17  4:20                         ` Eli Zaretskii
  0 siblings, 1 reply; 162+ messages in thread
From: grischka @ 2010-02-16 20:56 UTC (permalink / raw)
  To: Eli Zaretskii; +Cc: emacs-devel

Eli Zaretskii wrote:
>> It's not _that_complicated.  Basically it just draws the new screen to
>> memory, then compares it with the current screen and then updates the
>> differences.
> 
> That's only a small part of the story.  It draws only part of the
> screen, not all of it (unless optimizations fail), and it goes to
> great lengths to minimize that part of the screen.

Sure, thats what I wrote: It updates only the differences.

> The reason is that delivering to the screen is not the heaviest part
> of the redisplay; it's that ``drawing to memory'' that is.

That is probably true nowadays with fast graphical screens (say for PCs
after ~1995).  However the design of emacs' "redisplay" is based on the
contrary assumption that sending the updates to the terminal more expensive
than their calculation.  If you want to it is optimized for _very_ slow
terminals to the expense of code simplicity.  I assume it was working great
with 14400 baud connections, but then again emacs didn't have colors and
var-pitch fonts at that times, either.

--- grischka





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

* Re: redisplay system of emacs
  2010-02-16 20:56                       ` grischka
@ 2010-02-17  4:20                         ` Eli Zaretskii
  0 siblings, 0 replies; 162+ messages in thread
From: Eli Zaretskii @ 2010-02-17  4:20 UTC (permalink / raw)
  To: grischka; +Cc: emacs-devel

> Date: Tue, 16 Feb 2010 21:56:03 +0100
> From: grischka <grishka@gmx.de>
> CC: herring@lanl.gov, emacs-devel@gnu.org
> 
> Eli Zaretskii wrote:
> >> It's not _that_complicated.  Basically it just draws the new screen to
> >> memory, then compares it with the current screen and then updates the
> >> differences.
> > 
> > That's only a small part of the story.  It draws only part of the
> > screen, not all of it (unless optimizations fail), and it goes to
> > great lengths to minimize that part of the screen.
> 
> Sure, thats what I wrote: It updates only the differences.

The point is, it tries to limit the region where it looks for
differences to as small portion of the screen as possible, sometimes a
single line.  Therefore ``draws the new screen to memory'' is an
exception; the rule is ``draws a small portion of the new screen to
memory''.

> > The reason is that delivering to the screen is not the heaviest part
> > of the redisplay; it's that ``drawing to memory'' that is.
> 
> That is probably true nowadays with fast graphical screens (say for PCs
> after ~1995).  However the design of emacs' "redisplay" is based on the
> contrary assumption that sending the updates to the terminal more expensive
> than their calculation.

The current display code was designed in 1999.




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

* Re: redisplay system of emacs
  2010-02-14 19:13                   ` alin.s
@ 2010-02-17 13:14                     ` Chong Yidong
  2010-02-23  0:45                       ` Giuseppe Scrivano
  0 siblings, 1 reply; 162+ messages in thread
From: Chong Yidong @ 2010-02-17 13:14 UTC (permalink / raw)
  To: alin.s; +Cc: Emacs-devel

I'm not one to discourage people from hacking on whatever they feel
like, but IMO discussing a revamp of the Emacs redisplay system is a
waste of time.  Gerd Moellmann sweated blood getting the present system
up and running for Emacs 21, and it basically works well enough.  There
are lots and lots of areas in Emacs that (IMO) are in much more urgent
need of improvement.

If you have a hankering for making core code changes, I'd suggest
looking at the concurrency project or the GTK widget embedding project,
and not a radical overhaul of redisplay itself.  (Stefan and I will make
our goals for Emacs 24 more concrete when we open the trunk for Emacs 24
development.)




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

* Re: redisplay system of emacs
  2010-02-16 19:55                     ` Thien-Thi Nguyen
@ 2010-02-17 13:56                       ` alin.s
  0 siblings, 0 replies; 162+ messages in thread
From: alin.s @ 2010-02-17 13:56 UTC (permalink / raw)
  To: Emacs-devel




Thien-Thi Nguyen-6 wrote:
> 
> 
>    but who has time for cleanups anyway.
> 
> Sometimes janitors and archeologists find the time.
> 
> 

I hope some archaeologist who has good will to read my post.




-- 
View this message in context: http://old.nabble.com/redisplay-system-of-emacs-tp27349166p27623998.html
Sent from the Emacs - Dev mailing list archive at Nabble.com.





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

* Re: redisplay system of emacs
  2010-02-17 13:14                     ` Chong Yidong
@ 2010-02-23  0:45                       ` Giuseppe Scrivano
  2010-02-23  3:01                         ` David Reitter
                                           ` (2 more replies)
  0 siblings, 3 replies; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-02-23  0:45 UTC (permalink / raw)
  To: Chong Yidong; +Cc: tromey, alin.s, Emacs-devel

Chong Yidong <cyd@stupidchicken.com> writes:

> If you have a hankering for making core code changes, I'd suggest
> looking at the concurrency project or the GTK widget embedding project,
> and not a radical overhaul of redisplay itself.  (Stefan and I will make
> our goals for Emacs 24 more concrete when we open the trunk for Emacs 24
> development.)

The emacs concurrency project, despite recently a not very active
development, is in a quite advanced development status.

Since last time we discussed about emacs-mt, many problems were fixed,
buffer-locking was removed and we have finally implemented per thread
let-bound buffer local variables.

I am a bit stuck now; would you mind to try emacs-mt and let us know
what we are missing before think (hopefully) about a merge?  It is not
well tested, and surely there are bugs waiting to be discovered.

The git repository is accessible here (g-exp branch):

  git://gitorious.org/emacs-mt/emacs-mt.git

Thanks,
Giuseppe




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

* Re: redisplay system of emacs
  2010-02-23  0:45                       ` Giuseppe Scrivano
@ 2010-02-23  3:01                         ` David Reitter
  2010-02-23  3:34                           ` Tom Tromey
  2010-02-23 14:31                         ` Richard Stallman
  2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
  2 siblings, 1 reply; 162+ messages in thread
From: David Reitter @ 2010-02-23  3:01 UTC (permalink / raw)
  To: Giuseppe Scrivano; +Cc: emacs-devel@gnu.org discussions

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

On Feb 22, 2010, at 7:45 PM, Giuseppe Scrivano wrote:
> 
> I am a bit stuck now; would you mind to try emacs-mt and let us know
> what we are missing before think (hopefully) about a merge?  It is not
> well tested, and surely there are bugs waiting to be discovered.
> 
> The git repository is accessible here (g-exp branch):
> 
>  git://gitorious.org/emacs-mt/emacs-mt.git


It doesn't compile on my machine (Mac OS X 10.6):

gcc -c  -Demacs -DHAVE_CONFIG_H  -I. -I/Users/dr/em23/src -Dtemacs     -g -O2 -Wdeclaration-after-statement -Wno-pointer-sign   -MMD -MF deps/dispnew.d dispnew.c
In file included from lisp.h:3690,
                 from dispnew.c:31:
thread.h:128: error: thread-local storage not supported for this target
thread.h:142: error: expected '=', ',', ';', 'asm' or '__attribute__' before 'global_lock'
make[1]: *** [dispnew.o] Error 1
make: *** [src] Error 2

See also: http://lists.apple.com/archives/xcode-users/2006/Jun/msg00551.html
http://lists.apple.com/archives/xcode-users/2007/jun/msg00120.html

That link suggests that the feature you're using is related to ELF and thus not portable.

Thanks for your work on this - looking forward to seeing the results!

[-- Attachment #2: This is a digitally signed message part --]
[-- Type: application/pgp-signature, Size: 203 bytes --]

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

* Re: redisplay system of emacs
  2010-02-23  3:01                         ` David Reitter
@ 2010-02-23  3:34                           ` Tom Tromey
  0 siblings, 0 replies; 162+ messages in thread
From: Tom Tromey @ 2010-02-23  3:34 UTC (permalink / raw)
  To: David Reitter; +Cc: Giuseppe Scrivano, emacs-devel@gnu.org discussions

>>>>> "David" == David Reitter <david.reitter@gmail.com> writes:

David> That link suggests that the feature you're using is related to
David> ELF and thus not portable.

Yeah, we currently use __thread and the POSIX thread API.  These can be
made portable by someone who has the know-how.

Tom




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

* Re: redisplay system of emacs
  2010-02-23  0:45                       ` Giuseppe Scrivano
  2010-02-23  3:01                         ` David Reitter
@ 2010-02-23 14:31                         ` Richard Stallman
  2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
  2 siblings, 0 replies; 162+ messages in thread
From: Richard Stallman @ 2010-02-23 14:31 UTC (permalink / raw)
  To: Giuseppe Scrivano; +Cc: tromey, alinsoar, cyd, Emacs-devel

I am impressed and glad.  Concurrency would enable us to solve the
problem of multi-terminal Emacs, by enabling each terminal to enter
the minibuffer in parallel.




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

* Concurrency (was: redisplay system of emacs)
  2010-02-23  0:45                       ` Giuseppe Scrivano
  2010-02-23  3:01                         ` David Reitter
  2010-02-23 14:31                         ` Richard Stallman
@ 2010-03-05 22:53                         ` Stefan Monnier
  2010-03-05 22:57                           ` Andreas Schwab
                                             ` (2 more replies)
  2 siblings, 3 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-05 22:53 UTC (permalink / raw)
  To: Giuseppe Scrivano; +Cc: tromey, alin.s, Chong Yidong, Emacs-devel

> The emacs concurrency project, despite recently a not very active
> development, is in a quite advanced development status.
[...]
> The git repository is accessible here (g-exp branch):
>   git://gitorious.org/emacs-mt/emacs-mt.git

Could you install your code (assuming it does not have contributions
from people who haven't signed the relevant paperwork, of course) into
a new `concurrent' branch in the Bzr repository?

That would be very helpful,


        Stefan


PS: Obviously, you'll first have to convert it to Bzr and then you'll
probably need to rebase it on top of Emacs's Bzr trunk.




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

* Re: Concurrency (was: redisplay system of emacs)
  2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
@ 2010-03-05 22:57                           ` Andreas Schwab
  2010-03-11 14:18                           ` Giuseppe Scrivano
  2010-03-25 16:49                           ` Giuseppe Scrivano
  2 siblings, 0 replies; 162+ messages in thread
From: Andreas Schwab @ 2010-03-05 22:57 UTC (permalink / raw)
  To: Stefan Monnier
  Cc: tromey, alin.s, Chong Yidong, Giuseppe Scrivano, Emacs-devel

Stefan Monnier <monnier@iro.umontreal.ca> writes:

> PS: Obviously, you'll first have to convert it to Bzr and then you'll
> probably need to rebase it on top of Emacs's Bzr trunk.

Most likely it's much easier the other way round.

Andreas.

-- 
Andreas Schwab, schwab@linux-m68k.org
GPG Key fingerprint = 58CA 54C7 6D53 942B 1756  01D3 44D5 214B 8276 4ED5
"And now for something completely different."




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

* Re: Concurrency (was: redisplay system of emacs)
  2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
  2010-03-05 22:57                           ` Andreas Schwab
@ 2010-03-11 14:18                           ` Giuseppe Scrivano
  2010-03-25 16:49                           ` Giuseppe Scrivano
  2 siblings, 0 replies; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-03-11 14:18 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: tromey, alin.s, Chong Yidong, jim, Emacs-devel

I have rebased the emacs-mt patches on the last bazaar revision; I had
to rebase the git repository as well to get a linear source history that
I could use easier with bazaar.

I uploaded the `concurrent' branch on fencepost in
~gscrivano/emacs/concurrent, can somebody please install it?  I will
also need write permissions to continue working on it.

As we moved to bazaar, the emacs git mirror is not used anymore by the
concurrent emacs project.

Cheers,
Giuseppe



Stefan Monnier <monnier@iro.umontreal.ca> writes:

>> The emacs concurrency project, despite recently a not very active
>> development, is in a quite advanced development status.
> [...]
>> The git repository is accessible here (g-exp branch):
>>   git://gitorious.org/emacs-mt/emacs-mt.git
>
> Could you install your code (assuming it does not have contributions
> from people who haven't signed the relevant paperwork, of course) into
> a new `concurrent' branch in the Bzr repository?
>
> That would be very helpful,
>
>
>         Stefan
>
>
> PS: Obviously, you'll first have to convert it to Bzr and then you'll
> probably need to rebase it on top of Emacs's Bzr trunk.




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

* Re: Concurrency (was: redisplay system of emacs)
  2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
  2010-03-05 22:57                           ` Andreas Schwab
  2010-03-11 14:18                           ` Giuseppe Scrivano
@ 2010-03-25 16:49                           ` Giuseppe Scrivano
  2010-03-26 17:10                             ` Concurrency Ted Zlatanov
  2 siblings, 1 reply; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-03-25 16:49 UTC (permalink / raw)
  To: Emacs-devel; +Cc: tromey, alin.s, Chong Yidong, Stefan Monnier

Hello,

Finally I have created a new branch for the concurrent emacs project, it
is accessible here:

  http://bzr.savannah.gnu.org/r/emacs/other-branches/concurrency/

Cheers,
Giuseppe




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

* Re: Concurrency
  2010-03-25 16:49                           ` Giuseppe Scrivano
@ 2010-03-26 17:10                             ` Ted Zlatanov
  2010-03-26 19:37                               ` Concurrency Tom Tromey
  0 siblings, 1 reply; 162+ messages in thread
From: Ted Zlatanov @ 2010-03-26 17:10 UTC (permalink / raw)
  To: emacs-devel

On Thu, 25 Mar 2010 17:49:25 +0100 Giuseppe Scrivano <gscrivano@gnu.org> wrote: 

GS> Finally I have created a new branch for the concurrent emacs project, it
GS> is accessible here:

GS>   http://bzr.savannah.gnu.org/r/emacs/other-branches/concurrency/

I'd like to look at it.  Is there a quick-start guide that explains the
changes and how to get started?

Thanks
Ted





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

* Re: Concurrency
  2010-03-26 17:10                             ` Concurrency Ted Zlatanov
@ 2010-03-26 19:37                               ` Tom Tromey
  2010-03-27  3:00                                 ` Concurrency Ted Zlatanov
  0 siblings, 1 reply; 162+ messages in thread
From: Tom Tromey @ 2010-03-26 19:37 UTC (permalink / raw)
  To: Ted Zlatanov; +Cc: emacs-devel

>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes:

GS> http://bzr.savannah.gnu.org/r/emacs/other-branches/concurrency/

Ted> I'd like to look at it.  Is there a quick-start guide that explains the
Ted> changes and how to get started?

Nope.  However, there aren't really many new Emacs primitives.

On my branch I had run-in-thread (and a convenience wrapper macro,
with-new-thread), and yield.  Giuseppe's branch was slightly different,
and I think he added some mutex support as well; I still haven't looked
at these.

I can explain the bulk of the C changes if you want to understand those.

Tom




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

* Re: Concurrency
  2010-03-26 19:37                               ` Concurrency Tom Tromey
@ 2010-03-27  3:00                                 ` Ted Zlatanov
  2010-03-27 13:33                                   ` Concurrency Stefan Monnier
  2010-03-28 19:40                                   ` Concurrency Tom Tromey
  0 siblings, 2 replies; 162+ messages in thread
From: Ted Zlatanov @ 2010-03-27  3:00 UTC (permalink / raw)
  To: emacs-devel

On Fri, 26 Mar 2010 13:37:51 -0600 Tom Tromey <tromey@redhat.com> wrote: 

>>>>>> "Ted" == Ted Zlatanov <tzz@lifelogs.com> writes:
GS> http://bzr.savannah.gnu.org/r/emacs/other-branches/concurrency/

Ted> I'd like to look at it.  Is there a quick-start guide that explains the
Ted> changes and how to get started?

Tom> Nope.  However, there aren't really many new Emacs primitives.

Tom> On my branch I had run-in-thread (and a convenience wrapper macro,
Tom> with-new-thread), and yield.  Giuseppe's branch was slightly different,
Tom> and I think he added some mutex support as well; I still haven't looked
Tom> at these.

Tom> I can explain the bulk of the C changes if you want to understand those.

I'd love to know what's in Giuseppe's branch from the perspective of a
user.  Specifically, I want to know how a rewrite of the Gnus summary
buffer entry and threading might work in the new system.  But that's a
big undertaking so some simple demos would be better:

- a demo that increments a shared variable up to 10 with two threads
  that fight over the lock

- a map/reduce demo of totaling a list of numbers with N threads

- retrieve some network data asynchronously using threads, not async
  processes

Those demos would necessarily show the new primitives in a practical
way.  You or Giuseppe can explain the internals as well, that would be
helpful, but demos are really useful.

Thanks
Ted





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

* Re: Concurrency
  2010-03-27  3:00                                 ` Concurrency Ted Zlatanov
@ 2010-03-27 13:33                                   ` Stefan Monnier
  2010-03-29 18:18                                     ` Concurrency Tom Tromey
  2010-03-28 19:40                                   ` Concurrency Tom Tromey
  1 sibling, 1 reply; 162+ messages in thread
From: Stefan Monnier @ 2010-03-27 13:33 UTC (permalink / raw)
  To: Ted Zlatanov; +Cc: emacs-devel

> I'd love to know what's in Giuseppe's branch from the perspective of a
> user.  Specifically, I want to know how a rewrite of the Gnus summary

Actually, we need both: we need to document the changes, as seen by an
Elisp programmer (fits in etc/NEWS), and we need to document the way it
works internally, the invariants upon which it relies and things
like that.


        Stefan




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

* Re: Concurrency
  2010-03-27  3:00                                 ` Concurrency Ted Zlatanov
  2010-03-27 13:33                                   ` Concurrency Stefan Monnier
@ 2010-03-28 19:40                                   ` Tom Tromey
  2010-03-28 20:03                                     ` Concurrency Stefan Monnier
                                                       ` (2 more replies)
  1 sibling, 3 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-28 19:40 UTC (permalink / raw)
  To: Ted Zlatanov; +Cc: emacs-devel

Tom> Nope.  However, there aren't really many new Emacs primitives.

Here's a quick rundown of the new primitives.

(run-in-thread FUNC)
  Take a no-argument function as an argument.
  Makes a new thread and calls the function.

(with-new-thread FORM)
  A convenience macro that takes a form, wraps it in a lambda,
  and calls run-in-thread.

(yield)
  Yield control.
  Emacs has semi-cooperative threading.  Thread switches happen during
  I/O or by explicit yield.

(make-mutex)
  Make a new lock and return it

(mutex-lock MUTEX)
  Acquire a mutex.  If already held by this thread, returns.
  If the mutex is held by some other thread, blocks until it is
  available.

(mutex-unlock MUTEX)
  Release the lock.

There is also a new variable, minibuffer-mutex.  I think it is pretty
self-explanatory, but Giuseppe should probably explain it.

I don't have time to write demos or even proper documentation, I'm
afraid.

Giuseppe also has a patch of some kind to Gnus, but I didn't see it in
the tree, and I don't know exactly what it does.

Tom




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

* Re: Concurrency
  2010-03-28 19:40                                   ` Concurrency Tom Tromey
@ 2010-03-28 20:03                                     ` Stefan Monnier
  2010-03-28 20:25                                       ` Concurrency Davis Herring
  2010-03-28 21:17                                       ` Concurrency Tom Tromey
  2010-03-28 21:04                                     ` Concurrency Giuseppe Scrivano
  2010-03-28 21:25                                     ` Concurrency Daniel Colascione
  2 siblings, 2 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-28 20:03 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ted Zlatanov, emacs-devel

> Here's a quick rundown of the new primitives.

> (run-in-thread FUNC)
>   Take a no-argument function as an argument.
>   Makes a new thread and calls the function.

> (with-new-thread FORM)
>   A convenience macro that takes a form, wraps it in a lambda,
>   and calls run-in-thread.

> (yield)
>   Yield control.
>   Emacs has semi-cooperative threading.  Thread switches happen during
>   I/O or by explicit yield.

> (make-mutex)
>   Make a new lock and return it

> (mutex-lock MUTEX)
>   Acquire a mutex.  If already held by this thread, returns.

I.e. it's a "recursive/reentrant mutex".

>   If the mutex is held by some other thread, blocks until it is
>   available.

> (mutex-unlock MUTEX)
>   Release the lock.

Sounds good.  Could someone complete the above with a description of how
let-bindings work (and/or how they interact with buffer-local bindings)?
Also, a list of bugs/problem/issues would be handy,


        Stefan


PS: And place this info in a file in the `concurrent' branch.




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

* Re: Concurrency
  2010-03-28 20:03                                     ` Concurrency Stefan Monnier
@ 2010-03-28 20:25                                       ` Davis Herring
  2010-03-28 20:54                                         ` Concurrency Giuseppe Scrivano
                                                           ` (2 more replies)
  2010-03-28 21:17                                       ` Concurrency Tom Tromey
  1 sibling, 3 replies; 162+ messages in thread
From: Davis Herring @ 2010-03-28 20:25 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Tom Tromey, Ted Zlatanov, emacs-devel

>> (mutex-lock MUTEX)
>>   Acquire a mutex.  If already held by this thread, returns.
>
> I.e. it's a "recursive/reentrant mutex".

Hmm -- is it fully recursive, where you must unlock it as many times as
you locked it?  (I don't much care for the semi-recursive kind where one
unlock is sufficient regardless of the number of lock operations...)

Davis

-- 
This product is sold by volume, not by mass.  If it appears too dense or
too sparse, it is because mass-energy conversion has occurred during
shipping.




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

* Re: Concurrency
  2010-03-28 20:25                                       ` Concurrency Davis Herring
@ 2010-03-28 20:54                                         ` Giuseppe Scrivano
  2010-03-28 23:18                                           ` Concurrency Stefan Monnier
  2010-03-28 21:19                                         ` Concurrency Tom Tromey
  2010-03-28 21:22                                         ` Concurrency Daniel Colascione
  2 siblings, 1 reply; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-03-28 20:54 UTC (permalink / raw)
  To: herring; +Cc: Tom Tromey, Ted Zlatanov, Stefan Monnier, emacs-devel

"Davis Herring" <herring@lanl.gov> writes:

>>> (mutex-lock MUTEX)
>>>   Acquire a mutex.  If already held by this thread, returns.
>>
>> I.e. it's a "recursive/reentrant mutex".
>
> Hmm -- is it fully recursive, where you must unlock it as many times as
> you locked it?  (I don't much care for the semi-recursive kind where one
> unlock is sufficient regardless of the number of lock operations...)

No, it is sufficient only one unlock to release it.

Cheers,
Giuseppe




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

* Re: Concurrency
  2010-03-28 19:40                                   ` Concurrency Tom Tromey
  2010-03-28 20:03                                     ` Concurrency Stefan Monnier
@ 2010-03-28 21:04                                     ` Giuseppe Scrivano
  2010-03-28 21:25                                     ` Concurrency Daniel Colascione
  2 siblings, 0 replies; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-03-28 21:04 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ted Zlatanov, emacs-devel

Hello, sorry my late reply:

Tom Tromey <tromey@redhat.com> writes:

> There is also a new variable, minibuffer-mutex.  I think it is pretty
> self-explanatory, but Giuseppe should probably explain it.

It is a mutex that protects the mini-buffer from concurrent accesses.
Only one thread can use the minibuffer at a time.



> Giuseppe also has a patch of some kind to Gnus, but I didn't see it in
> the tree, and I don't know exactly what it does.

No, I don't have a patch, I have just experimented with "(run-in-thread
gnus)" to verify it loads correctly in a separate thread.


Also we have to mention the two new macros:

(defmacro with-new-thread (&rest body)) -- BODY is executed in a new
thread.

(defmacro with-critical-section (mutex &rest body)) BODY is executed
after MUTEX is locked and automatically released on exit.

Giuseppe




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

* Re: Concurrency
  2010-03-28 20:03                                     ` Concurrency Stefan Monnier
  2010-03-28 20:25                                       ` Concurrency Davis Herring
@ 2010-03-28 21:17                                       ` Tom Tromey
  2010-03-29 16:25                                         ` Concurrency Ken Raeburn
  2010-03-31 17:13                                         ` gsoc for concurrent Emacs? (was: Concurrency) Ted Zlatanov
  1 sibling, 2 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-28 21:17 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Ted Zlatanov, emacs-devel

Stefan> Could someone complete the above with a description of how
Stefan> let-bindings work (and/or how they interact with buffer-local
Stefan> bindings)?

A let binding is always thread-local.  This is true whether the variable
is buffer-local or not.

The view within a single thread is basically the same as how elisp works
today.

The interaction of let-bindings and buffer-local bindings is
complicated, but I think really no different from before.  At least,
that was our goal, of course there could be bugs.

Stefan> Also, a list of bugs/problem/issues would be handy,

* Documentation; NEWS, as you said, but also the lisp reference manual.

* The current code makes no attempt to portable, it relies on POSIX
  threads and the GNU __thread extension.  This is not too hard to fix.
  I think it is reasonably important to keep __thread on systems that
  support it, for performance.

* Suppose you have existing elisp that creates a process with a filter,
  and the filter changes a let-bound variable, and the "outer" elisp
  blocks in sit-for waiting for the filter to do its thing.  Nothing in
  the current code guarantees that the process filter will be run in the
  "correct" thread.

* There may be oddities with redisplay running in the "wrong" thread.

* Keyboard-local variables and let-bindings may not work together as
  expected.

I'm sure there are more, this is all I remember offhand.

Stefan> PS: And place this info in a file in the `concurrent' branch.

I hope someone else can do that.

Tom




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

* Re: Concurrency
  2010-03-28 20:25                                       ` Concurrency Davis Herring
  2010-03-28 20:54                                         ` Concurrency Giuseppe Scrivano
@ 2010-03-28 21:19                                         ` Tom Tromey
  2010-03-28 21:22                                         ` Concurrency Daniel Colascione
  2 siblings, 0 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-28 21:19 UTC (permalink / raw)
  To: herring; +Cc: Ted Zlatanov, Stefan Monnier, emacs-devel

>>>>> "Davis" == Davis Herring <herring@lanl.gov> writes:

>>> (mutex-lock MUTEX)
>>> Acquire a mutex.  If already held by this thread, returns.
>> 
>> I.e. it's a "recursive/reentrant mutex".

Davis> Hmm -- is it fully recursive, where you must unlock it as many times as
Davis> you locked it?  (I don't much care for the semi-recursive kind where one
Davis> unlock is sufficient regardless of the number of lock operations...)

Yeah, it doesn't keep a count.  And in addition to this problem,
mutex-unlock has a bug where it can unlock any mutex, not just ones own
by the current thread.

Tom




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

* Re: Concurrency
  2010-03-28 20:25                                       ` Concurrency Davis Herring
  2010-03-28 20:54                                         ` Concurrency Giuseppe Scrivano
  2010-03-28 21:19                                         ` Concurrency Tom Tromey
@ 2010-03-28 21:22                                         ` Daniel Colascione
  2010-03-28 23:20                                           ` Concurrency Stefan Monnier
  2010-03-29  2:18                                           ` Concurrency Tom Tromey
  2 siblings, 2 replies; 162+ messages in thread
From: Daniel Colascione @ 2010-03-28 21:22 UTC (permalink / raw)
  To: herring; +Cc: Tom Tromey, Ted Zlatanov, Stefan Monnier, emacs-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 3/28/10 4:25 PM, Davis Herring wrote:
>>> (mutex-lock MUTEX)
>>>   Acquire a mutex.  If already held by this thread, returns.
>>
>> I.e. it's a "recursive/reentrant mutex".
> 
> Hmm -- is it fully recursive, where you must unlock it as many times as
> you locked it?  (I don't much care for the semi-recursive kind where one
> unlock is sufficient regardless of the number of lock operations...)
> 
> Davis
> 

It really shouldn't be recursive at all:

http://www.zaval.org/resources/library/butenhof1.html
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEARECAAYFAkuvyJYACgkQ17c2LVA10VsB3QCdHyXXPK9JMkbnDYqslY/TnBBY
6rcAoMr8ZlIpRGutZKa9mDGVzABJJZ3G
=0TRS
-----END PGP SIGNATURE-----




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

* Re: Concurrency
  2010-03-28 19:40                                   ` Concurrency Tom Tromey
  2010-03-28 20:03                                     ` Concurrency Stefan Monnier
  2010-03-28 21:04                                     ` Concurrency Giuseppe Scrivano
@ 2010-03-28 21:25                                     ` Daniel Colascione
  2010-03-29  2:20                                       ` Concurrency Tom Tromey
  2 siblings, 1 reply; 162+ messages in thread
From: Daniel Colascione @ 2010-03-28 21:25 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ted Zlatanov, emacs-devel

-----BEGIN PGP SIGNED MESSAGE-----
Hash: SHA1

On 3/28/10 3:40 PM, Tom Tromey wrote:
> Tom> Nope.  However, there aren't really many new Emacs primitives.
> 
> Here's a quick rundown of the new primitives.

Thanks for summing these up.

> (run-in-thread FUNC)
> (with-new-thread FORM)
> (yield)
> (make-mutex)
> (mutex-lock MUTEX)
> (mutex-unlock MUTEX)

In writing a different cooperatively-multitasked system, I've found that
I needed a kind of wait queue ("condition variable" if you will). While
you can build one out of the above primitives, it'd be better to provide
it as a part of the standard library.
-----BEGIN PGP SIGNATURE-----
Version: GnuPG v1.4.10 (Darwin)

iEYEARECAAYFAkuvyTsACgkQ17c2LVA10VurjQCgj5oE4YOg7oEgf68pDxNoHD1k
siMAni1B7DZHzmcKlki81x1D0m9cSIlk
=d5/q
-----END PGP SIGNATURE-----




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

* Re: Concurrency
  2010-03-28 20:54                                         ` Concurrency Giuseppe Scrivano
@ 2010-03-28 23:18                                           ` Stefan Monnier
  2010-03-29 10:04                                             ` Concurrency Giuseppe Scrivano
  0 siblings, 1 reply; 162+ messages in thread
From: Stefan Monnier @ 2010-03-28 23:18 UTC (permalink / raw)
  To: Giuseppe Scrivano; +Cc: Tom Tromey, Ted Zlatanov, emacs-devel

>>>> (mutex-lock MUTEX)
>>>> Acquire a mutex.  If already held by this thread, returns.
>>> I.e. it's a "recursive/reentrant mutex".
>> Hmm -- is it fully recursive, where you must unlock it as many times as
>> you locked it?  (I don't much care for the semi-recursive kind where one
>> unlock is sufficient regardless of the number of lock operations...)
> No, it is sufficient only one unlock to release it.

Huh?  That sounds like a bug,


        Stefan




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

* Re: Concurrency
  2010-03-28 21:22                                         ` Concurrency Daniel Colascione
@ 2010-03-28 23:20                                           ` Stefan Monnier
  2010-03-29  2:18                                           ` Concurrency Tom Tromey
  1 sibling, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-28 23:20 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: Tom Tromey, Ted Zlatanov, emacs-devel

> It really shouldn't be recursive at all:
> http://www.zaval.org/resources/library/butenhof1.html

I'd tend to agree, although I doubt it has much impact on the actual
problem of getting concurrency working reliably and usefully.  I.e. it
should be easy to change it later.


        Stefan




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

* Re: Concurrency
  2010-03-28 21:22                                         ` Concurrency Daniel Colascione
  2010-03-28 23:20                                           ` Concurrency Stefan Monnier
@ 2010-03-29  2:18                                           ` Tom Tromey
  1 sibling, 0 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-29  2:18 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: Ted Zlatanov, Stefan Monnier, emacs-devel

Daniel> It really shouldn't be recursive at all:
Daniel> http://www.zaval.org/resources/library/butenhof1.html

My experience with Java is that recursive mutexes are pretty convenient,
and in practice don't cause any actual problems.  I think most of this
paper is cutely worded but basically wrong.

I'm sure in the end it won't matter though.  If you really want
non-recursive mutexes, somebody else can reinvent them in elisp.

Tom




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

* Re: Concurrency
  2010-03-28 21:25                                     ` Concurrency Daniel Colascione
@ 2010-03-29  2:20                                       ` Tom Tromey
  0 siblings, 0 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-29  2:20 UTC (permalink / raw)
  To: Daniel Colascione; +Cc: Ted Zlatanov, emacs-devel

Daniel> In writing a different cooperatively-multitasked system, I've found that
Daniel> I needed a kind of wait queue ("condition variable" if you will). While
Daniel> you can build one out of the above primitives, it'd be better to provide
Daniel> it as a part of the standard library.

We purposely kept the API as minimal as possible.
E.g., there isn't even a user-visible thread object.

It is no trouble to add things, it just must be done thoughtfully, and
in particular with an eye toward not breaking the possibility of
preemptive threading.

On this particular point, I agree, condition variables will be required
sooner or later.

Tom




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

* Re: Concurrency
  2010-03-28 23:18                                           ` Concurrency Stefan Monnier
@ 2010-03-29 10:04                                             ` Giuseppe Scrivano
  2010-03-29 15:37                                               ` Concurrency Tom Tromey
  0 siblings, 1 reply; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-03-29 10:04 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Tom Tromey, Ted Zlatanov, emacs-devel

I have changed how `make-mutex' works.  Now it accepts an optional
argument; if the argument is non nil then a recursive mutex is created,
by default it is nil.  By default a normal mutex (non recursive) is
created.

I have also changed mutex-unlock on a recursive mutex to match the
number of times it was mutex-lock'ed.  To release a recursive mutex it
must be unlocked as many times as it was locked.

I have added a mutexp function that I forgot to add before.

Giuseppe



Stefan Monnier <monnier@iro.umontreal.ca> writes:

>>>>> (mutex-lock MUTEX)
>>>>> Acquire a mutex.  If already held by this thread, returns.
>>>> I.e. it's a "recursive/reentrant mutex".
>>> Hmm -- is it fully recursive, where you must unlock it as many times as
>>> you locked it?  (I don't much care for the semi-recursive kind where one
>>> unlock is sufficient regardless of the number of lock operations...)
>> No, it is sufficient only one unlock to release it.
>
> Huh?  That sounds like a bug,
>
>
>         Stefan




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

* Re: Concurrency
  2010-03-29 10:04                                             ` Concurrency Giuseppe Scrivano
@ 2010-03-29 15:37                                               ` Tom Tromey
  2010-03-29 16:16                                                 ` Concurrency Stefan Monnier
                                                                   ` (2 more replies)
  0 siblings, 3 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-29 15:37 UTC (permalink / raw)
  To: Giuseppe Scrivano; +Cc: Ted Zlatanov, Stefan Monnier, emacs-devel

Giuseppe> I have changed how `make-mutex' works.  Now it accepts an
Giuseppe> optional argument; if the argument is non nil then a recursive
Giuseppe> mutex is created, by default it is nil.  By default a normal
Giuseppe> mutex (non recursive) is created.

I think it would be better to have all mutexes be recursive, because it
is safer.

Also, I think mutex-unlock should throw some kind of error if the mutex
is owned by a different thread.  What do you think of that?

Tom




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

* Re: Concurrency
  2010-03-29 15:37                                               ` Concurrency Tom Tromey
@ 2010-03-29 16:16                                                 ` Stefan Monnier
  2010-03-29 16:36                                                   ` Concurrency Ken Raeburn
  2010-03-29 16:33                                                 ` Concurrency Ken Raeburn
  2010-03-29 17:37                                                 ` Concurrency Giuseppe Scrivano
  2 siblings, 1 reply; 162+ messages in thread
From: Stefan Monnier @ 2010-03-29 16:16 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ted Zlatanov, Giuseppe Scrivano, emacs-devel

> Also, I think mutex-unlock should throw some kind of error if the mutex
> is owned by a different thread.  What do you think of that?

That doesn't sound useful.  There are perfectly valid ways to use mutexes
where the locker and the unlocker are not the same thread.


        Stefan




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

* Re: Concurrency
  2010-03-28 21:17                                       ` Concurrency Tom Tromey
@ 2010-03-29 16:25                                         ` Ken Raeburn
  2010-03-29 16:49                                           ` Concurrency Tom Tromey
  2010-03-31 17:13                                         ` gsoc for concurrent Emacs? (was: Concurrency) Ted Zlatanov
  1 sibling, 1 reply; 162+ messages in thread
From: Ken Raeburn @ 2010-03-29 16:25 UTC (permalink / raw)
  To: emacs-devel@gnu.org discussions

On Mar 28, 2010, at 17:17, Tom Tromey wrote:
> * The current code makes no attempt to portable, it relies on POSIX
>  threads and the GNU __thread extension.  This is not too hard to fix.
>  I think it is reasonably important to keep __thread on systems that
>  support it, for performance.

From what I understand, porting to Windows should be easy enough.  "A simple matter of coding."

Dealing with __thread shouldn't be hard if it's not used pervasively, so pthread_{get,set}specific calls can be used in its place.

> * Suppose you have existing elisp that creates a process with a filter,
>  and the filter changes a let-bound variable, and the "outer" elisp
>  blocks in sit-for waiting for the filter to do its thing.  Nothing in
>  the current code guarantees that the process filter will be run in the
>  "correct" thread.

That may be a reason to force the filter to run in the same thread that created it.  Perhaps process filters could be run at thread-switch opportunities like 'yield', too?  (And vice versa -- perhaps calls that permit the running of process filters should also permit thread switching?)

Sounds like this is coming along nicely!

Ken



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

* Re: Concurrency
  2010-03-29 15:37                                               ` Concurrency Tom Tromey
  2010-03-29 16:16                                                 ` Concurrency Stefan Monnier
@ 2010-03-29 16:33                                                 ` Ken Raeburn
  2010-03-29 16:58                                                   ` Concurrency Tom Tromey
  2010-03-29 17:37                                                 ` Concurrency Giuseppe Scrivano
  2 siblings, 1 reply; 162+ messages in thread
From: Ken Raeburn @ 2010-03-29 16:33 UTC (permalink / raw)
  To: emacs-devel@gnu.org discussions

On Mar 29, 2010, at 11:37, Tom Tromey wrote:
> I think it would be better to have all mutexes be recursive, because it
> is safer.

I can see some desire for recursive mutexes, but I lean towards Butenhof's view myself.  If all mutexes are recursive, I'd like a way to find out if I've already got a mutex locked, so I can manually detect when I've screwed up my locking model, even if someone else wants to use recursive mutexes in their code.

BTW, one extension I'd suggest is an optional timeout for mutex-lock: nil would mean block until the lock is acquired, a positive number would mean wait up to that long (e.g., pthread_mutex_timedlock), and a non-positive number would mean try to acquire the lock but don't wait.  I'm not sure offhand if failure to acquire the lock should be indicated by throwing an error or a return value; I'm leaning a little towards throwing an error.

If this really catches on, read/write locks will probably be wanted too, but they can be built on mutexes and condition variables initially, and moved into C code later if they're really helpful and performance-critical.

For debugging, I think I'd want a way to check whether a particular thread has locked a mutex.  Not a predicate someone might be tempted to use for non-debugging purposes, more like an assertion that throws an error when false.

> Also, I think mutex-unlock should throw some kind of error if the mutex
> is owned by a different thread.  What do you think of that?

Probably the best thing -- and likewise if the mutex isn't locked at all.

Ken



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

* Re: Concurrency
  2010-03-29 16:16                                                 ` Concurrency Stefan Monnier
@ 2010-03-29 16:36                                                   ` Ken Raeburn
  2010-03-29 17:41                                                     ` Concurrency Stefan Monnier
  0 siblings, 1 reply; 162+ messages in thread
From: Ken Raeburn @ 2010-03-29 16:36 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: emacs-devel@gnu.org discussions

On Mar 29, 2010, at 12:16, Stefan Monnier wrote:
>> Also, I think mutex-unlock should throw some kind of error if the mutex
>> is owned by a different thread.  What do you think of that?
> 
> That doesn't sound useful.  There are perfectly valid ways to use mutexes
> where the locker and the unlocker are not the same thread.

True... but there are models where it would be a bug, plain and simple.
Maybe it should be an option to mutex-unlock?

Ken




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

* Re: Concurrency
  2010-03-29 16:25                                         ` Concurrency Ken Raeburn
@ 2010-03-29 16:49                                           ` Tom Tromey
  2010-03-29 17:39                                             ` Concurrency Stefan Monnier
  0 siblings, 1 reply; 162+ messages in thread
From: Tom Tromey @ 2010-03-29 16:49 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: emacs-devel@gnu.org discussions

>>>>> "Ken" == Ken Raeburn <raeburn@raeburn.org> writes:

Tom> * The current code makes no attempt to portable, it relies on POSIX
Tom> threads and the GNU __thread extension.  This is not too hard to
Tom> fix.  I think it is reasonably important to keep __thread on
Tom> systems that support it, for performance.

Ken> Dealing with __thread shouldn't be hard if it's not used
Ken> pervasively, so pthread_{get,set}specific calls can be used in its
Ken> place.

There is exactly one __thread variable.

Tom> * Suppose you have existing elisp that creates a process with a filter,
Tom> and the filter changes a let-bound variable, and the "outer" elisp
Tom> blocks in sit-for waiting for the filter to do its thing.  Nothing in
Tom> the current code guarantees that the process filter will be run in the
Tom> "correct" thread.

Ken> That may be a reason to force the filter to run in the same thread
Ken> that created it.

Yeah.  I was thinking perhaps process filters could have a thread
attribute, which would default to their creating thread.  Setting this
to nil could mean that the process filter could run in any thread.

Ken> Perhaps process filters could be run at thread-switch opportunities
Ken> like 'yield', too?  (And vice versa -- perhaps calls that permit
Ken> the running of process filters should also permit thread
Ken> switching?)

I think (but am not 100% sure) that this already happens -- IIUC, things
like sleep-for and sit-for end up in wait_reading_process_output, which
has a possible yield in it.

Tom




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

* Re: Concurrency
  2010-03-29 16:33                                                 ` Concurrency Ken Raeburn
@ 2010-03-29 16:58                                                   ` Tom Tromey
  2010-03-29 17:46                                                     ` Concurrency Stefan Monnier
  0 siblings, 1 reply; 162+ messages in thread
From: Tom Tromey @ 2010-03-29 16:58 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: emacs-devel@gnu.org discussions

>>>>> "Ken" == Ken Raeburn <raeburn@raeburn.org> writes:

Tom> I think it would be better to have all mutexes be recursive, because it
Tom> is safer.

Ken> I can see some desire for recursive mutexes, but I lean towards
Ken> Butenhof's view myself.

I realized later I should probably expand on this.

The issue I have with non-recursive mutexes has to do with the nature of
Emacs itself.  First, there is a large body of existing elisp that we
don't want to break.  And, second, Emacs changes over time and it is
very common to write backward compatibility hacks and the like to make
elisp work with multiple versions.  Finally, Emacs is not and will never
be a high-performance environment.

I think these issues imply that we should pick the safe option always.

As a concrete example, consider the one existing user-visible mutex in
Emacs right now: the minibuffer mutex.  Lots of code, like yes-or-no-p,
acquires and releases this mutex.

But suppose you want to write a function that uses the minibuffer for a
multi-step operation, and you want to use yes-or-no-p (or something
else) as a subroutine.

If you have recursive mutexes, no problem, just acquire the lock.

If you don't have recursive mutexes, then all the primitives must be
duplicated into -lock and -nolock variants; or, the primitives should do
no locking and must be called with the lock held.

I'm not a fan of the first option, since it means an explosion of
functions.  And the second option is also bad, because it breaks
existing elisp.

(FWIW I am not sure a minibuffer mutex is the right thing.  It seems
like this should be at least per-terminal.)

Ken> If all mutexes are recursive, I'd like a
Ken> way to find out if I've already got a mutex locked, so I can
Ken> manually detect when I've screwed up my locking model, even if
Ken> someone else wants to use recursive mutexes in their code.

Ken> BTW, one extension I'd suggest is an optional timeout for
Ken> mutex-lock

These make sense to me.

Tom




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

* Re: Concurrency
  2010-03-29 15:37                                               ` Concurrency Tom Tromey
  2010-03-29 16:16                                                 ` Concurrency Stefan Monnier
  2010-03-29 16:33                                                 ` Concurrency Ken Raeburn
@ 2010-03-29 17:37                                                 ` Giuseppe Scrivano
  2010-03-29 18:21                                                   ` Concurrency Stefan Monnier
  2 siblings, 1 reply; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-03-29 17:37 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ted Zlatanov, Stefan Monnier, emacs-devel

Tom Tromey <tromey@redhat.com> writes:

> Also, I think mutex-unlock should throw some kind of error if the mutex
> is owned by a different thread.  What do you think of that?

I think we should consider what will happen when the current cooperative
threads model will be replaced and threads will run freely.  In that
case probably we will want to use pthread mutexes, not our
implementation.  Any invariant we introduce now, must be followed later
as well or we will end to break code.  Pthread specifications say for
default mutex'es that the behaviour is undefined when you attempt to
unlock a mutex owned by another thread, instead an error is returned
when a recursive mutex is used.  So I think we can rely on this error
and introduce it only if we are not going to use default mutex'es,
unless later we want to implement them on the top of recursive ones.

What do you think?

Cheers,
Giuseppe




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

* Re: Concurrency
  2010-03-29 16:49                                           ` Concurrency Tom Tromey
@ 2010-03-29 17:39                                             ` Stefan Monnier
  0 siblings, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-29 17:39 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ken Raeburn, emacs-devel@gnu.org discussions

Tom> * Suppose you have existing elisp that creates a process with a filter,
Tom> and the filter changes a let-bound variable, and the "outer" elisp
Tom> blocks in sit-for waiting for the filter to do its thing.  Nothing in
Tom> the current code guarantees that the process filter will be run in the
Tom> "correct" thread.
Ken> That may be a reason to force the filter to run in the same thread
Ken> that created it.
> Yeah.  I was thinking perhaps process filters could have a thread
> attribute, which would default to their creating thread.  Setting this
> to nil could mean that the process filter could run in any thread.

Or maybe accept-process-output should cause the filters to be run in the
waiting thread (especially when the `proc' argument is provided).


        Stefan




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

* Re: Concurrency
  2010-03-29 16:36                                                   ` Concurrency Ken Raeburn
@ 2010-03-29 17:41                                                     ` Stefan Monnier
  0 siblings, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-29 17:41 UTC (permalink / raw)
  To: Ken Raeburn; +Cc: emacs-devel@gnu.org discussions

>>> Also, I think mutex-unlock should throw some kind of error if the mutex
>>> is owned by a different thread.  What do you think of that?
>> That doesn't sound useful.  There are perfectly valid ways to use mutexes
>> where the locker and the unlocker are not the same thread.
> True... but there are models where it would be a bug, plain and simple.

Bugs happen.  It's only a problem if they happen often enough to warrant
the pain of imposing additional constraints.  I'd expect most uses of
"same-thread unlock" to be covered by the scoped with-mutex
construct anyway.

> Maybe it should be an option to mutex-unlock?

Let's not add complexity until it's clear that it's needed.


        Stefan




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

* Re: Concurrency
  2010-03-29 16:58                                                   ` Concurrency Tom Tromey
@ 2010-03-29 17:46                                                     ` Stefan Monnier
  0 siblings, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-29 17:46 UTC (permalink / raw)
  To: Tom Tromey; +Cc: Ken Raeburn, emacs-devel@gnu.org discussions

> (FWIW I am not sure a minibuffer mutex is the right thing.  It seems
> like this should be at least per-terminal.)

I think the minibuffer-mutex variable makes a lot of sense, but yes, it
will have to be terminal-local, but that can be changed later once the
rest of the code is ready for it.


        Stefan




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

* Re: Concurrency
  2010-03-27 13:33                                   ` Concurrency Stefan Monnier
@ 2010-03-29 18:18                                     ` Tom Tromey
  0 siblings, 0 replies; 162+ messages in thread
From: Tom Tromey @ 2010-03-29 18:18 UTC (permalink / raw)
  To: Stefan Monnier; +Cc: Ted Zlatanov, emacs-devel

Stefan> Actually, we need both: we need to document the changes, as seen
Stefan> by an Elisp programmer (fits in etc/NEWS), and we need to
Stefan> document the way it works internally, the invariants upon which
Stefan> it relies and things like that.

I can supply some of the raw data here, if not the commits.

We added a few new lisp objects:

* thread_state.  This represents a single thread.  Before dumping, only
  one thread may exist.

  Some C variables which were formerly global were moved into this
  struct, and replaced with a redirecting #define.  E.g.:

  /* Pointer to beginning of specpdl.  */
  struct specbinding *m_specpdl;
#define specpdl (current_thread->m_specpdl)

  Exactly which things needed to be in this structure was determined in
  an ad hoc way; mostly by looking at `nm' to see what globals were
  interesting.

* Lisp_Mutex.  A mutex, should be obvious.

* Lisp_ThreadLocal.  This is used to represent a thread-local binding.
  It has a slot for the global value, and an alist mapping threads to
  a thread-local slot.  If a thread is not in the alist, the global
  binding is used.

  A Lisp_ThreadLocal can appear in a number of places, e.g. in a
  variable binding, in a Lisp_Object global variable, etc.

  We rewrote a lot of the C code to automatically indirect through a
  Lisp_ThreadLocal, when found.  There is a new header, globals.h, which
  has many lines of the form:

#define Vafter_change_functions *find_variable_location (&impl_Vafter_change_functions)

  A couple things about this line:

  * The expansion is chosen so that both rvalue and lvalue uses work.
  * The underlying global is renamed to catch any errors.

There are other changes (in the GC, in the binding code) but I think
those are relatively self-explanatory in the code... at least, hopefully
as much as the code was before.

Tom




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

* Re: Concurrency
  2010-03-29 17:37                                                 ` Concurrency Giuseppe Scrivano
@ 2010-03-29 18:21                                                   ` Stefan Monnier
  0 siblings, 0 replies; 162+ messages in thread
From: Stefan Monnier @ 2010-03-29 18:21 UTC (permalink / raw)
  To: Giuseppe Scrivano; +Cc: Tom Tromey, Ted Zlatanov, emacs-devel

>> Also, I think mutex-unlock should throw some kind of error if the mutex
>> is owned by a different thread.  What do you think of that?
> I think we should consider what will happen when the current cooperative
> threads model will be replaced and threads will run freely.  In that
> case probably we will want to use pthread mutexes, not our
> implementation.

That's a good point.


        Stefan "who really wishes we used higher-level abstractions
                than locks, such as atomic-regions"




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

* gsoc for concurrent Emacs? (was: Concurrency)
  2010-03-28 21:17                                       ` Concurrency Tom Tromey
  2010-03-29 16:25                                         ` Concurrency Ken Raeburn
@ 2010-03-31 17:13                                         ` Ted Zlatanov
  2010-04-01  9:45                                           ` Giuseppe Scrivano
  1 sibling, 1 reply; 162+ messages in thread
From: Ted Zlatanov @ 2010-03-31 17:13 UTC (permalink / raw)
  To: emacs-devel

On Sun, 28 Mar 2010 15:17:49 -0600 Tom Tromey <tromey@redhat.com> wrote: 

Tom> * Documentation; NEWS, as you said, but also the lisp reference manual.
...
Stefan> PS: And place this info in a file in the `concurrent' branch.

Tom> I hope someone else can do that.

Just a suggestion:

I think the concurrent Emacs project is nicely standalone and would make
a good GSoC project (see
http://www.gnu.org/software/soc-projects/ideas-2010.html, where Guile
integration is already mentioned).  The concurrent Emacs branch
obviously needs some work, especially with documentation, but is
probably at a level suitable for an interested CS/CE student.

I'm not the one to propose this but if Giuseppe or Tom want, they can
e-mail summer-of-code@gnu.org as the URL above suggests.  GSoC requires
a mentor so it's not completely hands-off...

Ted





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

* Re: gsoc for concurrent Emacs? (was: Concurrency)
  2010-03-31 17:13                                         ` gsoc for concurrent Emacs? (was: Concurrency) Ted Zlatanov
@ 2010-04-01  9:45                                           ` Giuseppe Scrivano
  0 siblings, 0 replies; 162+ messages in thread
From: Giuseppe Scrivano @ 2010-04-01  9:45 UTC (permalink / raw)
  To: Ted Zlatanov; +Cc: emacs-devel

Ted Zlatanov <tzz@lifelogs.com> writes:

> I think the concurrent Emacs project is nicely standalone and would make
> a good GSoC project (see
> http://www.gnu.org/software/soc-projects/ideas-2010.html, where Guile
> integration is already mentioned).  The concurrent Emacs branch
> obviously needs some work, especially with documentation, but is
> probably at a level suitable for an interested CS/CE student.

I am not sure there are enough tasks at this point that a GSoC project
is needed for the cooperative model we are using and I am afraid it is
too early yet to think about a new one.  AFAICS, the main activity to
get the concurrent model working is bug-fixing.



> I'm not the one to propose this but if Giuseppe or Tom want, they can
> e-mail summer-of-code@gnu.org as the URL above suggests.  GSoC requires
> a mentor so it's not completely hands-off...

If the Emacs maintainers think it is worthwhile, I am available for
mentoring.


Cheers,
Giuseppe




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

end of thread, other threads:[~2010-04-01  9:45 UTC | newest]

Thread overview: 162+ messages (download: mbox.gz follow: Atom feed
-- links below jump to the message on this page --
2010-01-28  0:19 redisplay system of emacs alin.s
2010-01-28  4:13 ` Eli Zaretskii
2010-01-28  9:07   ` Lennart Borgman
2010-01-28 11:27     ` Eli Zaretskii
2010-01-28 11:47       ` Lennart Borgman
2010-01-28 12:43         ` Eli Zaretskii
2010-01-28 12:53           ` Lennart Borgman
2010-01-28 14:10             ` Miles Bader
2010-01-28 15:04               ` alin.s
2010-01-28 22:34               ` Lennart Borgman
2010-01-29 10:04               ` Paul R
2010-01-29 10:17                 ` David Kastrup
2010-01-29 10:23                   ` Lennart Borgman
2010-01-29 10:30                     ` David Kastrup
2010-01-29 13:18                       ` Lennart Borgman
2010-01-29 11:03                     ` Miles Bader
2010-01-29 11:38                       ` Eli Zaretskii
2010-01-29 15:10                         ` Miles Bader
2010-01-29 17:30                           ` Eli Zaretskii
2010-01-29 10:48                   ` Paul R
2010-01-29 11:01                     ` David Kastrup
2010-01-29 18:19                   ` Stefan Monnier
2010-01-29 11:35                 ` Eli Zaretskii
2010-01-29 13:06                   ` Paul R
2010-01-29 13:10                     ` David Kastrup
2010-01-29 13:45                     ` Eli Zaretskii
2010-01-29 15:28                     ` Chong Yidong
2010-01-29 18:35                     ` Stefan Monnier
2010-01-29 18:56                       ` Óscar Fuentes
2010-01-30 11:46                         ` Richard Stallman
2010-01-30 12:51                           ` Óscar Fuentes
2010-01-30 15:39                             ` Eli Zaretskii
2010-01-30 19:21                               ` Óscar Fuentes
2010-01-30 21:31                                 ` Eli Zaretskii
2010-01-31  9:32                               ` David Kastrup
2010-01-31 12:41                             ` Richard Stallman
2010-01-29 19:53                       ` Eli Zaretskii
2010-01-30 18:04                         ` Stefan Monnier
2010-01-30 18:39                           ` Stephen J. Turnbull
2010-01-30 10:34                       ` Fabian Ezequiel Gallina
2010-01-30 10:52                         ` David Kastrup
2010-01-30 21:18                         ` Stefan Monnier
2010-01-29 13:07                   ` David Kastrup
2010-01-28  5:10 ` Ken Hori
2010-01-28 12:10 ` Stephen J. Turnbull
2010-01-28 13:41   ` alin.s
2010-01-28 14:50     ` Stephen J. Turnbull
2010-02-12  8:31 ` alin.s
2010-02-12 12:10   ` Juanma Barranquero
2010-02-12 13:41     ` alin.s
2010-02-12 12:49   ` Jan Djärv
2010-02-12 13:30     ` alin.s
2010-02-12 14:25       ` Jan Djärv
2010-02-12 14:37         ` alin.s
2010-02-12 14:53         ` alin.s
2010-02-12 15:11           ` Jan Djärv
2010-02-12 15:31             ` David Kastrup
2010-02-12 15:55               ` Jan Djärv
2010-02-12 16:53               ` alin.s
2010-02-12 18:55                 ` David Kastrup
2010-02-14 19:13                   ` alin.s
2010-02-17 13:14                     ` Chong Yidong
2010-02-23  0:45                       ` Giuseppe Scrivano
2010-02-23  3:01                         ` David Reitter
2010-02-23  3:34                           ` Tom Tromey
2010-02-23 14:31                         ` Richard Stallman
2010-03-05 22:53                         ` Concurrency (was: redisplay system of emacs) Stefan Monnier
2010-03-05 22:57                           ` Andreas Schwab
2010-03-11 14:18                           ` Giuseppe Scrivano
2010-03-25 16:49                           ` Giuseppe Scrivano
2010-03-26 17:10                             ` Concurrency Ted Zlatanov
2010-03-26 19:37                               ` Concurrency Tom Tromey
2010-03-27  3:00                                 ` Concurrency Ted Zlatanov
2010-03-27 13:33                                   ` Concurrency Stefan Monnier
2010-03-29 18:18                                     ` Concurrency Tom Tromey
2010-03-28 19:40                                   ` Concurrency Tom Tromey
2010-03-28 20:03                                     ` Concurrency Stefan Monnier
2010-03-28 20:25                                       ` Concurrency Davis Herring
2010-03-28 20:54                                         ` Concurrency Giuseppe Scrivano
2010-03-28 23:18                                           ` Concurrency Stefan Monnier
2010-03-29 10:04                                             ` Concurrency Giuseppe Scrivano
2010-03-29 15:37                                               ` Concurrency Tom Tromey
2010-03-29 16:16                                                 ` Concurrency Stefan Monnier
2010-03-29 16:36                                                   ` Concurrency Ken Raeburn
2010-03-29 17:41                                                     ` Concurrency Stefan Monnier
2010-03-29 16:33                                                 ` Concurrency Ken Raeburn
2010-03-29 16:58                                                   ` Concurrency Tom Tromey
2010-03-29 17:46                                                     ` Concurrency Stefan Monnier
2010-03-29 17:37                                                 ` Concurrency Giuseppe Scrivano
2010-03-29 18:21                                                   ` Concurrency Stefan Monnier
2010-03-28 21:19                                         ` Concurrency Tom Tromey
2010-03-28 21:22                                         ` Concurrency Daniel Colascione
2010-03-28 23:20                                           ` Concurrency Stefan Monnier
2010-03-29  2:18                                           ` Concurrency Tom Tromey
2010-03-28 21:17                                       ` Concurrency Tom Tromey
2010-03-29 16:25                                         ` Concurrency Ken Raeburn
2010-03-29 16:49                                           ` Concurrency Tom Tromey
2010-03-29 17:39                                             ` Concurrency Stefan Monnier
2010-03-31 17:13                                         ` gsoc for concurrent Emacs? (was: Concurrency) Ted Zlatanov
2010-04-01  9:45                                           ` Giuseppe Scrivano
2010-03-28 21:04                                     ` Concurrency Giuseppe Scrivano
2010-03-28 21:25                                     ` Concurrency Daniel Colascione
2010-03-29  2:20                                       ` Concurrency Tom Tromey
2010-02-14 19:25                   ` redisplay system of emacs alin.s
2010-02-16 16:40                 ` Davis Herring
2010-02-16 19:20                   ` grischka
2010-02-16 19:55                     ` Thien-Thi Nguyen
2010-02-17 13:56                       ` alin.s
2010-02-16 20:00                     ` Eli Zaretskii
2010-02-16 20:56                       ` grischka
2010-02-17  4:20                         ` Eli Zaretskii
  -- strict thread matches above, loose matches on Subject: below --
2010-01-29 19:48 grischka
2010-01-30  5:39 ` Stephen J. Turnbull
2010-01-30  9:53   ` David Kastrup
2010-01-30 11:01     ` Stephen J. Turnbull
2010-01-30 11:08       ` David Kastrup
2010-01-30 11:54         ` Paul R
2010-01-30 13:52           ` Stephen J. Turnbull
2010-01-30 11:24       ` Eli Zaretskii
2010-01-30 12:53       ` Alan Mackenzie
2010-01-30  9:57   ` Eli Zaretskii
2010-01-30 11:46 ` Richard Stallman
2010-01-30 12:11   ` Paul R
2010-01-30 13:26     ` Alan Mackenzie
2010-01-30 13:42       ` David Kastrup
2010-01-30 13:49       ` Juanma Barranquero
2010-01-30 13:54       ` Paul R
2010-01-30 15:15         ` Stephen J. Turnbull
2010-01-30 15:07       ` Stephen J. Turnbull
2010-01-31 12:41     ` Richard Stallman
2010-01-31 16:36       ` grischka
2010-02-01 21:06         ` Richard Stallman
2010-02-02  3:32           ` Stephen J. Turnbull
2010-02-02 21:21             ` Richard Stallman
2010-02-02 21:42               ` David Kastrup
2010-02-03  0:24                 ` Lennart Borgman
2010-02-03  6:45                   ` David Kastrup
2010-02-03 13:34                 ` Richard Stallman
2010-02-03 14:15                   ` David Kastrup
2010-02-03 14:18                     ` Daniel Colascione
2010-02-04 11:01                       ` Richard Stallman
2010-02-03  2:48               ` Stephen J. Turnbull
2010-02-03 12:19                 ` Juanma Barranquero
2010-02-04 11:00                   ` Richard Stallman
2010-02-04 11:06                     ` Juanma Barranquero
2010-02-05 12:44                       ` Richard Stallman
2010-02-05 18:37                         ` grischka
2010-02-03 13:34                 ` Richard Stallman
2010-02-03 17:26                   ` Stephen J. Turnbull
2010-02-03 17:45                     ` David Kastrup
2010-02-03 18:35                     ` grischka
2010-02-03 18:36                     ` Óscar Fuentes
2010-02-03 19:03                       ` Lennart Borgman
2010-02-03 20:31                         ` Ted Zlatanov
2010-02-03 20:37                           ` Lennart Borgman
2010-02-04  8:23                       ` Stephen J. Turnbull
2010-02-04 23:18                         ` Richard Stallman
2010-02-05  5:46                           ` Stephen J. Turnbull
2010-02-04 11:01                     ` Richard Stallman
2010-02-04 11:38                       ` David Kastrup
2010-02-05 19:08                         ` Richard Stallman
2010-02-04 12:28                       ` Stephen J. Turnbull

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).