[
Date Prev][
Date Next][
Thread Prev][
Thread Next][
Date Index][
Thread Index]
[
List Home]
[Dltk-dev] Some questions and observations (extensibility, console, etc)
|
Dear DLTKers,
I am struggling to get a first release of my Scheme plugin done. It is going ok and I
think it is almost done. But I am starting to feel very old... the level of
complexity and indirection that is inherent in the Eclipse programming model is more
than I have dealt with before (except perhaps when working with Smalltalk.. which is
no surprise given where Eclipse came from). I tend to spend about 3 to 5 hours
hunting around for the right spot to make a change, then I write 5 lines of code.
Fortunately I am slowly getting faster as I learn the overall architecture. The last
time I felt so stupid was when I learned COM.
Despite all the indirection, I find that it is very difficult to get the DLTK to do
what I want. Here are some things I've tried to do. I've given up on the first three:
* Remove the concept of "debug engines". I think of debug engine setup as being part
of an interpreter, not a separate concept. I wanted to remove the debug engine parts
of the UI, but this seems difficult because it is burned into the core of DLTK.
* Get rid of the "system libraries" idea, which I don't think I want to mess with in
my extension. I think this is impossible.
* Add a field to the "new interpeter" setup dialog. This looks to be impossible
without copying and replacing a large number of classes.
* Create a default interpreter setup, because I am going to include some interpreters
inside my Scheme plugin update site. This lets the system be more easy to install.
The setup needs to be created with code. It was a struggle, but I finally managed to
make it work.
COMMENTS: One big source of problems it that many of the "new" calls within DLTK are
hard-coded. Thus you cannot override classes very easily. A good dependency injection
or factory model is sorely needed! On the one hand I think that DLTK could be much
easier to use if it was more generic and allowed plugging in a few things for parsing
(even the interpreter setup could be pretty much generic, i think). On the other
hand, I want to disable features and this seems impossible.
QUESTIONS: I have a few questions...
* How are we actually supposed to rely on DLTK? I see that DLTK is installed with
Eclipse now, so that means we are not supposed to make changes to it when developing
our plugins? That was always my assumption. But I am concerned about the versioning
nightmare that will likely ensue as DLTK changes and all the languages try to stay in
sync.
* I like DBGP but I'm unhappy about the (recent?) change to use its console
interfaces rather than Eclipse standard consoles when debugging. I understand that
this allows for remote debugging, which is neat. But I its going to cause more pain
in my debug engine to try to get Scheme to use an alternative console. How hard would
it be to have an option, as someone suggested?
SUMMARY: I think DLTK is a great thing and hope that all dynamic language IDEs for
Eclipse would use it. I would never have been able to make a Scheme debugger without
the DLTK to handle the debugging stuff. I also find it very frustrating, but I don't
have a broad enough perspective to really tell you how to do things differently.
William