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."

10 of 173 comments (clear)

  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. 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.

  3. 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 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.

    2. 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: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.
  5. 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.

  6. 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.

  7. 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.
  8. 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.