mutter tiling



Wow. there is a lot of crazy in this thread. I'm sorry.

<rant>

>>>>  Me personally, I'm not in favor of writing writing it
>>>> in Javascript because of the dynamic typing (will be painfull to find
>>>> problems caused by changed Mutter bindings).

The risk that you're describing, there's a set of tools you can
develop to hedge against this very eventuality. They're called unit
tests. This is probably a textbook example for why unit tests are
important, especially in a dynamic language environment.

Now the Bad News: there's no existing unit test infrastructure in
gnome-shell javascript land. We need it, badly. And the Good News:
there's lots of great frameworks out there for this for both the
browser (qunit, screw-unit, jspec, etc) and server-side (vows, jspec
again, etc) environments that we, as a community, can leverage to this
end. This is something that's been on my mind quite a bit, lately.

Also: have you even given javascript a chance? Please don't let it's
history in the browser bias you against it; it's a marvelous language
with a lot of really interesting features that makes nice, expressive
code possible. I think the gnome-shell team made a *great* choice when
they chose javascript for the scripting environment and scriptmonkey
is a good engine with a great performance for our needs (with a clean,
C-based API.. putting aside the hype around v8, for now). The work the
team has done around the introspection-based bindings is excellent.

The gnome-shell team, like myself, know that there's a ways to go yet,
in terms of making the javascript extensibility environment more
robust and exposing more features of the underlying C code. Sadly,
they have other dragons to slay right now and heading into 3.2. It's a
good thing that this is an FOSS project and anyone can submit
features/patches (I've done my share to expose a few methods in
mutter, but there's much to be done still). I've found the team to be
very constructive and receptive to patches, thus far.

> I've been wondering about the possibility of the leveraging the GWT compiler
> to write gnome-shell extensions (any js code, really) in Java.

I hope you're joking, because I don't even know where to begin with
this. Java is definitely a step backwards, here.

I mean seriously, people. You aren't going to be mutated into effete
web developers overnight just because you use javascript to extend
gnome-shell (and I've harped a LOT on the "C-ness" of their API in
IRC, so perhaps that can give you some comfort). I can't divine your
reasons for not wanting to use the language, but I really haven't
heard any rational arguments against it, yet, in this thread.

Javascript has, perhaps, emerged as a lingua franca on the web mostly
by accident. That being said, you could do a *lot* worse than to have
to use javascript as a core extensibility language. It has a lot of
really nice features that, once understood (as is the case with any
language), make it great for a lot of tasks. But I can't be
responsible for educating you on these things. The internet is out
there and there are plenty of places for you to learn "the good parts"
of the language.

Once again: please don't let its historical baggage with ugly browser
impls color your opinion. You *need* to actually try and use
javascript, earnestly, for the tasks you describe above before
dismissing it.

To this end, I'll even volunteer up my repo for the tiling window
management extensive I've been working on (but didn't feel was ready
for a release, yet). It's very rough and needs docs, still (and I
believe it needs to be updated to the latest gnome-shell release in
the metadata.json.. I haven't messed with it in a few weeks) :

https://github.com/olsonjeffery/shellshock

I used to have a custom mutter branch with the C-extensions I needed
to make this extension work, but I believe my changes have been
accepted as patches, so it should work ootb. It's very rough around
the edges, still. But it's a start, I think. And everything needed to
have automatic tiling (the workspace added/removed events, window
add/remove events, etc) is all there in the gnome-shell API, just not
wired in.

If anyone's interested in learning more about the code I've submitted
and how to leverage it, I can try and add some README info.

</rant>


[Date Prev][Date Next]   [Thread Prev][Thread Next]   [Thread Index] [Date Index] [Author Index]