(Modular-)Application Framework / Rich-Client-Platform in Python

  • Thread starter Wildemar Wildenburger
  • Start date
W

Wildemar Wildenburger

To make it short: Is there something like this already?

There seem to loads of python frameworks for Web-Apps, but I have a hard
time finding one for desktop-apps.
I imagine it wouldn't be too hard (if still time consuming) whipping up
something simple myself, but I thought, I'd ask here before diving into it.

greets
wildemar
 
M

memracom

There seem to loads of python frameworks for Web-Apps, but I have a hard
time finding one for desktop-apps.
I imagine it wouldn't be too hard (if still time consuming) whipping up
something simple myself, but I thought, I'd ask here before diving into it.

Sounds like you should look at DABO
http://dabodev.com/

But remember, that by combining something like YUI with any WSGI
framework and a Python web server (PASTE, FAPWS) you can use a web
browser as the client for an application that runs on the same
computer.
 
W

Wildemar Wildenburger

Sounds like you should look at DABO
http://dabodev.com/
Thanks, just glanced over it and as I expected, DABO seems a bit much.
But then again, I should have made my point clearer in the first place.
I'm looking for something like the eclipse plugin kernel. Just a simple
module that allows for easy loading and unloading of discrete bits of
functionality. That doesn't seem to be the objective of DABO (correct me
if I'm wrong).

But remember, that by combining something like YUI with any WSGI
framework and a Python web server (PASTE, FAPWS) you can use a web
browser as the client for an application that runs on the same
computer.
Though I like the idea of distibuted applications, I want to write an
app (a couple of, actually) targeted at the home user that sets up the
software herself/himself. So this might get a bit to complicated for Joe
Schmoe.
Secondly, I'm going for apps that don't quite adhere to the "form"
metaphor of most software (specifically DB-apps). I think doing
"unusual" UI features might get a bit messy when done with web
technology. I have thought about an actionsctipt-based approach, but I'd
very much like to try it with python first.


thx for the ideas, still. :)
W
 
J

Jarek Zgoda

Wildemar Wildenburger napisa³(a):
To make it short: Is there something like this already?

There seem to loads of python frameworks for Web-Apps, but I have a hard
time finding one for desktop-apps.
I imagine it wouldn't be too hard (if still time consuming) whipping up
something simple myself, but I thought, I'd ask here before diving into it.

There are few GUI frameworks building on various toolkits. I used to use
Kiwi for PyGTK, it's mature and stable, although the approach is not the
same as, for example, Delphi.
 
W

Wildemar Wildenburger

Jarek said:
There are few GUI frameworks building on various toolkits. I used to use
Kiwi for PyGTK, it's mature and stable, although the approach is not the
same as, for example, Delphi
Thanks for the effort, but I think I'm not well understood. I'm not
looking for a GUI framework (which, by the way, is most likely to be
wxPython), but for a pure plugin architecture. A rich-client-platform,
as it is sometimes called. Nothing specific about anythin in particular,
just something that runs plugins. Like Eclipse does these days.

It's beginning to dawn on me that I'll have to cook something up myself.
*grumble*
;)

W
 
J

Jarek Zgoda

Wildemar Wildenburger napisa³(a):
Thanks for the effort, but I think I'm not well understood. I'm not
looking for a GUI framework (which, by the way, is most likely to be
wxPython), but for a pure plugin architecture. A rich-client-platform,
as it is sometimes called. Nothing specific about anythin in particular,
just something that runs plugins. Like Eclipse does these days.

I know what is Eclipse RCP. The world would be much better place to live
if we had something similar. :)

Many applications employ "plugin framework"-like things and in Python
this is specially easy to do, but I saw none that is built as one big
plugin framework. The one that mostly resembles such approach is PIDA
(http://www.pida.co.uk/), which is built around the concept of pluggable
views and services, but again, this is far from Eclipse RCP.
 
B

Ben Finney

Wildemar Wildenburger said:
Thanks for the effort, but I think I'm not well understood. I'm not
looking for a GUI framework (which, by the way, is most likely to be
wxPython), but for a pure plugin architecture. A
rich-client-platform, as it is sometimes called. Nothing specific
about anythin in particular, just something that runs plugins. Like
Eclipse does these days.

I've never used Eclipse (beyond proving that it runs on various
computers). Can you please describe what behaviour you're looking for?

"Just runs plugins" is very vague, and would seem to be satisfied on
the face of it by loading Python modules. If there's something more
specific, you'll have to specify.
 
S

stefaan

To make it short: Is there something like this already?

To keep it short: yes.
To make it longer: not sure about its status... i've never tried it
myself.
To make it short again: http://code.enthought.com/ets/

I also know some people are trying to create something called pyxides,
but
also there I am not sure about the status: http://pyxides.stani.be/

Best regards,
Stefaan.
 
W

Wildemar Wildenburger

stefaan said:
Nice, seems very interesting. Bit of a bitch to set up, as it appears
from scanning the site, but that might be it.
Thanks :)

Now for the everlasting circle of evaluating, feature-wanting,
to-write-myself-deciding, failing, for-the-next-big-idea-waiting,
asking, evaluationg, ...

;)

I also know some people are trying to create something called pyxides,
but
also there I am not sure about the status: http://pyxides.stani.be/
Seems interesting as well, if only for the fact that Edward Ream (author
of LEO) seems to be involved there in some way. But then, I can't quite
make out what it is really about. The link just brings me to the
google-group. Seems to be some kind of text-editor effort. I'll keep an
eye on that, but so far, enthought is the front runner.

Thx to everyone :)
W
 
S

Stef Mientki

Wildemar said:
Thanks for the effort, but I think I'm not well understood. I'm not
looking for a GUI framework (which, by the way, is most likely to be
wxPython), but for a pure plugin architecture. A rich-client-platform,
as it is sometimes called. Nothing specific about anythin in particular,
just something that runs plugins. Like Eclipse does these days.

It's beginning to dawn on me that I'll have to cook something up myself.
*grumble*
;)

W
I took a look at Eclipse page you mentioned but after reading the first page I still don't
understand what you mean (and I never read beyond the first page ;-).
With a plugin system, I can think of a complete operating system,
or I can think of something like a DTP, or simply Word,
or I can think of something like Signal WorkBench
etc.

I think if you don't express what all of the tasks of that framework will be,
it's not well possible to create one.

Do you want just launching of applications, or do they have to communicate,
exchange data, launch each other, create together one document or more general control one process,
and lots of more questions ;-)

cheers,
Stef Mientki
 
P

Peter Wang

Nice, seems very interesting. Bit of a bitch to set up, as it appears
from scanning the site, but that might be it.

Actually, just this week, we completed a major SVN reorganization and
from this point forward, all of the libraries in ETS will be released
as eggs. In fact, eggs have been available for a long time for python
2.4, and now we have them for python 2.5 as well.

The "Eclipse in python" you're looking for is actually called
Envisage, and it is part of ETS: https://svn.enthought.com/enthought/wiki/Envisage

The "Dev Guide" has some tutorials etc.: https://svn.enthought.com/enthought/wiki/EnvisageDevGuide

Note that Envisage != ETS. "ETS" is the term for the whole bundle of
various Enthought libraries, including Traits, Chaco, Pyface, etc.
Envisage does require some of these others (notably Traits and
Pyface), but they are all available as eggs.
Now for the everlasting circle of evaluating, feature-wanting,
to-write-myself-deciding, failing, for-the-next-big-idea-waiting,
asking, evaluationg, ...

Chime in on the mailing list if you have any questions. It's pretty
active and many people on it have lots of experience with Envisage.


-Peter
 
K

Kirk Job Sluder

Stef Mientki said:
I took a look at Eclipse page you mentioned but after reading the
first page I still don't understand what you mean (and I never read
beyond the first page ;-).
With a plugin system, I can think of a complete operating system,
or I can think of something like a DTP, or simply Word,
or I can think of something like Signal WorkBench
etc.

The approach taken by Eclipse is exactly like that taken by emacs so
many years ago of creating a minimalist framework that offers a bare
bones user interface and services for running libraries. Everything
else is a plug-in library that changes the behavior of that interface.
So if you want an editor for language "foo," you would customize a
"view" interface to display foo objects, and an "editor" interface to
display and modify "foo" text. You might customize other "view"
objects to display documentation, compilation, and debugging
information.

(The fact that Eclipse and emacs are both rather lean programs is
obsucred by the sheer quantity of plug-ins that have become a part
of the standard installation.)
 
W

Wildemar Wildenburger

Stef said:
I took a look at Eclipse page you mentioned but after reading the first page I still don't
understand what you mean (and I never read beyond the first page ;-).
Well, what can I say ...
;)

With a plugin system, I can think of a complete operating system,
or I can think of something like a DTP, or simply Word,
or I can think of something like Signal WorkBench
etc.
Yes exactly. As I said: Nothing in particular. Just an environment that
loads and unloads little bits if functionality, whatever those may be.
I think what most people think of when they hear "plugin" is: An
Application that can be extended.
An RCP provides no more than the next step: No monolithic app, just
plugins (which can have plugins themselves (which can have plugins
themselves (which ...))). Write a text editor component and use it in
your music-sequencer that also monitors your internet-activity, if you must.

I think if you don't express what all of the tasks of that framework will be,
it's not well possible to create one.
Oh, but it is! Eclipse is such a framework. Pitty is, it's written in
Java. ;)

Do you want just launching of applications, or do they have to communicate,
exchange data, launch each other, create together one document or more general control one process,
and lots of more questions ;-)
Who knows? Thats the beauty of it. Eclipse has been conceived as an
IDE/Text-Editor. But now it is just a platform for others to build
plugins for. Such as an IDE. There are plans to make an eclipse-based
general PIM (called Haystack, I think). The concept is very simple, but
for some reason, highly unusual at present. I'm pretty sure that this
will change sooner or later.
 
W

Wildemar Wildenburger

Peter said:
Actually, just this week, we completed a major SVN reorganization and
from this point forward, all of the libraries in ETS will be released
as eggs. In fact, eggs have been available for a long time for python
2.4, and now we have them for python 2.5 as well.
I'm not sure, but you guys seem a bit Windows-centric. I have yet to
find out if the egg-approach actually works for Linux (and Mac, though I
don't use it) as well. I've seen some mentioning of binary dependencies,
which makes me frown a bit. We'll just see.

The "Eclipse in python" you're looking for is actually called
Envisage, and it is part of ETS: https://svn.enthought.com/enthought/wiki/Envisage

The "Dev Guide" has some tutorials etc.: https://svn.enthought.com/enthought/wiki/EnvisageDevGuide
Yeah, I've been reading through that for the past couple of hours, seems
pretty sweet and reasonably simple.
I can see your reorg, by the way: The example .py files are not where
they're advertised to be. Better be quick with that, even solid software
with buggy documentation is buggy software ... ;)

Chime in on the mailing list if you have any questions. It's pretty
active and many people on it have lots of experience with Envisage.
I'm almost sure I will :)

c.u.
/w
 
P

Peter Wang

I'm not sure, but you guys seem a bit Windows-centric. I have yet to
find out if the egg-approach actually works for Linux (and Mac, though I
don't use it) as well.

It does. We have several linux and mac-based developers here. (I'm
on a mac most of the time.) I am currently running most of the ETS
libraries from eggs. It's certainly true that the large, monolithic
Enthought Python Edition that was offered in the past was only
available for windows, but that's gone now and has been replaced with
the egg-based distribution.
I've seen some mentioning of binary dependencies,
which makes me frown a bit. We'll just see.

The Traits package has a small C extension that builds on all
platforms that I've seen. Most of the other binary dependencies are
for graphical things like the plotting library. If you just plan to
use Envisage, you won't need those.
Yeah, I've been reading through that for the past couple of hours, seems
pretty sweet and reasonably simple.
I can see your reorg, by the way: The example .py files are not where
they're advertised to be. Better be quick with that, even solid software
with buggy documentation is buggy software ... ;)

I'll file a ticket for that. :)


-Peter
 
S

Stef Mientki

Wildemar said:
Well, what can I say ...
;)


Yes exactly. As I said: Nothing in particular. Just an environment that
loads and unloads little bits if functionality, whatever those may be.
I think what most people think of when they hear "plugin" is: An
Application that can be extended.
An RCP provides no more than the next step: No monolithic app, just
plugins (which can have plugins themselves (which can have plugins
themselves (which ...))). Write a text editor component and use it in
your music-sequencer that also monitors your internet-activity, if you
must.


Oh, but it is! Eclipse is such a framework. Pitty is, it's written in
Java. ;)


Who knows? Thats the beauty of it. Eclipse has been conceived as an
IDE/Text-Editor. But now it is just a platform for others to build
plugins for. Such as an IDE. There are plans to make an eclipse-based
general PIM (called Haystack, I think). The concept is very simple, but
for some reason, highly unusual at present. I'm pretty sure that this
will change sooner or later.

I took a look at some of the examples build with eclipse,
and I might be wrong, but it's just another IDE,
(like Delphi, Lazarus, Visual Basic, Kylix, Pida, Envisage, VisualWX, wxGlade, ...)
what am I missing ?

To have an IDE as good as Delphi in pure Python,
would be still be great ;-)

cheers,
Stef Mientki
 
J

Jarek Zgoda

Stef Mientki napisa³(a):
I took a look at some of the examples build with eclipse,
and I might be wrong, but it's just another IDE,
(like Delphi, Lazarus, Visual Basic, Kylix, Pida, Envisage, VisualWX,
wxGlade, ...)
what am I missing ?

I think you miss the difference between Eclipse IDE and Eclipse
Platform. The IDE is and application built using RCP. As Azureus or
RSSOwl, which aren't IDE-type applications. One of the tutorials
mentioned int the RCP wiki takes user through creating an email client
application, which is not an IDE, definitely. Eclipse RCP allows
building applications as a set of pluggable features over common
runtime. While not a "mark-and-drop" solution yet, it's a great leap
forward in Java desktop applications.

There's more to Eclipse that just IDE. ;)
 
B

Ben Finney

Wildemar Wildenburger said:
I think what most people think of when they hear "plugin" is: An
Application that can be extended.
An RCP provides no more than the next step: No monolithic app, just
plugins (which can have plugins themselves (which can have plugins
themselves (which ...))). Write a text editor component and use it in
your music-sequencer that also monitors your internet-activity, if you
must.

That sounds like Python to me. Write an application as modules
(natural and easy in Python), ensure the module interface is clear,
and those modules can be used for their functionality elsewhere.

You gave an analogy to Emacs. Well, Emacs' plig-in nature comes from
two things: a core set of functionality primitives, exposed through a
Lisp API; and a Lisp machine. From that framework, anyone can write
Lisp plugin programs to make the Emacs framework behave in a
particular way.

You already have Python, and can embed it in your program. The only
missing piece seems to be the primitive operations at the core, which
surely depend on what exactly it is you have in mind for your program
and can't really be provided in a generic form by some other party.

This "framework" you're looking for, what would it actually *do*? If
you can't describe what features it would provide, I can't imagine
what it actually *does*.
 

Ask a Question

Want to reply to this thread or ask your own question?

You'll need to choose a username for the site, which only take a couple of moments. After that, you can post your question and our members will help you out.

Ask a Question

Members online

No members online now.

Forum statistics

Threads
473,744
Messages
2,569,484
Members
44,903
Latest member
orderPeak8CBDGummies

Latest Threads

Top