This page is aimed at answering the following questions from edream on the mailing list:
Why should I be interested in pida? That is, pida looks like many other ide's. Why shouldn't I just use some other ide?
Well, let's start with what we have written already. - d_rol
There are many IDE around, and some are very good. But lots of them are also closed in the sense that they are limited in terms of extensibility or communication with other tools. On the other hand, some of you may want to change your editor for anything else, even if you have to rely on external tools to complete its features.
PIDA was designed with these problems in mind. PIDA's motto is to reuse the tools that proved to be useful and solid, and to provide the glue for them. PIDA is written in Python with PyGTK, is easily extensible through plug-ins and can embed any editor provided someone writes an adapter for it.
PIDA has a number of unique features, such as
- Embedding Vim, Emacs or any editor. (Of course, the editor has to provide a way to communicate with for external programs. Moo, Scite, and probably GEdit could be candidates)
- Using any version control system.
EKR: This is good as far as it goes, but there is no mention about how any of this works.
EKR: Writing introductions is the hardest of all documentation because you can't assume the reader knows much, if anything, about your product, *and yet* you want to hit the highlights without burying the user in bags of details. I've completely rewritten the into to Leo http://webpages.charter.net/edreamleo/intro.html 5 or 6 times, and I am still *far* from satisfied with it.
EKR: One idea that keeps cropping up is to use html links for all new terms, so the definitions don't get in the way of the main sweep of ideas. I think I may try rewriting Leo's intro using this principle. Extending that idea, perhaps links could be the grand unifying/simplifying principle? It's just a thought, but suppose we try it out here. Could we rewrite the above so that all the important words are links? Hmm, there don't seem to *be* any important words! That is, we are seem to be told that cool things are possible, but there are no words that we could follow (even by hand) for more details.
AA:
Some more of Edward's questions:
What kinds of programs can I embed in pida? Can I embed any program? Besides Emacs, what other editors can I embed? Can I embed vim? What makes a program embeddable? Could I embed Leo?
Is there technology in pida that Leo could use without using all of pida? If so, what is it?
The generally reusable components in PIDA are:
- The utils package, eg: Vim/Emacs integration, Asynchronous threaded command calling, Web integration, Launchpad integration, Pastebin integration, ...will add more as I remember them.
EKR: All of these are "important words" (tm) and deserve a link. And I would suggest that the link be to a page that contains *all* important info about these "words" (topics). For large topics, the page might consist of a tree of sub-pages, but the principle is the same.
Ali mentioned that pida sends elisp messages to Emacs. Very cool. Isn't this the reverse of what pymacs does? If so, it may be exactly what I need. In any event, exactly how does the message passing work? All details would be most welcome.
PIDA sets itself up as an Emacs Server/Client and communicates with Emacs through the emacsclient network interface.
EKR: I know nothing about emacslient. Your docs should either explain emacsclient or link to a good description.
XXX Add details.
Is there technology to have different parts run in different processes? If so, this would be very cool. Can you tell me more? How does it work? How do I use it? Are there any limitations?
There is no specific technology to allow this, but there is technology to allow running blocking code to run in threads, and be safe against the UI Threading issues. We did once use processes, but we found threads to be much quicker. Please don't flame us, it was a lot quicker!.
EKR: Sorry, I didn't mean to imply any bias against threads.
In general, is there anything else I should know about pida? Any code or technique you are particularly proud of? Anything else that is particular clever? Anything else that might be useful to other developers?
Details! Can you tell me more about how to understand pida? Anything more about how to use pida? What about future directions? Plans for nifty new features?
Finally, I am reminded of the two questions from Tom Wolf's book 'The Right Stuff' about test pilots. The only questions the hot shot would ask before flying a plane was 'How do I start this thing?' and 'Anything else I should know?'
