Discussion:
FVWM: GSoC 2012: Project ideas
m***@crosswire.com
2012-02-23 20:34:38 UTC
Permalink
A scratch rewrite in C++, using WxWidgets and embedding the
configuration elements in sqlite, killing configuration files for good
and ever. There is a point at which you are doing yourself a favor by
shooting the horse instead of feeding it.

Not trying to piss anyone off. IMHO, I'm just stating the obvious. There
is more holding FVWM back than what can be fixed with debugging.

Matt


-------- Original Message --------
Subject: FVWM: GSoC 2012: Project ideas
From: Thomas Adam <***@fvwm.org>
Date: Thu, February 16, 2012 6:06 am
To: ***@fvwm.org


All,

Whilst I appreciate that organisations need not worry about this until
the
end of February, I'll be moving house then so I need to start thinking
about
this now, rather than later.

Now that 2.6.0 is out, I'm proposing the following project (some of
which
are a continuation from previous GSoC proposals) -- none of which are
listed
in any order.

* Style clean-up (Difficulty: Easy):

This would involve thinking about the internal state of styles. At the
moment, we've a complete bomb-site in fvwm/styles.c in the form of a
huge
case statement which is responsible for dishing out random code to act
on
windows. I'd like to see this mechanism replaced with something more
like a
dispatch-state, involving stucts and callbacks. I've very tentatively
started this here:

https://github.com/ThomasAdam/fvwm/commits/ta/style-cmd-tweaks

This is a pre-requisite step for many other style-related project
proposals
though -- but still something which is a good enough project in its own
right.

* Finer-grained style matching (Difficulty: Medium):

Currently there is no direct way to match specific components of windows
when putting styles to them -- the only way you can do this at the
moment is
through clever ordering of style lines. This project would therefore
flesh
out ideas to allow for specifiers for which window to match based on a
windows's name, class, resource, or icon name. Perhaps in the form:

Style (Name=xteddy,Class=XTeddy) Sticky

... where these styles are logically ANDed together, rather than ORed,
to
avoid the need for specific style-line ordering.

* Unification of window commands/states to provide a consistent
interface
(Difficulty: Hard)

Style (and WindowStyle) affect the state of windows, as well as specific
commands which are not style-options but still affect the state of
windows.
There has long-since been an idea to unify this, and to split the entire
concept into two states:

- The initial state of windows (perhaps with an InitialState command)
- Subsequent window operations happen with a WindowState command

So you could think of this as FVWM commands at present which aren't
style-related (but which operate on windows anyway) deprecated in that
you
have to set states of windows to have them work. Here's an example:

# All windows' initial state are set like this.
InitialWindowState * SetWindowState WindowShade E, Maximize 100 100

# I want to control "XTermA" to never windowshade. In setting this, as
it's
# already a running program, that specific window's state has changed,
and
# only that window.
Next (XTermA) SetWindowState WindowShade Off

# I want all XTerm windows to have a specific window state of
iconified.
InitialWindowState (Name=xterm,Class=XTerm) Iconify On

Thus, all that happens in unifying the commands to properties on windows
is
a stack of things which are applied/unapplied as appropriate.

This change is huge though, and would need more discussion.

* Decor code to be modularised (Difficulty: Medium):

Finally deprecated the decoration code as being in the core, and instead
allow for this to be handled with a FvwmDecor module (or some such
name).
Some thought would need to be put in to how this is handled by modules,
as
there should be some means to allow more than one module to decorate a
given
window.

This will require a change in libs/vpacket.h as well as the module
information.

* Allow fine-grained control of window decors (Difficulty: Hard):

If we ever want to allow users to customise the colour and/or which
parts of
a decor is rendered, we need to rethink the FW_FRAME construct, and how
that's rendered in terms of its current GC implementation. A module
would
need to do this -- as well as defaulting to a base decor (such as a MWM
look?)

Shape-masking might be a possible to do this. This would also allow for
bling features like rounded-corners. This is obviously the future now,
where bling is more important than functionality.

Comments welcome, or even ideas.

-- Thomas Adam
Thomas Adam
2012-02-23 20:47:00 UTC
Permalink
Post by m***@crosswire.com
A scratch rewrite in C++, using WxWidgets and embedding the
Rewrites do not work. They really don't. IBM can tell you that from
experience.

As for basing a window manager off a widget library, I will point you
towards the likes of GNOME, where applications linking to things like GTK
are trampled all over when the assumptions about the window management leak
out entirely to the widget library.

The point of FVWM written in Xlib is that it's the correct and lowest common
denominator for being able to do anything portable. That was true in 1993
and it's still true now. You do not need a widget library to implement
things like window borders, and even if you did, that would still not imply
some free or extra functionality we wouldn't need to write.
Post by m***@crosswire.com
configuration elements in sqlite, killing configuration files for good
and ever. There is a point at which you are doing yourself a favor by
shooting the horse instead of feeding it.
We do this because we _like_ doing it, not because we cling to the last
vestiges of some bygone era. FVWM is what it is, *because* that's what it
is. There is nothing in FVWM which needs or facilities a rewrite, and
improving on features I've mentioned either in this thread or elsewhere is
perfectly feasible in smaller chunks.

That's called programming. And that's why it's fun.

-- Thomas Adam

P.S. Don't top-post on this list again.
--
"Deep in my heart I wish I was wrong. But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)
Mag. Dr. Nikolaus Klepp
2012-02-23 21:00:23 UTC
Permalink
Post by m***@crosswire.com
A scratch rewrite in C++, using WxWidgets and embedding the
configuration elements in sqlite, killing configuration files for good
and ever. There is a point at which you are doing yourself a favor by
shooting the horse instead of feeding it.
Not trying to piss anyone off. IMHO, I'm just stating the obvious. There
is more holding FVWM back than what can be fixed with debugging.
There are very good reasons for using plain text files. These reasons are so
good, that every programmer uses plain textfiles for his sourcecode (ok,
there was once an IDE from a big big vendor ... but that thing died)

Despite, I cannot remember that the windows registry database was a very
clever design decision.

Nik
Jaimos Skriletz
2012-02-23 21:32:47 UTC
Permalink
Post by m***@crosswire.com
Not trying to piss anyone off. IMHO, I'm just stating the obvious. There
is more holding FVWM back than what can be fixed with debugging.
Holding FVWM back from what? FVWM does its function really well. It is a configurable and stable wm that works on most systems. Sure there are a few things here and there that could be added or improved in fvwm and some bigger projects that would be nice, yet over all FVWM preforms its task well.

I don't see FVWM being held back from anything. People use it for different reasons. I myself use FVWM because it is fun, light weight, and requires few dependencies. I have the ability to do most of what I want out of a WM (sure some things are lacking but they aren't a game breaker). If I didn't want to use a text based config file, or really wanted a different widget set there are plenty of other choices of WMs or even DEs to choose from. I don't think it was ever in FVWMs goals to be the all-in-one window manager.

Over the 20 years of fvwm's existance there have been forks, derivatives, and even complete rewrites of these forks (spawning a new window manager) that take some ideas from FVWM, but these are no longer FVWM. It seems xfce even had its origins from FVWM but after a few complete rewrites is now a full desktop envorment. So this idea is not new, and many people really enjoy some of the rewrites of the derivatives, but FVWM is still around.

jaimos
m***@crosswire.com
2012-02-23 22:58:13 UTC
Permalink
Post by m***@crosswire.com
-------- Original Message --------
Subject: Re: FVWM: GSoC 2012: Project ideas
Date: Thu, February 23, 2012 4:32 pm
Post by m***@crosswire.com
Not trying to piss anyone off. IMHO, I'm just stating the obvious. There
is more holding FVWM back than what can be fixed with debugging.
Holding FVWM back from what?
<SNIP>

FVWM is not more portable than it would be if it was Object Oriented.
FVWM is not more extensible than it would be if it was OO.
FVWM does not integrate as easily with third party code, as it would if
it was OO.

Regarding database integration, pretty much every *nix programming
environment has existing libs for integrating with sqlite, no pipelining
required.

My interest is not so much in the database, but in the fact that it
improves syntactical constraint, extensibility, and supportability in
one include statement. The same motives are behind using WxWidgets. Wx,
and Sqlite integration would reduce the rewrite time to version 1.0 by a
significant amount, and with decent design practices, if you still want
Xlib, go ahead. Just write an Xlib based widget object and include it as
a plugin or a module. Nothing prevents that.

Or in other words:
FVWM is not more hackable, than it would be if it used SQL as
configuration repository.
FVWM is not more syntactically stable, than it would be if it used
SQL...
FVWM is not more supportable, than it would be if it used SQL.

I really don't know why ya'll look at this box of bones and think it is
as sexy as steak. the world has progressed. I use FVWM because I do a
lot of my own automation with it. FVWM is uniquely kludgable. But the
juice/squeeze ratio when working with FVWM is terrible.

I have seen many times on this list, a prevelance of a bizarre attitude
that any programatic logic a third party should wish to integrate with
FVWM, should be done within the configuration of FVWM itself, and that
any other solution is bad.

Yet FVWM's configuration syntax is incredibly intolerant of anyone who
isn't an old-school C programmer. It certainly isn't in the interest of
expanding usership to continue down that path. Perhaps I'm making a bad
assumption. Is increased usership a goal of the FVWM development team?

Thanks!
Dan Espen
2012-02-24 01:40:46 UTC
Permalink
Post by m***@crosswire.com
Post by m***@crosswire.com
Subject: Re: FVWM: GSoC 2012: Project ideas
Date: Thu, February 23, 2012 4:32 pm
Post by m***@crosswire.com
Not trying to piss anyone off. IMHO, I'm just stating the obvious. There
is more holding FVWM back than what can be fixed with debugging.
Holding FVWM back from what?
<SNIP>
FVWM is not more portable than it would be if it was Object Oriented.
I'm at 100% loss to understand what you are talking about.
Are you claiming C++ is more portable than C? I don't think the facts
bear that out. They days of Sun workstations, AIX desktops, etc. are
fading, but in the past Fvwm served all those users and more.
Post by m***@crosswire.com
FVWM is not more extensible than it would be if it was OO.
Really? The most extensible WM of all would be more extensible if it
relied on name mangling and all the other kludges present in OO languages?
Post by m***@crosswire.com
FVWM does not integrate as easily with third party code, as it would if
it was OO.
Bull. Fvwm provides all kinds of interfaces, including our much used
module interface. I'd need to see some concrete examples to be convinced.
Post by m***@crosswire.com
Regarding database integration, pretty much every *nix programming
environment has existing libs for integrating with sqlite, no pipelining
required.
Yes, fvwm could drag every open source package in the world into
it's core.
Post by m***@crosswire.com
My interest is not so much in the database, but in the fact that it
improves syntactical constraint, extensibility, and supportability in
one include statement.
Mystified.

Fvwm relies on procedural commands. Not just from it's configuration
files but from modules and other interfaces. There is nothing more flexible,
or extensible.
Post by m***@crosswire.com
The same motives are behind using WxWidgets. Wx,
and Sqlite integration would reduce the rewrite time to version 1.0 by a
significant amount, and with decent design practices, if you still want
Xlib, go ahead. Just write an Xlib based widget object and include it as
a plugin or a module. Nothing prevents that.
Fvwm is version 2.6, not 1.0.
We have no interest in obsoleting our users configuration files.
Every time we make an incompatible change, we supply a conversion script.
Post by m***@crosswire.com
FVWM is not more hackable, than it would be if it used SQL as
configuration repository.
Right, if fvwm procedural commands were stored in SQL they'd work just
the same. Except a special editor would be required to make changes.
Post by m***@crosswire.com
I really don't know why ya'll look at this box of bones and think it is
as sexy as steak. the world has progressed. I use FVWM because I do a
lot of my own automation with it. FVWM is uniquely kludgable. But the
juice/squeeze ratio when working with FVWM is terrible.
Don't know what a juice/squeeze ratio is. If you have a point,
please speak in plain terms.
Post by m***@crosswire.com
I have seen many times on this list, a prevelance of a bizarre attitude
that any programatic logic a third party should wish to integrate with
FVWM, should be done within the configuration of FVWM itself, and that
any other solution is bad.
BS. Is this you Harry? Haven't you wasted enough of our time?
Post by m***@crosswire.com
Yet FVWM's configuration syntax is incredibly intolerant of anyone who
isn't an old-school C programmer. It certainly isn't in the interest of
expanding usership to continue down that path.
Fvwm commands don't use C syntax.
Post by m***@crosswire.com
Perhaps I'm making a bad
assumption. Is increased usership a goal of the FVWM development team?
Fvwm is for users that want complete control of their desktop with
minimal resource use and ultimate flexibility.

Since no one else has EVER called for the kinds of changes you've
proposed I don't think you are in a position to decide what our users
want.
--
Dan Espen
Michael Großer
2012-02-24 09:54:25 UTC
Permalink
Post by Dan Espen
Post by m***@crosswire.com
Perhaps I'm making a bad
assumption. Is increased usership a goal of the FVWM development team?
Fvwm is for users that want complete control of their desktop with
minimal resource use and ultimate flexibility.
"http://www.fvwm.org" should contain a link "target group" to a page
with such kind of definition.

Nobody needs 50 different window managers that all have exactly the same
features, appearance, attitude and drawbacks.

We live in a time where people have different demands, different
likings and where people need different pieces of software to satisfy
their needs.

If the FVWM homepage would make more clear which kind of wants
*THIS* window manager supplies, discussion threads like this
could be avoided, perhaps.

If someone wants to increase the number of users who use FVWM,
then I think this plain clarification on a prominent site,
describing the target group, is the only approach to reach
that goal.
Post by Dan Espen
Since no one else has EVER called for the kinds of changes you've
proposed I don't think you are in a position to decide what our users
want.
People should admit that they are part of the defined target group
or even understand the needs of the target group before they become
deciders. This should be the norm in any project.
Thomas Adam
2012-02-24 22:13:06 UTC
Permalink
Post by Michael Großer
Post by Dan Espen
Post by m***@crosswire.com
Perhaps I'm making a bad
assumption. Is increased usership a goal of the FVWM development team?
Fvwm is for users that want complete control of their desktop with
minimal resource use and ultimate flexibility.
"http://www.fvwm.org" should contain a link "target group" to a page
with such kind of definition.
God no. FVWM is not elitist. People will either use it, or not. People
can have ideas, and do. People will have opinions and share them. Or not.
But if/when they do, we'll discuss them, and sometimes good things come of
them.

This isn't endemic to this project, and other projects have many more
opinions floating around. Just look at OpenBSD for that.

-- Thomas Adam
--
"Deep in my heart I wish I was wrong. But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)
Tethys .
2012-02-27 12:59:12 UTC
Permalink
God no.  FVWM is not elitist.  People will either use it, or not.  People
can have ideas, and do.  People will have opinions and share them.  Or not.
But if/when they do, we'll discuss them, and sometimes good things come of
them.
This isn't endemic to this project, and other projects have many more
opinions floating around.  Just look at OpenBSD for that.
A poor example, I feel. I agree that FVWM isn't elitist. But I'd have
to say the OpenBSD project really *is*. Hell, I've only been using
Unix for 25 years. But I was still told I wasn't the sort of user they
wanted because I happened to ask about something they didn't approve
of on openbsd-misc.

Tet
--
"Java is a DSL for taking large XML files and converting them to stack
traces" -- Bulat Shakirzyanov
Michael Großer
2012-02-27 20:28:27 UTC
Permalink
Post by Thomas Adam
Post by Michael Großer
Post by Dan Espen
Post by m***@crosswire.com
Perhaps I'm making a bad
assumption. Is increased usership a goal of the FVWM development team?
Fvwm is for users that want complete control of their desktop with
minimal resource use and ultimate flexibility.
"http://www.fvwm.org" should contain a link "target group" to a page
with such kind of definition.
God no. FVWM is not elitist. People will either use it, or not. People
can have ideas, and do. People will have opinions and share them. Or not.
But if/when they do, we'll discuss them, and sometimes good things come of
them.
This isn't endemic to this project, and other projects have many more
opinions floating around. Just look at OpenBSD for that.
-- Thomas Adam
Initially, I didn't intend to speak verbosely to explain strategic way of thinking.
But, now there seem to be at least two people who misread my thoughts.

Let me explain:
I simply define a target group as a group of people who all have the same
class of wants (the same wishes, the same issues and the same desires).
This is not elitist. A target group can also be a group of people who belong to
the underclass according to my definition, and an underclass surely can't be
considered as an elite.

"Elite" and "target group" are defined that differently.

Take my example: I want my computer to be powerful. Since 1992/1993
I wanted complete control of each computer I owned. I expect my
computers to be powerful, efficient and quick. With these demands,
I have some kind of interest profile. Together with other people who
share the same interest profile, I constitute a "target group".
Post by Thomas Adam
FVWM is an extremely powerful ICCCM-compliant multiple
virtual desktop window manager for the X Window system.
When I read this, then I think: "Extremely powerful? Yes, this
is what I'm looking for! Multiple virtual desktops? Hey! This
is the whole idea what makes a computer useable for me!"

But, people who don't open the first page of "www.fvwm.org"
know nothing of this. When I mention "FVWM" somewhere, people
say: "FVWM? Is this the old window manager that nobody uses
anymore?"

I think, this is the wrong message! The association in the heads
of people out there shouldn't be "that nobody uses anymore?" but
rather "the window manager that people prefer who are looking for
power rather than for gimmicks".

Here,
http://www.jumping-blue-turtle.com/online-shop/0005_lenny/debian/fvwm/index.html
I tried to explain (in my native language) why FVWM is better
than other solutions:

- FVWM is fast
- other solutions are heavyweight and unnecessarily plump

- FVWM is powerful
- other solutions are castrated (restricted) and close-minded

- FVWM is functional
- other solutions aim for gimmicks and optical dalliance

- FVWM is for working people
- other solutions frustrate

- FVWM can be downright programmed
- other solutions can't be used without a mouse

People who agree with all the statements in that table
constitue the target group of that web page. People
who do not agree simply belong to other target groups.

The only drawbacks of that page are that it is in German
and that I want money there. Both aspects will change
later.

If the FVWM community would manage the trick to bring
the message "FVWM is for people who are looking for
power" even into the heads of non-FVWM users, then all
the people who indeed are looking for these qualities
would take notice of FVWM, and this would bring the
FVWM community a new kind of momentum.

This is a simple message: The more clearly the FVWM
project communicates these values the more people who
actually share these values will be attracted by this
project.

OK, I really spoke verbosely now. I hope, somebody
will understand this idea better than before.

I don't want to bother you any further with that if
nobody is interested. Just seize this idea or forget it.

- Michael -
Thomas Adam
2012-02-27 21:02:52 UTC
Permalink
Post by Michael Großer
I think, this is the wrong message! The association in the heads
of people out there shouldn't be "that nobody uses anymore?" but
rather "the window manager that people prefer who are looking for
power rather than for gimmicks".
See -- as soon as you start out on this premise, you end up doing the very
thing which is ultimately going to be any project's downfall; pigeonholing,
and then entering in to competitions with other WMs/DEs, just because you've
made those statements.

You can try and justify it all you like, but as soon as you try and justify
the general consensus of a few people who think in the negative way you
assume is the prevalent attitude, then you're forever fighting a losing
battle, because those people have already made up their minds. Trying to
turn that on its head and then assume capturing new users can be done
through shoving the needs of those users into different boxes is called
GNOME.

Let people make up their own minds in the time-honoured way -- by trying
things for themselves. We'll help them when/if they get stuck, as we always
do.

-- Thomas Adam
--
"Deep in my heart I wish I was wrong. But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)
Thomas Adam
2012-02-24 09:32:54 UTC
Permalink
Post by m***@crosswire.com
SNIP
[I really don't like biting for what is an obvious flamewar, but sometimes
there's useful bits of fallacy which need busting through, so I'll be
picking those up and side-stepping the bait.]
Post by m***@crosswire.com
FVWM is not more portable than it would be if it was Object Oriented.
FVWM is not more extensible than it would be if it was OO.
FVWM does not integrate as easily with third party code, as it would if
it was OO.
Unfortunately, you're under the impression that the language -- and more
specifically -- the *paradigm* is the most important aspect of any program.
But this is not true at all. Take houses for instance. Are you going to
argue that despite an igloo and a log cabin being different houses, that we
should all live inside caravans, simply because a caravan is a home with
wheels?

Igloos and log cabins are what they are, but a caravan has no advantage over
the others, *unless* you want to travel with your home. But then that's a
completely different concept (procedural versus OO), but has nothing to do
with them being related (that they're all types of home). I might choose an
igloo over a log cabin or vice-versa, but that's my choice. The only
limitation in there is if I suddenly decide I need to travel with my home,
but then it becomes a different problem.

So by your suggesting we somehow need to change languages because of some
limitation is nonsense; that we might want to switch languages because you
*personally* see a benefit in it is equally nonsense. These sorts of
arguments always are, because no one ever is able to justify personal
preference.

FVWM is written in C, and that's just the way it is. There are no drawbacks
to this approach. It's a damn *good* one, because guess what the other
interfaces are written in, and *were* written in to begin with? That's
right: C.

You use words such as 'extensible', and 'portable' as if you have an idea of
what they mean in the context of FVWM as it is now. You also go as far as
to mention 'third party code'. Do you not realise we have all of that right
now with FVWM's module interface, including language-bindings in Perl (and
to a lesser-extent sh)? That you might not like the choice of bindings is
entirely irrelevant. But the point is, they're there. Just how would an
OO approach (note that I don't mention C++ here -- I care not for the
language) make this any more or less extensible? The interface between FVWM
and its modules is not exposed to someone wanting to do this -- that's the
whole point of abstraction. If I were to tell you that it was written in
C++ behind the scenes it wouldn't make any difference to your making this
more extensible.
Post by m***@crosswire.com
Regarding database integration, pretty much every *nix programming
environment has existing libs for integrating with sqlite, no pipelining
required.
Ah. And now I remember you:

http://www.mail-archive.com/***@fvwm.org/msg01781.html

Note that you're under another mistaken impression that sqlite specifically
cures unknown problems for you (or worse yet you're stating some form of
an XY problem).
Post by m***@crosswire.com
My interest is not so much in the database, but in the fact that it
improves syntactical constraint, extensibility, and supportability in
one include statement. The same motives are behind using WxWidgets. Wx,
Can you list here exactly, within the context of databases and FVWM, what
the following words/phrases mean:

syntactical constraint
extensibility
supportability

Sqlite doesn't offer you anything over FVWM's mechanism of using *plain
text*, other than a massive headache in terms of locking and concurrent
access (by which I mean not just from users, but modules communicating with
FVWM -- and last I checked concurrency and locking at that level wasn't
supported).

There's a reason why plain text works, by the way. And a database to store
values solves nothing, it increases problems.
Post by m***@crosswire.com
and Sqlite integration would reduce the rewrite time to version 1.0 by a
significant amount, and with decent design practices, if you still want
Xlib, go ahead. Just write an Xlib based widget object and include it as
a plugin or a module. Nothing prevents that.
Careful here. Xlib has nothing to do with storing values (which sqlite
does) -- so I am not sure what you're getting at here, other than not
understanding how and why FVWM even needs to use Xlib.
Post by m***@crosswire.com
FVWM is not more hackable, than it would be if it used SQL as
configuration repository.
So let's take your example. How would I remove a titlebar from a window,
exactly?

UPDATE table window SET properties.titlebar = 0 where properties.id = ?;

Versus:

WindowStyle !Title

Hmm. No thanks. Now consider how this would work for more than one window
where you'd need locking on the table -- and use transactions -- because
there's a chance the window might die, or another window is mapped meaning
this hypothetical window table would corrupt it -- and tell me why it's
better? It's not. It's worse.
Post by m***@crosswire.com
FVWM is not more syntactically stable, than it would be if it used
SQL...
FVWM is not more supportable, than it would be if it used SQL.
Clearly, I've overlooked something as a developer of FVWM all this time if
SQLite is going to solve all our problems when FVWM has no concept of a
database.

Enlightenment should realise the dangers of this, with their binary
configurations file. Your database idea is just as bad, by the way.
Corrupting plain text has a large chance of working, by the way. If you
make syntax errors, FVWM can keep calm and carry on. If your database
jimmies itself through problems of concurrency (ahem) what happens then?
Bye-bye settings without *any* backup at all. And given how SQLite
specifically likes to eschew compatibility between versions, *I* wouldn't
want to be responsible for supporting multiple versions. You speak of third
party operability -- tell me how this is a good thing? At least with plain
text I can write (and have done with fvwm-convert-2.6 -- and I know Dan
Espen has as well) a file to maintain compatibility. Happy days.
Post by m***@crosswire.com
I have seen many times on this list, a prevelance of a bizarre attitude
that any programatic logic a third party should wish to integrate with
FVWM, should be done within the configuration of FVWM itself, and that
any other solution is bad.
Have you? Point me towards your examples, and I'm sure I can justify each
and every one of them. But then as I do so, please then expect me to ask
you to outline how SQLite would help.
Post by m***@crosswire.com
Yet FVWM's configuration syntax is incredibly intolerant of anyone who
isn't an old-school C programmer. It certainly isn't in the interest of
We don't enforce a language-style at all in the config file, and we sure as
hell don't make it look like C. You're muddling things here.

You'll hear on the grape vine if you so wish to, a resurgence of people
looking back towards the ideals of programs like FVWM which use more
"simpler" means of configuration in comparison to the direction DEs like
GNOME and Unity, where the perceived control and attitude of what the
program will let you do is a somehow a new thing; a breath of fresh-air. I
definitely want to maintain that, and a database is therefore out of the
question. Not just for this reason, but given your absurd assertions for
needing it, I'll take fresh-air as a good enough one for not needing it. :)

By the way, you are *more* than free, using perllib to write a program in
Perl using its DBD::SQLite bindings to do exactly what you want. And guess
what? You can do all of this without a rewrite in C++, without thinking
Xlib is somehow the wrong thing to be using, and ironically by doing that,
you've just made FVWM extensible using its own mechanism to do what you
want, and then disproving all your points above.

That's why I like FVWM -- even more so now -- it's just beaten you at your
own game. :)

-- Thomas Adam
m***@crosswire.com
2012-02-24 14:56:38 UTC
Permalink
Ok,

I give. There is no better way than FVWM.

Thanks!
Jaimos F Skriletz
2012-02-24 16:36:27 UTC
Permalink
Post by m***@crosswire.com
Ok,
I give. There is no better way than FVWM.
Thanks!
That was not the point, it is just another extreme stance. FVWM is good
at what it does, dosen't mean it is the best, as this is usually
personal opinion. A rewrite of FVWM would only waste the time of the
developers that could be spent on projects that actually add
functionality to improving FVWM.

jaimos
Chris Siebenmann
2012-02-24 22:56:51 UTC
Permalink
Here are two thoughts on relatively self-contained potential FVWM GSoC
projects:

* a module that is the inverse of FvwmCommand; call it FvwmQuery.
Where FvwmCommand allows shell scripts to send commands to FVWM,
FvwmQuery would allow them to get information from it.

The FVWM module interface and the Perl library for it allows you to
ask for a lot of useful information from FVWM, but this isn't readily
accessible outside of writing an actual module. Since the current
module interface is mostly low level, there would be some amount of
defining useful high-level things to ask for and maybe documenting
the module interface (if this is considered desirable).

(Writing such a module and trying it out might lead to also adding
more information to the module interface, if an FvwmQuery module
alone would be too small for a GSoC project.)

* A Ruby and/or Python library for the FVWM module interface to go
with the existing Perl library[*]. As above, this might also involve
documenting the module interface.

(The elaborate version of this would autogenerate all of the necessary
low level constants and so on for all languages from the C headers, so
that adding these additional languages didn't increase the maintenance
efforts.)

Alternately, maybe people feel that either or both of the ideas here
are undesirable for FVWM in general.

- cks
[*: I've picked Ruby and Python on the grounds that (along with Perl)
they seem to be the common high level Unix scripting languages at
the moment.]
Thomas Adam
2012-02-24 23:10:47 UTC
Permalink
Post by Chris Siebenmann
Here are two thoughts on relatively self-contained potential FVWM GSoC
* a module that is the inverse of FvwmCommand; call it FvwmQuery.
Where FvwmCommand allows shell scripts to send commands to FVWM,
FvwmQuery would allow them to get information from it.
But FvwmCommand can already do this.
Post by Chris Siebenmann
The FVWM module interface and the Perl library for it allows you to
ask for a lot of useful information from FVWM, but this isn't readily
accessible outside of writing an actual module. Since the current
It's not readily available without redesigning and thinking about how to
store the information "thrown away" from commands in a FVWM config file, is
the *actual* problem here. It has nothing to do with modules being
selective about what it stores from Send_ConfigInfo in terms of what's
available to be displayed -- the simple answer is the useful information is
parsed into a structure where it's not in a human-readable format.
Post by Chris Siebenmann
module interface is mostly low level, there would be some amount of
defining useful high-level things to ask for and maybe documenting
the module interface (if this is considered desirable).
The module interface is documented.
Post by Chris Siebenmann
(Writing such a module and trying it out might lead to also adding
more information to the module interface, if an FvwmQuery module
alone would be too small for a GSoC project.)
See above. Please be very careful here again, it has *nothing* to do with
the module interface at all -- we can send whatever we like from FVWM. It
might mean a few additional packets, but going on Send_ConfigInfo for now, I
wouldn't have thought so.

What would be needed as a prerequisite though is something I planned to do
but haven't yet, and have FVWM listen on a socket for $DISPLAY -- this then
means FvwmConsole, FvwmCommand and this mythical FvwmQuery module disappear
all in to one invocation of the same thing -- anything that can listen on a
socket.
Post by Chris Siebenmann
* A Ruby and/or Python library for the FVWM module interface to go
with the existing Perl library[*]. As above, this might also involve
documenting the module interface.
(The elaborate version of this would autogenerate all of the necessary
low level constants and so on for all languages from the C headers, so
that adding these additional languages didn't increase the maintenance
efforts.)
Why?

We could just turn the module interface into a .so essentially and expose
that to the FFI for other languages -- such as .xs from perl.

That is a valid project, and not that difficult to do.

-- Thomas Adam
--
"Deep in my heart I wish I was wrong. But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)
Chris Siebenmann
2012-02-24 23:32:46 UTC
Permalink
[Some brief comments now, more considered ones later.]
| > Here are two thoughts on relatively self-contained potential FVWM GSoC
| > projects:
| >
| > * a module that is the inverse of FvwmCommand; call it FvwmQuery.
| > Where FvwmCommand allows shell scripts to send commands to FVWM,
| > FvwmQuery would allow them to get information from it.
|
| But FvwmCommand can already do this.

So it can indeed (although it looks like the information from
'send_windowlist' omits information about the States that a window is
in). This shows me up for not reading the manpage carefully and will
be useful in the future.

(I have to apologise; I should have checked all of this stuff before
sending my email. Bad me.)

| > * A Ruby and/or Python library for the FVWM module interface to go
| > with the existing Perl library[*]. As above, this might also involve
| > documenting the module interface.
[...]
|
| Why?
|
| We could just turn the module interface into a .so essentially and expose
| that to the FFI for other languages -- such as .xs from perl.
|
| That is a valid project, and not that difficult to do.

The simple answer is that a good Pythonic or Perl-oid or Ruby-oid
library will expose a different sort of interface than a C-level FFI.
Often it will want to extract information, reassemble it into native
objects and data structures, and then immediately release C-level
resources so that the language's native garbage collection can be used
instead of forcing callers to deal with lifetime issues and so on.
A C FFI as a .so is a starting point for such a module but not the
end result you want for fluent native programming.

(There are some old Python XML interface modules that are C-FFI style
and are infamous for leaking memory if you don't remember to do
everything right, by hand, in a rather non-Pythonic manner.)

- cks
Thomas Adam
2012-02-25 11:16:58 UTC
Permalink
Post by Chris Siebenmann
The simple answer is that a good Pythonic or Perl-oid or Ruby-oid
library will expose a different sort of interface than a C-level FFI.
Exactly. I don't care if some other language decided not to expose the C
api those language bindings happen to be using. That wasn't my point. My
point was that a language wishing to use those bindings to provide an API in
Ruby or Perl, need only *use* that one *we* provide; the person implementing
that interface in whichever language they've chosen can do whatever the hell
they want.

But until we decide to do it that way, it's a little moot, and it would
require some thought and design.

Great for a project for GSoC I'd say, because thankfully I've plenty of
ideas on this. :P

-- Thomas Adam
--
"Deep in my heart I wish I was wrong. But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)
MK
2012-02-25 13:47:12 UTC
Permalink
On Sat, 25 Feb 2012 11:16:58 +0000
Post by Thomas Adam
But until we decide to do it that way, it's a little moot, and it
would require some thought and design.
Great for a project for GSoC I'd say, because thankfully I've plenty
of ideas on this. :P
I like these ideas too, although I'll admit at this point I'm only
dimly aware there is some potential perl interface, and have
never investigated that or I've never looked at FwvmCommand.

However, I started using the perl-C XS interface stuff last year for
something, and one of the thoughts I had tooling around with that, and
being a fvwm user appreciative of the style of the text file
configuration, was writing a WM with a perl interface. Ie, the text
configuration would be a perl script using some XS modules.

So, if there were to be a new fvwm lib intended in part for use in
writing perl/python/whatever APIs with (I think this is a better idea
than doing that directly), how feasible would it be to export
initialization and configuration functions with that? This way, you
could have perl/python/whatever scripts which launch and configure
FWVM. :)

I'm presuming that the relationship between the proposed socket and
the .so would be to blackbox the socket, as with X, so that users
simply initialize with a C (or whatever) API call like XOpenDisplay()
and go from there, and the .so takes care of actual communication
via socket (or, possibly, initializing it at start-up). Do I have that
right?

MK
--
"Enthusiasm is not the enemy of the intellect." (said of Irving Howe)
"The angel of history[...]is turned toward the past." (Walter Benjamin)
Thomas Adam
2012-02-25 14:10:56 UTC
Permalink
Post by MK
On Sat, 25 Feb 2012 11:16:58 +0000
Post by Thomas Adam
But until we decide to do it that way, it's a little moot, and it
would require some thought and design.
Great for a project for GSoC I'd say, because thankfully I've plenty
of ideas on this. :P
I like these ideas too, although I'll admit at this point I'm only
dimly aware there is some potential perl interface, and have
never investigated that or I've never looked at FwvmCommand.
Well, they exist.
Post by MK
However, I started using the perl-C XS interface stuff last year for
something, and one of the thoughts I had tooling around with that, and
being a fvwm user appreciative of the style of the text file
configuration, was writing a WM with a perl interface. Ie, the text
configuration would be a perl script using some XS modules.
Having a lot of experience with XS myself, the point here is because the FFI
is in C, you've no choice really *but* to use XS, but that's a minor aspect
to this, as it is in any other language binding to this hyperthetical API
which libfvwmmodule [1] would provide.
Post by MK
So, if there were to be a new fvwm lib intended in part for use in
writing perl/python/whatever APIs with (I think this is a better idea
than doing that directly), how feasible would it be to export
initialization and configuration functions with that? This way, you
could have perl/python/whatever scripts which launch and configure
FWVM. :)
Well that's a side-issue entirely, when you have ModuleSynchronous to help
with this, but this has nothing to do with module APIs to expose the packets
FVWM sends to modules (we use the term "broadcast" for this) when events
happen. This is what we're referring to here, incidentally, with such an
interface.
Post by MK
I'm presuming that the relationship between the proposed socket and
the .so would be to blackbox the socket, as with X, so that users
simply initialize with a C (or whatever) API call like XOpenDisplay()
and go from there, and the .so takes care of actual communication
via socket (or, possibly, initializing it at start-up). Do I have that
right?
That the socket is initialised at startup time by FVWM is orthogonal to how
it is used. It's *just* a socket which FVWM is listening on at one end, and
clients are free to connect to it and send FVWM requests. This is somewhat
multiplexed by what happens at the moment, where FVWM sets up a pair of
listening pipes for read/write comms for each module it is told to load.

The point here though is that the listening socket probably *shouldn't* be a
domain socket. But yes, this API would have to wrap around the use of the
socket, just like the module API in FVWM currently handles listening on the
read/write pair of pipes.

So to take a specific example here, in the case of FvwmConsole, that
disappears entirely, because all it is is some form of FvwmCommand running
directly inside a terminal [2] -- where it will then just do socket
manipulations for us. Nothing complicated.

You would still need the Module command in FVWM to work as it does now --
that is, force FVWM to start modules, and die if, say, FvwmButtons was run
from outside of FVWM. Again, nothing in FvwmButtons needs to change, save
for the existing API it, and other modules, use to communicate/receive
information from FVWM. See libs/Module.c for more information.

But do not get ahead of yourself -- I've not fully decided the scope of
this, so we should discuss it some more.

-- Thomas Adam

[1] A good a name as any I suppose.
[2] Extra points for it being some kind of REPL as well. :P
--
"Deep in my heart I wish I was wrong. But deep in my heart I know I am
not." -- Morrissey ("Girl Least Likely To" -- off of Viva Hate.)
Loading...