freeride-devel
[Top][All Lists]
Advanced

[Date Prev][Date Next][Thread Prev][Thread Next][Date Index][Thread Index]

Re: [FR-devel] Newbie to freeride.


From: Yohanes Santoso
Subject: Re: [FR-devel] Newbie to freeride.
Date: 07 May 2002 19:36:40 -0700
User-agent: Gnus/5.09 (Gnus v5.9.0) Emacs/21.1

"Baptiste Lepilleur" <address@hidden> writes:

> Indeed, those functionnalities are already provided by Scintilla with some
> limitation (I'm not sure what Region and Rectangle are).

region is almost like a selection. rectangle is a rectangle-shaped
selection over some content. so, region and rectange difers only by
their shapes (region follows the topography of the content).

region differs from selection found in many editors by the number of
operations it supports. typically, selection can only be cut, copied,
and pasted. With region, for the content within the region, you can
apply special indentation, sort, count lines (within that very
region), count words, etc. Especially, sorting within region is useful
for rearranging a collection of methods.

For example, suppose I have a class with unarranged methods. First,
I'd fold the lines so that only methods name are visible. Then I draw
a region around the methods that I want to rearrange, and sort it. I
can also do custom sorting: put the private get/set methods on the top
of the class and sort it, and then put the public get/set methods on
the bottom of the class definition and sort it. 

Or, to turn this mess (taken from the Apache's Jetspeed) (abridged,
the original has 30 import lines):

import org.apache.turbine.modules.ActionLoader;
import java.util.Locale;
import javax.servlet.http.Cookie;
import org.apache.velocity.context.Context;
import java.io.StringWriter;
import org.apache.turbine.om.security.peer.TurbineUserPeer;

into:

import java.io.StringWriter;
import java.util.Locale;
import javax.servlet.http.Cookie;
import org.apache.turbine.modules.ActionLoader;
import org.apache.turbine.om.security.peer.TurbineUserPeer;
import org.apache.velocity.context.Context;

Basically, the concept of operatable selection is very handy. Of
course, Scintilla's selection can be enhanced so as to support the
above functionalities.

> driving that project to ? While emacs is very flexible and have a
> lot of functionnalities, I never really managed to get into it (this
> is my personal opinion, some will disagree). Because there is a lot
> of commands, you often needs to enter a sequence of two or three
> keys to run a command. I'm not

You striked the gold mine! Emacs's main problem to newcomer is that
it's too flexible and too rich. There is no difference between the UI
presented to an expert user and a beginner (everyone is assumed to be
a regular emacs user). There are too many commands (or rather lisp
functions) to understand and memorise their names for a beginner (even
regular users keep finding new commands).

I'm not proposing to create yet another emacs. There are already too
many emacs look-alike. I'm proposing that we copy emacs' engine
because it is a proven design that is so oh flexible. How many editors
out there that can do cvs, code editing, debugging, compiling, shell
interaction, spelling, hex-editing, news and mail reading, WYSIWYG
word processing, xml/sgml/html editing, extensible, programmable,
refactoring, project management, calendaring, diary, draw ascii art,
play tetris sokoban asteroid, etc. All these are based on only two
concepts: character-addressable buffer, and operatable selection.

What I'm proposing is to put a sane UI on top of that flexibility. A
UI so sane that even beginner can use it without being overwhelmed by
its flexibility. A keybinding so simple and sane that even beginner
can understand. An alternative keybinding that is not so sane to help
people transition from emacs, etc.

Unix is a great example.If you go to the /usr/bin directory of any
unix and do an ls there you'll be presented with thousands of
executable. Where to begin? What to do? This is all a mystery.

Then came Mac OS X. You don't even know you're on top of a unix
box. The UI is so encompasing and sane that even my mom can use. Yet
it also allows you to drop in to the shell level if you want to.

> saying it can not be done without emacs underlying complexity (emacs
> was originaly a text based application, with a text command line and
> the Xemacs version never had a great UI), but it would require
> careful UI design.

Baptiste was being kind when he said xemacs version never had a great
UI. It has an insane UI that I have grown too accustomed to.

The other reason for leaving behind emacs is its lisp dependancy. How
many people still understand lisp? It used to be a very popular
language, now it is just a niche language. It's hardly being taught in
CS program anymore and it has grown too complicated too. I bet given a
choice, people would readily choose to learn ruby than lisp. I learned
lisp only because my company is one of the few companies that still
use lisp.

I checked out Scintilla. I think it is great! But I had difficulty in
imagining it being easily extendible by user. Although it provides
lexer for many languages, they are written in C++, so it can't be
extended from within the freeride environment. Also, it is tied too
tightly to GUI. While TUI is dying, it still serves some purpose. When
I go to a customer site, I often had to wait for 1/2->1 hour. During
waiting I'd request an access to a computer and armed with a floppy
disk containing putty (a win32 ssh client), i'd connect to my work
computer and do some coding without installing anything.

User extensibility is a great an important feature. As Euan said in
his post 'Ultimate FreeRIDE', he foresees freeride as the great
melting pot for ruby programmers. I share his optimism too. 

In a way, freeride is like emacs in 1970s. At that time lisp is in
existence but there is no common implementation platform. Emacs came
as just an ide, just like freeride, but ends up as the defacto lisp
platform, transcending machine and OS boundaries. Today, most lisp
libraries are packaged for use within emacs, and there is even a
religion founded on it (check out alt.religion.emacs) (of which I'm
not a member). Isn't this the potential for freeride? (I'll laugh so
hard the day there is alt.religion.freeride :) ).

Now for implementation issue: Curt is right in saying this could be a
waste of time or it could be a wonderful thing. I'd go do parallel
devel but there are two problems: 1. I have never done extensive UI
programming much less UI designing. 2. I can't do the engine by myself
(not enough skill, time, etc). 3. I am afraid that even after this
long talk trying to convince people and myself, this is going to be a
waste of time because perhaps in reality there are better ways to have
a sane UI and capabilities of emacs without this much work.

Oh well, I guess I'll go on until I think my work is useless.

YS.



reply via email to

[Prev in Thread] Current Thread [Next in Thread]