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

Linux development: Command Line, Emacs or IDE?

this makes for interesting reading.                                                                
  Version Control                                            
             Linux development: CLI, Emacs, or IDE?             
  Joe Barr gets few equivocal answers from leading developers   
           Summary Joe Barr asks nine leading Linux             
      developers which development environment they             
      prefer, and details the reasoning behind his              
      personal choices. (2,300 words)                           
The topic on my mind this week is development environments,     
namely, which development environment is preferred by the       
majority of Linux developers -- CLI, Emacs, or IDE? I want your 
feedback on this question, and I have opinions of my own on the 
subject, but to get the ball rolling I asked a number of        
well-known developers this leading question: Are you a CLI kind 
of developer -- using vi, gcc, or gdb -- or do you prefer Emacs 
or an IDE or something else altogether?                         
Looking over the answers, I'm struck by two things. First,      
nobody is using IDEs. Second, Linux developers either love Emacs
or hate it.                                                     
Emacs? Holy carpal tunnel syndrome, code critters! This Linux   
development environment may be a little more hostile than I     
Yes, Emacs. It's a popular choice, but not a universal one. Eric
S. Raymond, for example, the author of Fetchmail and well-known 
open source evangelist, essayist, and developer, says "Emacs is 
my IDE."                                                        
But don't worry, not everyone who responded needs to be placed  
in a 12-step program for Emacs abuse. Linus Torvalds, for one,  
says that "GNU Emacs is just evil."                             
To see these two responses in full, and all the others as well, 
cursor is over the summary chart. Wait, that's not fair. Emacs  
users are going to believe me. Sorry, just my idea of a little  
(Actually, there is a table at the end of this week's column    
that sums up the responses to my question.)                     
Who am I to be casting stones, anyway? Not only am I merely an  
aspiring Linux developer, people laugh openly when they see the 
editor I use in DOS. That's what I do in my day job, by the     
way. Tote that C code, and for a DOS environment, no less.      
PE II (Personal Editor II) is the editor I've used for the past 
15 years to code in half a dozen languages. When I've coded on  
PCs, that is.                                                   
But hey, don't laugh. If you came up the same way I did, you    
might still be using PE II yourself. My first coding assignment 
on a PC was to crank out 250,000 lines of COBOL using           
EDLIN. That's because EDLIN came bundled with PC-DOS and my     
manager at EDS didn't think PCs would ever be important enough  
to justify the investment in tools to write software for them.  
When I finally raised a big enough stink about using a line     
editor to produce volumes of code, my manager sprang for a copy 
of PE II. I was pretty sure I had found nirvana.                
Is PE II really that good? Frankly, no. It's just that I'm      
really that lazy. I've used it for so long that it's like       
breathing to me. I don't have to think about where the keys are 
or what they do. I just think about what I want to do and it    
When I need to edit a C file that is too large for PE II, I use 
Brief. Sure, Brief is bigger, better, and faster than PE II. But
its key bindings aren't etched into my skull like the pattern on
an old monochrome monitor that's been displayed for months.     
But enough about that. I know what my preferred C/C++           
programming environment is in DOS. I want to find my preferred  
programming environment in Linux. The reason I bring up my      
personal preference -- and the inertia that cements it -- is    
that I believe the same sort of inertia is at work among the    
developers I queried.                                           
Those who responded with a preference for an editor other than  
Emacs chose vi, vim, Micro Emacs, or jed. I'm not familiar with 
Micro Emacs or jed, but I do know vi.                           
I learned to code Informix 4GL and vi at the same time on an SCO
Unix box. Yes, vi is a very powerful tool. I respect it -- but I
also despise it. Maybe it beeped at me one too many times as I  
was learning to use it, I don't know. But I've never forgiven   
I do use vi these days for writing notes and hacking HTML, but I
would rather not use it for any extended period of time. The    
thought of vi (how does that tagline go, "vi, vi, vi -- the     
editor of the beast") alone is enough to keep me out of         
development work on Linux.                                      
KDE developer and evangelist Kurt Granroth has a different      
idea. When I asked him about his preferred development          
environment he said "I use vim (not just vi -- only vim will do)
with egcs and gdb." vim may be an improvement over vi, but it's 
too closely related for my taste. Friends of my enemies and all 
The good news for those who want to start hacking Linux source  
code or developing on a Linux box is that all the tools you need
are readily available. And free. Editors, compilers, debuggers, 
even IDEs are out there and free for the downloading.           
As Linux's popularity soars, so does interest in development on 
and for Linux. Not just among code critters like myself, but    
among those who produce tools for said code critters. Like      
Metrowerks, for example.                                        
Metrowerks has expanded its product line to include the booming 
Linux marketplace. This spring, it announced that the           
CodeWarrior IDE would be coming to Linux this year. CodeWarrior 
has about 75 percent of the Macintosh market and is also        
available for Windows.                                          
Actually, Metrowerks's CodeWarrior already has made an          
impression on the Unix and Linux community. It was the          
inspiration for Code Crusader, a project to build a complete    
development IDE based on Code Crusader, Code Medic (debugger),  
and Code Fortress (source control). Perhaps the growing         
popularity of Code Crusader influenced Metrowerks's decision to 
port to Linux.                                                  
So, how does a commercial product like CodeWarrior compete      
against an establishment that is fundamentally CLI-based, as    
well as against free clones of itself? Evidently pretty well.   
Jean Belanger, chairman and CEO of Metrowerks, told me last week
that "we have never had such a response from the retail channel 
for any product we have ever launched."                         
I asked for and received a review copy of the currently shipping
GNU edition for Red Hat Linux ($99, SRP). I'm impressed. A      
"professional edition" is slated for production later this year.
I like the idea of the IDE building make files for me           
automatically. I like the idea of realtime update of source code
from within the debugger. I like the idea of a full-featured,   
built-in editor. I like the ability to pick and choose my       
compiler and debugger.                                          
Speaking of debuggers, I'm using DDD, which is supplied with the
Metrowerks GNU edition. Pretty nice. It's true that by choosing 
an IDE, I will never be mistaken for an 0day Linux              
developer. All those guys seem to be averse to getting their    
fingers in the GUI stuff.                                       
And that's OK. Linux is changing and the GUI is a big reason for
its continued growth and popularity. I can feel like an         
old-timer at work any time I want. As I move into Linux         
development, I want to take advantage of all the best tools.    
I may be wrong, but I think a lot of developers moving away from
the Windows environment are going to feel the same way.         
What about you? How do you answer the question I posed to Linus 
Torvalds and the rest of the Linux gang?                        
The table below summarizes the responses to my question,        
specifically, each respondent's choice of editor, debugger,     
compiler, IDE, and background or experience. Individual comments
by the respondents follow.                                      
 Respondent Editor Compiler    Debugger     IDE    Background   
 Jonathan   Emacs    gcc         gdb       Emacs  GNOME Control 
 Blanford                                            Center     
 Jay Cox    XEmacs   Pro       gdb, dbx    XEmacs     GIMP      
 Kurt        vim     egcs        gdb        None       KDE      
 Carsten     jed     gcc         None       None  Enlightenment 
 Andi         vi     gcc         gdb       XEmacs      PHP      
 Eric       Emacs    gcc         gdb       Emacs    Fetchmail   
 S. Raymond                                                     
 Linus      Micro    gcc         None       None      Linux     
 Torvalds   Emacs                                               
 Marius     Emacs    gcc         gdb       Emacs    Guile+GTk   
 Alan Cox    None    gcc    GNOME-terminal  None  Linux kernel  
And now, the full responses to my question: Are you a CLI kind  
of developer -- using vi, gcc, or gdb -- or do you prefer Emacs 
or an IDE or something else altogether?                         
Jonathan Blanford                                               
Well, like most linux developers, I suppose I am a CLI guy. I   
develop almost entirely in Emacs, with many, many buffers open  
(I have somewhere around 40 right now). I use a shell in Emacs  
to run the application I'm developing, and generally debug using
Emacs's gdb mode. I also compile using compile mode within      
Emacs. I use etags pretty extensively, as well as tab completion
and syntax color highlighting and formatting. Pretty standard   
stuff, I guess. I also have a few templates written out to      
automate some code generation, but they're somewhat specialized.
Kurt Granroth                                                   
Right the first time! I use vim (Not just vi -- only vim will   
do) with egcs and gdb. I've been known to try different IDEs    
(KDevelop, Code Crusader, et al.) ... but I've never stuck with 
one for more than a trial period.                               
Andi Gutmans                                                    
We have pretty much moved to developing with Visual             
Studio. However, we started with vi plus gcc plus gdb, and      
that's what we use when we develop PHP on Linux. I personally   
also like using XEmacs when working with other non-PHP Unix     
Jay Cox                                                         
Actually, I develop under IRIX. I am definitely a CLI           
guy. Currently I'm using XEmacs plus MIPS/Pro C/C++ plus dbx,   
though it wasn't that long ago I was using XEmacs plus egcs/gcc 
plus gdb.                                                       
Does XEmacs qualify as an IDE?                                  
Eric S. Raymond                                                 
Emacs is my IDE. Yep, Emacs plus gcc plus gdb plus rcs.         
Linus Torvalds                                                  
I use                                                           
   o Tons of xterms                                             
   o Micro Emacs (which has nothing at all to do with GNU Emacs,
     but is a very simple editor with basically the same        
   o make plus gcc, of course                                   
I'm not a big believer in IDE's or in debuggers -- I tend to use
debuggers to see where a bug happens, and then I go back into   
the source and try to understand the bug rather than try to look
at any specific case that made the bug happen. And IDEs tend to 
be too limiting for me (I prefer having five different xterms   
open, and to do anything I want in any of them).                
And GNU Emacs is just evil. You can tell that it was designed in
a time when you only had one terminal, not many windows. So it  
tries to do everything in the same window.                      
Marius Vollmer                                                  
Yes, very much.                                                 
I use Emacs running under X11 as my UI, plus the usual          
assortment of tools like make, gdb, gprof, autoconf, automake,  
TeX. I also use xterms because I find their terminal emulation  
to work better than the Emacs shell-mode.                       
Alan Cox                                                        
I don't think there is anything special here: GNOME-terminal    
windows, make, gcc -- and a second box for crashing with new    
kernel images. *                                                
Discuss this article in the LinuxWorld forums (42  postings) 
              (Read our forums FAQ to learn more.)              
 Sign up for FREE E-mail Alerts & Enter to WIN a NetWinder      
About the author                                                
Joe Barr is a software professional, writer, and self-proclaimed
dweeb. He has been working in the industry since 1974 as a      
programmer, analyst, consultant, and manager. In 1994 he began  
writing a monthly column called Papa Joe's Dweebspeak Primer in 
Austin, TX's Tech Connected magazine. The column exists today as
an e-zine and newsletter at www.pjprimer.com, which has run on  
Linux since its inception.                                      

Best Regards,

      Adobe Systems                 Tel: 1 408 536 3945   (W14-128)
      Advanced Technology Group     Fax: 1 408 537 4042
      W14-128 345 Park Avenue     Email: raman@xxxxxxxxxxx
      San Jose , CA 95110 -2704     Email:  raman@xxxxxxxxxxx
      http://labrador.corp.adobe.com/~raman/        (Adobe Intranet)
      http://cs.cornell.edu/home/raman/    (Cornell)
    Disclaimer: The opinions expressed are my own and in no way should be taken
as representative of my employer, Adobe Systems Inc.

       To unsubscribe or change your address send mail to
"emacspeak-request@xxxxxxxxxxx" with a subject of "unsubscribe" or "help"

Emacspeak Files | Subscribe | Unsubscribe