Slashdot Mirror


On Plug-ins and Extensible Architectures

gManZboy writes "Developers who want a flexible, configurable, IDE have long preferred plug-in architectures such as Eclipse over what they might view as the bloated, monolithic alternatives. Ever wondered how it all works? Well, ACM Queue just posted an article by someone who has worked on Eclipse since its inception, Dorian Birsan. He gives a great explanation of the Eclipse architecture as well as a thorough analysis of things to watch out for when developing or working with pure plug-in architectures."

37 of 173 comments (clear)

  1. Lots of plugins = bloat by bfizzle · · Score: 2, Interesting

    Is bloat really a problem with too many features or more to do with bad coding?

    How long is it before someone has so many plugins installed they are back to square one for bloat? Any operating system runs well when you first start it up. Users run into bloat problems after they have installed weatherbug, messenger programs and all the other crap they must have.

    1. Re:Lots of plugins = bloat by denis-The-menace · · Score: 4, Insightful

      At least this is the user's choice.
      Bloat then becomes a consequence of the user's choices and not something forced upon the user by the developer.

      --
      Obama's legacy: (N)othing (S)ecure (A)nywhere and (T)error (S)imulation (A)dministration
    2. Re:Lots of plugins = bloat by Martin+Blank · · Score: 3, Insightful

      Does that make it a poor argument?

      --
      You can never go home again... but I guess you can shop there.
    3. Re:Lots of plugins = bloat by bfizzle · · Score: 2, Insightful

      Oh that makes alot of sense.

      How in the hell can you relate a serial killer to fast food? I will not have any sympathy for someone who makes a choice to put food in their mouths they know will kill them eventually.

      You go to their place of business and order food that unless you are a complete dumb ass you know what you are getting. Stop trying to make excuses for the people who think if they drink diet soda they won't get fat.

  2. Could you tone down the editorial bashing? by Anonymous Coward · · Score: 4, Funny

    Might I suggest a slight rewrite of the first sentence:

    Developers who want a flexible, configurable, IDE have long preferred plug-in architectures such as Eclipse over what they might view as the alternatives that promote pedophilia and Satanism.

    It just sounds more professional.

  3. Surprisingly like cooking! (analogy) by FortKnox · · Score: 5, Funny

    The whole plugin environment works a lot like cooking a large meal. Add in extra ingredients, or substituting one ingredient for another can create a whole new experience. You could even use the same 'plugins' for different 'bases' if you provided the functionality correctly... like having pork (Java) as the basis for your sauce or chicken (.Net).

    But, it can be a tremendously dangerous[tt] if not done correctly, so you could almost make the analogy of baking instead of cooking. Only specific elements can be used or you could ruin the whole dish... could you relate bloated software that hardly runs with something like a ruined custard or creme brulee??

    --
    Good quote, too many chars. Seriously, the slashdot 120 char limit sucks!
  4. Plugin Hell by obender · · Score: 4, Insightful
    From TFA:

    Most of you have probably experienced "DLL hell" at some point and will look with suspicion on something that has the potential of being a "plug-in hell."

    I think we already passed the potential phase a long time ago. After a while you either give up installing the latest milestone or give up your added plugins.

  5. Hurd by roman_mir · · Score: 2, Interesting

    I love Eclipse actually, it doesn't do everything that I want though, for example MS .NET studio allows attaching to an already running process and debug it but Eclipse does not. It maybe due to Java limitations and maybe this feature will appear sometime in the future, but maybe it is just not possible to do? I am not sure.

    Now look at Hurd. Hurd is a plugin environment if I understand it correctly, but it is too low level, but I still wonder, will it be possible to use Hurd as not only OS level runtime but for high level apps?
    Just a thought.

    1. Re:Hurd by Manannon · · Score: 5, Informative

      Adding
      -Xdebug -Xrunjdwp:transport=dt_socket,server=y,address=800 0,suspend=n

      to the java command when you run the app you want to debug allows Eclipse (& others) to attach on port 8000 (of course you can choose any unused port number)

      If you want to debug an applet while it's running in a browser, you can specify the same arguments in the applet control panel.

  6. two concepts by 10am-bedtime · · Score: 4, Informative

    first key concept: late-binding.

    second key concept: single-root.

    summary: this article talks about a non-single-root late-binding architecture. there are, of course, other organizations: the quintessential single-root late-binding program, and the raft of non-late-binding programs.

    thus ends our cs moment of the day. we now return you to your regularly scheduled inanity...

  7. Article Text by MynockGuano · · Score: 5, Funny

    Plug-ins are implemented as the plug-ins plug-ins with plug-ins over plug-ins plug-ins plug-ins plug-ins plug-ins.

    Furthermore, plug-ins plug-ins plug-ins so that plug-ins plug-ins.

    Mine eyes glazeth over.

    P.S. plug-ins
    P.P.S I just like saying plug-ins. It's a funny word. Plug-ins. Hee!

    1. Re:Article Text by disposable60 · · Score: 4, Funny

      Malkovich? Malkovich! Malkovich. Malkovich.

      --
      You're looking for quotes? See my journal.
  8. Joking, of course by mccalli · · Score: 5, Insightful
    Developers who want a flexible, configurable, IDE have long preferred plug-in architectures such as Eclipse over what they might view as the bloated, monolithic alternatives.

    That was meant to be funny, right? Because few things are as so monolithically all-encompassing as Eclipse.

    I should reveal personal bias from the outset: I despite Eclise. Though it sits open in a window just next this one right now, I still loathe it with an utter passion.

    I cannot get its editor to put tabs in realistic, predicable places. I don't want my coding environment to start looking like MS Word, underlining things as problems simply because I haven't finished typing thm yet or am concentrating on another part of the design. I had to immediately turn off most of the auto-typing features such as adding brackets or quotes, because I found it vastly distracting. There's a plug-in to search the preferences! My god, that makes it out of control.

    I tried to use it at home the other day to import four existing source files and then generate a build.xml file for me. It never even worked out how to import the files with the right directory root, which given a pattern of src/org/eruvia//FileBelongingToPackage.java should have been src, not src/org/eruvia/appname.

    Can't stand the thing.

    Cheers,
    Ian

    1. Re:Joking, of course by seanmceligot · · Score: 2, Interesting

      I think you're right, they must have been joking.
      My installed eclipse takes up 99.9 megs and requires a 80 meg JDK and all that bloat, still doesn't make me want to stop using vim.

    2. Re:Joking, of course by sprekken · · Score: 3, Insightful

      ... I just think Eclipse is way too complicated.

      Which is why it is such a great IDE! I can understand all of the minimalists that complain that it's just too hard to use, and want to stick with VIM. I personally love VIM, I still use it on occasion while writing C and PHP. But using VIM for everything is like eating potatoes for breakfast, lunch, and dinner - every day. They're good, but there's a lot more out there.

      I have found that Eclipse is one of the greatest software applications ev4r simply because it does so much, and is so complicated. It is not only an IDE, but a complete client application framework that can be used or adapted for just about anything. Most of the applications I write now are built using the Eclipse RCP framework with EMF and SDO connected to some back-end persistence framework. It truly is elegant to use and MUCH better than trying to write this type of framework from scratch.

      The best part is that it is backed by IBM and a lot of other big dogs, so you know it's going to be stable.

    3. Re:Joking, of course by Ulrich+Hobelmann · · Score: 3, Insightful

      I've always wondered what is wrong with "modern" software that its resource usage is so through the roof. That's a HUNDRED MILLION BYTES, for God's sake! I don't know how big the Library of Congress is, but seriously: Eclipse is just an editor + some wizards, doc, compiler and other plugins. There's nothing that justifies a HUNDRED MILLION BYTES.

      When I have to Java, I use XCode, which takes about 30-50MB. And it's about four times as snappy.

    4. Re:Joking, of course by ShadyG · · Score: 3, Funny
      When I have to Java, I use XCode, which takes about 30-50MB.

      Dude, that's THIRTY TO FIFTY MILLION BYTES!!! And I also do not know how big the Library of Congress is!
  9. Dreamweaver has a functional plugin system by acostin · · Score: 4, Informative

    Dreamweaver is also a great framework for plugins. While the host application still offers some functionalities, they are related with the actual implementation of the plug-in architecture. You probably don't know - but Dreamweaver is now mostly built from plugins, and those are built with HTML and JavaScript almost exclusively. The HTML editor is not a plugin, but almost everything else is, and the options are unlimited.

    Not only this plugin architecture is powerful, but it's also platform independent - you can easily configure it to generate PHP/ASP or JSP code with the same plugin implementation and different platform files. Everything is XML, and a lot of regexps are used to detect code patterns and parameters that are presented in the visual interfaces. This plugin system is so powerful, that it allowed us to build a fully functional Dreamweaver PHP support layer (they only supported ASP and JSP back then), in just several months.

    If you've read the Cooper book - The Inmates are Running the Asylum you will understand easily how plugins have appeared in Dreamweaver back in the Drumbeat 2000 times - as a layer between the IDE user (Betsy - an HTML designer) and the hardcore programmer (I forgot his name, but he was a he :). When building dynamic sites, the designer and the programmer always clashed as they have different value systems (the designer dislike programming, the programmer don't care about design). So Dreamweaver was built as a layer between the programmer and the designer - helping the programmer work with the designer by writing plugins for the IDE that the designer will use to create complex things.

    That's what a lot of companies are doing now with great success. <shameless plug>We're doing it - http://www.interaktonline.com - with significant results - 10000 licenses sold and 500,000 downloads for the free extensions</shameless plug>, and there are also a lot of other companies doing it (you'll find more on the Macromedia Exchange - a place where people exchange free and commercial plugins)

    Dreamweaver also avoids the plugin hell using a powerful packaging technique (they came with their own package format - MXP - that knows how to do "safe changes" to the IDE - like adding menu entries, code completion features, etc). Those changes are applies using the Extension Manger - a nice piece of software that knows how to "undo" IDE changes when uninstalling an extension.

    Want to learn something from a working implementation? Learn how Macromedia did it and a lot of interesting lessons will be learnt.

    Alexandru

  10. This post was created by Timesprout · · Score: 4, Funny

    Using the Slashdot posting plugin for eclipse.

    --
    Do not try to read the dupe, thats impossible. Instead, only try to realize the truth
    What truth?
    There is no dupe
  11. Eclipse speed by Espectr0 · · Score: 2, Interesting

    Seems that the plugin-based architecture of eclipse hasn't helped a bit with loading times. On my athlonxp 2100 with 768mb ram, it takes about 15 seconds to load, same as netbeans.

    Netbeans also has very good html/xml syntax highlighting and completion. I hope Eclipse 3.1 plays catchup on this.

  12. Can it load an arbitrary text file yet? by Tim+Browse · · Score: 4, Interesting

    I tried Eclipse a while back - the first thing I do with any programming editor is of course to load a text file and try editing it.

    So I try to open a random xml file on my hard disk, and, er...wait, hang on, you can't do that. You can only load a file if it's in your project (or view or solution or whatever word it is that Eclipse uses).

    I researched a bit, and found some other people ranting about this, but the official line was you should add such files to your project if you want to edit them, it's the right thing to do, blah blah blah.

    Call me stupid, but that kind of language lawyer prescriptive idiocy is what I try to avoid, so I went straight back to my bloated monolithic IDE that nevertheless let me load whatever the hell file I want.

    I'm downloading the latest version now to see if it will let me execute a technological marvel such as loading a file I want to edit...we'll see.

    (Although the last time I tried Eclipse it took me fecking ages to get a JVM set up that would even allow it to start up - "run anywhere", indeed...)

    1. Re:Can it load an arbitrary text file yet? by TheTomcat · · Score: 3, Interesting

      I see your point, but you seem to be mistaking Eclipse for a general-purpose text editor. It's not.

      You wouldn't use OpenOffice's word processor to write code, would you?

      Eclipse is tryly an Integrated Development Environment, not a one-off quick-editor.

      I've recently come to love Eclipse (for the most part) -- I use it for PHP development, now.. and I keep kate around for quick one-off edits.

      IMO, if you need something that does both, then Eclipse is not for you.

      S

    2. Re:Can it load an arbitrary text file yet? by drchrisharris · · Score: 4, Informative

      File->Open External File

      Wasn't that hard, was it?

    3. Re:Can it load an arbitrary text file yet? by FranksChickenHouse · · Score: 2, Informative

      That was a new feature added (I think) in either 3.0 or 3.1. Previous versions did not, I repeat, did not have this ability, and it was really, really annoying.

    4. Re:Can it load an arbitrary text file yet? by Tim+Browse · · Score: 2, Informative
      Previous versions did not, I repeat, did not have this ability, and it was really, really annoying.

      Indeed - I thought I'd made it obvious enough that it wasn't possible on the version I tried (and that googling confirmed this), but I guess I didn't make it obvious enough for drchrisharris.

    5. Re:Can it load an arbitrary text file yet? by ArtDent · · Score: 2, Insightful

      As people have pointed out. Eclipse is an integrated development environment. Sure, you just want to edit a file, but editors in Eclipse are part of that integrated environment. As a simple example, you can select the name of class and ask to see its subtype hierarchy. For that to work, you need to build a model of a bounded set of classes. Hence, the workspace: a bound on the set of files to consider, and a convenient API for working with them.

      Setting up projects in a workspace isn't terribly hard, and projects can refer to any physical location, so you don't have to actually copy or move your files around. But, it does slow you down a little when you want to get started, and that's a shame. Trade-offs are nothing new in the world of software design.

      Eventually, the File->Open External File function was added. But, you only get a small amount of the functionality that's available when you do it the "proper" way. Probably some careful refactoring could make editors on external files more, though not fully,functional. But, in my opinion, that would be wasted effort.

      The workspace/project model works well and supports the desired functionality. Yes, it imposes a little bit of learning on some people, but if that's such a hardship, why are you programming, anyway?

      By the way, this whole topic really has nothing to do with the article, which is about the underlying pure plug-in architecture of Eclipse.

  13. Sounds like a meta-OS to me... by ThosLives · · Score: 3, Interesting
    This "plug-in framework" mentioned in the article sounds like it's simply an OS-independent OS. Think about it: it registers "plug-ins" that talk to each other using "defined interfaces" and each "plug-in" must be registered with the runtime. How is this different than installing applications and registering them? There are well-defined interfaces between applications, APIs for displaying information, etc.

    I find it amusing that the article even calls the plug-in manager the "kernel". It seems like the research into this field is basically working on some meta-OS rather than something that will provide real extensibility to a system. All it tells me is that OSs need better interface specifications to provide what folks are looking for and so write their own meta-OS.

    --
    "There are a dozen opinions on a matter until you know the truth. Then there is only one." - CS Lewis (paraprhase)
    1. Re:Sounds like a meta-OS to me... by mrlpz · · Score: 2, Interesting

      This is what it SHOULD'VE looked like...sorry about that...

      ------- Plain Ol' Text ------------------

      Think....OSGi. Look it up. At the core of Eclipse is the OSGi framework ( now running in your favorite mid to upper range BMW's navigation system, among other things ). The OSGi framework is nice, but GOD is it big ! As the co-developer of a commercial product built around Eclipse and OSGi ( sorry...confidentiality agreements are a biatch, aren't they ? ), I can testify that as nice as it is to have a "plug-in infrastructure around you", the "Extension points" mechanism sucks wet wind. It's entirely too textually driven. It's good to have the ability to define extension points, etc., but to have to "fill in the blanks" manually sucks.

      I can also agree with folks' comments about the weird behaviors for:

      1. Code Completion

      2. Code markup ( i.e. live parsing for programmatical errors ).

      3. Switching "Perspectives" just to look at something simple, is a royal PITA.

      4. The concept of RCP ( Rich Client Platform ) applications still have a ways to go before being completely baked. 8Mb for a "Hello World" RCP application ? GMAB !

      That being said, Eclipse has some very nice features. I love their refactoring support, I like their reference finder, I even like that I can drag and drop items from an explorer window right into whatever package you're working on.

      Up until now my BIGGEST complaint is the lack of a VISUAL designer. The default designer offered by the Eclipse foundation is still only partially cooked ( Geeze, even the WebSphere 5.1 designer was in better shape ). With SWT Designer/WindowsBuilder Pro things got kicked up a notch ( but $299 for a designer that's still for the most part under development ? C'mon, get serious. ). There's Jigloo, which is less expensive ( $75 ), but it's far from having the same functionality as SWT Designer/WindowsBuilder Pro.

      The thing that irks me the most about Eclipse itself, is that it's basically a whole lot of scaffolding. You want to do J2EE, JSP or Struts....go buy Nitrox or the MyEclipse set of plugins ( sure MyEclipse is $29.99, but it's yet again, a little green behind the gills ). You want to do UML, you can use EMF ( and take serious amounts of sedatives ) or you can use OMondo ( or any of the others ), and take your chances. There's even plugins from rival Java IDE provider Borland ( Together Edition for Eclipse...gotta love those folks who still haven't figured out that before you can collaborate, you have to be able to CREATE ).

      All in all, Eclipse is a nice alternative to the overly expensive IDE's out there ( C'mon, does JBuilder REALLY have to cost over a $1000 ? Get real ? WebSphere Application Developer.....$2K+Plus ? Seriously ? )...But the problem is, that at it's core, it's still pretty barren. It's as I said before, the scaffolding for you to start hanging up the rest of the scene. And when you start adding up what you have to buy here, and there. You eventually get this feeling that you've been nickled and dimed to death. Sure, some of the plugins that are out there are nice, and they do serve their purpose for the most part, but c'mon !

      - Honest opinion from someone's who actually delivered software ( and continues to ) using Eclipse. -

  14. SharpDevelop is another pluggable IDE by cyberjessy · · Score: 3, Informative

    Those of you who want to try out a fully featured IDE for .Net can try out SharpDevelop. This is GPL'ed and the project (including source code) can be found at ICSharpCode.

    I had written a couple of plug-ins for #D, and it took me less that two days to understand the architecture. Parts of the application are hacks, mainly because it does not have an industry heavy weigth behind it, unlike Eclipse. The project runs on contributions.

    SharpDevelop architecture includes pluggable language parsers, components, add-ins etc. I will definitely recommend this application to any .Net programmer.

    --
    Life is just a conviction.
  15. SharpDevelop - "add-in" architecture using XML by Bigger+R · · Score: 2, Interesting

    The developers of the GPLed C# IDE wrote some well-presented documentation that discusses in part their add-in architecture: "SODA - SharpDevelop Open Development Architecture Almost all mid to large size software projects have some sort of add-in architecture. An add-in is basically an extension to the functionality of the main application. The common way to introduce an add-in structure is to load libraries from a specific directory at runtime. (Author: Mike Krueger)"

    --
    Beta only seems to work for Google. Such a shame.
  16. IBM loves to shove Eclipse down our throats by Shivetya · · Score: 2, Interesting

    being an IBM shop we have seen many of our beloved (read:working) tools being phased out in favor of an Eclipse based solution.

    So far the net result has been bloated and very slow loading applications. The minimum memory requirement is 512mb with 1gb being recommended on user groups.

    After my experience with it at work I would not touch it at home. Not a single developer here uses Eclipse, they all prefer to use the older programs that are no longer supported or are being phased out.

    --
    * Winners compare their achievements to their goals, losers compare theirs to that of others.
  17. A well written java program ?! by tototitui · · Score: 5, Interesting

    I just read a earlier a long string of bashes around java & Open Office and then this item about Eclipse.

    Let me tell you this.
    A furiously anti-java, C++ist, debianist friend of mine tried it and found it cool for his C++ development !

    It is a living demonstration that all that religious wrath around java is a non-sens.

    Compared to the usual "Java is slow, Swing stinks, it closed source for playmobile developers."

    Eclipse is fast, GTK native, full open-source with a very well done plugin architecture ...

    You even have a full GCJ port for the zealots :
    http://klomp.org/mark/gij_eclipse/

  18. Re:Surprisingly like cooking! (analogy) by smittyoneeach · · Score: 2, Funny
    I want the "all your plugins are belong to us" Borg plug-in.
    See emacs.
    --
    Get thee glass eyes, and, like a scurvy politician, seem to see things thou dost not.--King Lear
  19. Eclipse has a long way to go. by rplacd · · Score: 2, Insightful

    The other day I had to write a bunch of code with similar lines. Something like

    $entry = cleanAttr("comp_phone", $totCompany_list[$i]["phone"]) .
    cleanAttr("comp_fax", $totCompany_list[$i]["fax"]) .
    cleanAttr("comp_email", $totCompany_list[$i]["email"]) .
    [...];

    I hopped over to my *scratch* buffer and typed in a short emacs lisp function (three lines of code, if that). I evaluated it, switched back to my code buffer, and added the lines by hitting a key sequence. The above lines were reduced to M-x attr RET phone RET M-x M-p RET fax RET M-x M-p RET email RET, etc. I could've even bound the attr call to a chorded key press or two.

    Total time to look up the docs and write the code to extend emacs: about a minute.
    Total time spent compiling code, loading a "plugin", restarting emacs: 0.
    Total time spent dealing with "you forgot the static keyword on line 12": 0.
    Total time spent fixing my code after upgrading emacs: 0.

    This is a feature that's been around for decades. Decades! When extending your editor is this simple, you'll do it more frequently.

    1. Re:Eclipse has a long way to go. by tezza · · Score: 2, Interesting
      I use Eclipse as a complement to my development process. The other main parts are:

      Emacs NT
      Cygwin
      c:\cygwin\bin\rxvt.exe -fn "Lucida Console-11" -bg DarkSlateGray -fg Wheat -cr Orchid -sl 10240 -tn xterm -g 170x70 -e /usr/bin/bash --login -i
      perl
      and
      ant 1.6.1

      Each is for a special purpose.

      To bring it back to the article, the Eclipse plugins I use are the visual Ant Task validator, the Debug mode with process attach, code completion, debug groups [coming in 3.1] and a whole host of others.

      The single best features are auto-compile and a usable dropdown class explorer. Emacs speedbar cannot come close to comlete overview of the whole project with 3000+ classes.

      Horses for courses. Eclipse is no panacea, but it is darn good at what it does, and there are a great range of plugins.

      --
      [% slash_sig_val.text %]
  20. Can't stress enough... by RobertKozak · · Score: 2, Insightful

    I can't stress enough how important security is!

    When you have a late-bound, extensible environment it is so easy to mess with it. Plugins by their very nature are supposed to be powerful, with hooks into the system at very low levels. This makes it very easy for virus writers, malware authors and spyware developers to run their code with full priviledge.

    But lets forget about Spyware and Virus for a moment. Lets say you have a plugin architecture for an application that does proprietary financial calculations for loan approval. You don't want someone to come along create a plugin and change those calulations.

    I think about this all the time because I have been developing plugin frameworks for the past 7 or 8 years. I really don't want to limit the functionality of the plugins because in all honesty I want the plugins to be as powerful as they can be so they change the calulations. I know it sounds like I am contradicting myself but the truth is I am not. Creating a plugin architecture is not a decision that you should take lightly.

    When deciding to create a plugin system you have to be sure that you can handle the complexity and the inherent insecurity that decision brings you.

    #1 point with plugin systems. Plugins are all powerful.

    Robert

    --
    Bet this .sig looks familiar.
  21. KDevelop by aCapitalist · · Score: 2, Interesting

    I've been impressed with Kdevelop since the 3.x rewrite (Gideon).

    It has a plugin architecture, is native, and even has a decent vi editor kpart via yzis.

    And I believe the killer feature of Kdevelop is the ability to import autotools projects - which is basically everything in the open source world.

    Eclipse (CDT/C++ plugin) doesn't have this ability yet.

    The other night I imported KDElibs straight from cvs, it parsed everything out, I had my class browser with the entire kdelibs project there, changed some configure options, and built the whole thing within the IDE.