Re: GSoC Proposal: Scripting Framework for Applications

2010-04-08 Thread John Palmieri

- "Colin Walters"  wrote:

> On Thu, Apr 8, 2010 at 2:56 PM, Shaneeb Kamran 
> wrote:
> 
> > The main benefit of supporting multiple languages is more to the
> users of
> > the application than to its developers. Like I mentioned in my
> previous
> > mails, if a user wants to add a feature to his favorite application
> and he
> > knows only a language, say, ruby while the app requires him to write
> the
> > extension in, say, python then the user is stuck: he has to learn a
> new
> > language just to write a small piece of code.
> 
> We can't support multiple runtimes per process sanely for a variety
> of
> technical reasons; one of those is that multiple GC'd runtimes break
> toggle references useless and lead to memory leaks.  A non-technical
> argument against this is that it fragments the developer base,
> documentation, etc.
> 
> My take is that GNOME apps should pick C + one of JS,Python and move
> on with actually writing your app and fixing bugs, making it
> compelling, etc.

I would have to agree here.  As a project the proposal has merit but the issues 
involved make it a poor candidate for an SoC funded project.  I would much more 
like to see a project which adds scripting (JS or Python) to a number of 
applications in the GNOME stack.  Or one that documented best practices for 
applications exporting plugin hooks.  Those seem to be much more useful once 
the SoC period has ended. SoC should be about improving on existing projects, 
not creating whole new projects because the time allotted isn't really long 
enough to start something from scratch.  For that reason a project should prove 
itself outside of the SoC framework before we consider it for funding.  In 
other words a developer should be enthusiastic enough about a project to 
develop it regardless of funding.
 
--
John (J5) Palmieri
Software Engineer
Red Hat, Inc.
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: GSoC Proposal: Scripting Framework for Applications

2010-04-08 Thread Zeeshan Ali (Khattak)
On Thu, Apr 8, 2010 at 10:06 PM, Colin Walters  wrote:
> On Thu, Apr 8, 2010 at 2:56 PM, Shaneeb Kamran  wrote:
> My take is that GNOME apps should pick C + one of JS,Python and move
> on with actually writing your app and fixing bugs, making it
> compelling, etc.

   That would be my plan for world domination as well except that I
think its time all gnome developers stop wasting their time writing
code in C while they can achieve the exact same results using Vala in
far less time and efforts without introducing performance overhead or
dependencies. Moreover, we'll get gobejct-introspection support for
free.

--
Regards,

Zeeshan Ali (Khattak)
FSF member#5124
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: GSoC Proposal: Scripting Framework for Applications

2010-04-08 Thread Colin Walters
On Thu, Apr 8, 2010 at 2:56 PM, Shaneeb Kamran  wrote:

> The main benefit of supporting multiple languages is more to the users of
> the application than to its developers. Like I mentioned in my previous
> mails, if a user wants to add a feature to his favorite application and he
> knows only a language, say, ruby while the app requires him to write the
> extension in, say, python then the user is stuck: he has to learn a new
> language just to write a small piece of code.

We can't support multiple runtimes per process sanely for a variety of
technical reasons; one of those is that multiple GC'd runtimes break
toggle references useless and lead to memory leaks.  A non-technical
argument against this is that it fragments the developer base,
documentation, etc.

My take is that GNOME apps should pick C + one of JS,Python and move
on with actually writing your app and fixing bugs, making it
compelling, etc.
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: GSoC Proposal: Scripting Framework for Applications

2010-04-08 Thread Shaneeb Kamran
On Thu, Apr 8, 2010 at 1:57 AM, John Palmieri  wrote:

>
> - "Shaneeb Kamran"  wrote:
>
> > On Tue, Apr 6, 2010 at 9:24 PM, Johannes Schmid < j...@jsschmid.de >
> > wrote:
> >
> >
> > Hi!
> >
> >
> >
> > > I am not entirely sure but my guess is adding support for another
> > > language would require modifications to all the applications
> > > individually that want its support to be included. As far as I have
> > > read (I apologize if I am wrong) GObject-introspection just makes
> > > language bindings pretty straightforward but to be able to use a
> > > language for scripting requires more than bindings; there are other
> > > issues involved for example, mechanism for invoking the script,
> > > passing objects, data conversion from the scripting language to the
> > > language of the application (usually C\C++), etc.
> >
> > That's not true. By adding gobject-introspection you get
> > language-bindings for at least JavaScript and Vala out of the box and
> > python is planned. There is nothing else to do as the bindings are
> > constructed a runtime (vala: compile-time) from the introspection
> > files.
> >
> >
> >
> > Are the "bindings" the only thing required to properly interface two
> > languages together? What about data-type mapping, data marshalling,
> > memory management issues, etc? Since we have introspection now, all
> > our problems are solved? Correct me if I am wrong but libraries such
> > as GJS are meant to handle precisely these issues.
> >
> >
> > But that still is not the main concern of the project; these issues
> > are supposed to be handled by specific language plugins (GJS would be
> > treated as a language plugin). Moreover as you say, JavaScript support
> > is out (GJS) and python support will be complete soon as well
> > (PyGObject?). Great, any application can now link to these two
> > libraries and use two languages. What if someone writes support for a
> > third language, say ruby. Your application will need to be modified to
> > use that library and add another dependency. Now libraries to add two
> > more languages' support, say Java and .NET, are created. So your
> > application will need to add yet more (bloat) code, add another two
> > dependencies raising the total number of dependencies to four. Now Lua
> > supports comes in...
> >
> >
> > The cycle continues.
> >
> > I perhaps failed to clearly highlight the main goal of the project:
> > enable an application to add scripting support, without regard to any
> > particular language, i.e. cross-language. Specific languages plugins
> > will then be loaded at runtime (read: no static dependency) which will
> > handle all the issues mentioned above plus generate "bindings" via
> > GObject-introspection as well.
> >
> >
> > The project is very much inspired by the Kross scripting framework
> > which is available to KDE developers (
> > http://www.techbase.kde.org/Kross )
>
> So what GObject Introspection gets you is the ability for bindings that
> understand GObject Introspection to instantly load those modules and use
> them in the language's interpreter.  It doesn't instantly allow any app to
> load a plugin written in any language.  For instance gnome-shell uses the
> gjs interpreter and exports functions and objects through GNOME
> Introspection.  You can't write a python plugin unless the shell decides to
> embed a python interpreter.  Marshalling data isn't an issue here unless you
> wanted to somehow allow different language modules to talk to each other.
>
> Basically what you would be doing is writing a meta interpreter which would
> provide a framework for developers to add plugin support without worrying
> about which interpreter they would be using.  I see a couple of downfalls to
> this approach - specifically security, performance and issues with some
> languages not being supported on one or another system.  I'm also not
> convinced, without a common runtime like .net and given that the client side
> of the web has survived pretty well without the need of multiple languages,
> it is something we wish to encourage.  That being said, the proposal itself
> has some merit as a project.
>
>
I wouldn't say its a 'meta interpreter' but yes that is the basic idea. IMO,
performance wont be an issue since there will only be a thin layer over the
language plugins (which will have interpreters embedded in them). Security
can be an issue, but then how does GJS or other existing libraries provide
any protection? Besides, there is always the option of introducing some
'restriction mechanism' (if the project becomes mature) such as allowing
only "signed" scripts to be executed.

The main benefit of supporting multiple languages is more to the users of
the application than to its developers. Like I mentioned in my previous
mails, if a user wants to add a feature to his favorite application and he
knows only a language, say, ruby while the app requires him to write the
extension in, say, python then the user is stuck: he has 

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-07 Thread John Palmieri

- "Shaneeb Kamran"  wrote:

> On Tue, Apr 6, 2010 at 9:24 PM, Johannes Schmid < j...@jsschmid.de >
> wrote:
> 
> 
> Hi!
> 
> 
> 
> > I am not entirely sure but my guess is adding support for another
> > language would require modifications to all the applications
> > individually that want its support to be included. As far as I have
> > read (I apologize if I am wrong) GObject-introspection just makes
> > language bindings pretty straightforward but to be able to use a
> > language for scripting requires more than bindings; there are other
> > issues involved for example, mechanism for invoking the script,
> > passing objects, data conversion from the scripting language to the
> > language of the application (usually C\C++), etc.
> 
> That's not true. By adding gobject-introspection you get
> language-bindings for at least JavaScript and Vala out of the box and
> python is planned. There is nothing else to do as the bindings are
> constructed a runtime (vala: compile-time) from the introspection
> files.
> 
> 
> 
> Are the "bindings" the only thing required to properly interface two
> languages together? What about data-type mapping, data marshalling,
> memory management issues, etc? Since we have introspection now, all
> our problems are solved? Correct me if I am wrong but libraries such
> as GJS are meant to handle precisely these issues.
> 
> 
> But that still is not the main concern of the project; these issues
> are supposed to be handled by specific language plugins (GJS would be
> treated as a language plugin). Moreover as you say, JavaScript support
> is out (GJS) and python support will be complete soon as well
> (PyGObject?). Great, any application can now link to these two
> libraries and use two languages. What if someone writes support for a
> third language, say ruby. Your application will need to be modified to
> use that library and add another dependency. Now libraries to add two
> more languages' support, say Java and .NET, are created. So your
> application will need to add yet more (bloat) code, add another two
> dependencies raising the total number of dependencies to four. Now Lua
> supports comes in...
> 
> 
> The cycle continues.
> 
> I perhaps failed to clearly highlight the main goal of the project:
> enable an application to add scripting support, without regard to any
> particular language, i.e. cross-language. Specific languages plugins
> will then be loaded at runtime (read: no static dependency) which will
> handle all the issues mentioned above plus generate "bindings" via
> GObject-introspection as well.
> 
> 
> The project is very much inspired by the Kross scripting framework
> which is available to KDE developers (
> http://www.techbase.kde.org/Kross )

So what GObject Introspection gets you is the ability for bindings that 
understand GObject Introspection to instantly load those modules and use them 
in the language's interpreter.  It doesn't instantly allow any app to load a 
plugin written in any language.  For instance gnome-shell uses the gjs 
interpreter and exports functions and objects through GNOME Introspection.  You 
can't write a python plugin unless the shell decides to embed a python 
interpreter.  Marshalling data isn't an issue here unless you wanted to somehow 
allow different language modules to talk to each other.

Basically what you would be doing is writing a meta interpreter which would 
provide a framework for developers to add plugin support without worrying about 
which interpreter they would be using.  I see a couple of downfalls to this 
approach - specifically security, performance and issues with some languages 
not being supported on one or another system.  I'm also not convinced, without 
a common runtime like .net and given that the client side of the web has 
survived pretty well without the need of multiple languages, it is something we 
wish to encourage.  That being said, the proposal itself has some merit as a 
project.

--
John (J5) Palmieri
Software Engineer
Red Hat, Inc.
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list


Re: GSoC Proposal: Scripting Framework for Applications

2010-04-07 Thread Shaneeb Kamran
On Thu, Apr 8, 2010 at 1:19 AM, Shaneeb Kamran wrote:

>
> *The project is very much inspired by the Kross scripting framework which
> is available to KDE developers (http://www.techbase.kde.org/Kross)*
>
>>
>>
Sorry, incorrect address. You can try at
http://en.wikipedia.org/wiki/Kross_(KDE) and http://kross.dipe.org/

-- 

Regards,
Shaneeb Kamran
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-07 Thread Shaneeb Kamran
On Tue, Apr 6, 2010 at 9:24 PM, Johannes Schmid  wrote:

> Hi!
>
>
> > I am not entirely sure but my guess is adding support for another
> > language would require modifications to all the applications
> > individually that want its support to be included. As far as I have
> > read (I apologize if I am wrong) GObject-introspection just makes
> > language bindings pretty straightforward but to be able to use a
> > language for scripting requires more than bindings; there are other
> > issues involved for example, mechanism for invoking the script,
> > passing objects, data conversion from the scripting language to the
> > language of the application (usually C\C++), etc.
>
> That's not true. By adding gobject-introspection you get
> language-bindings for at least JavaScript and Vala out of the box and
> python is planned. There is nothing else to do as the bindings are
> constructed a runtime (vala: compile-time) from the introspection files.
>

Are the "bindings" the only thing required to properly interface two
languages together? What about data-type mapping, data marshalling, memory
management issues, etc? Since we have introspection now, all our problems
are solved? Correct me if I am wrong but libraries such as GJS are meant to
handle precisely these issues.

But that still is not the main concern of the project; these issues are
supposed to be handled by specific language plugins (GJS would be treated as
a language plugin). Moreover as you say, JavaScript support is out (GJS) and
python support will be complete soon as well (PyGObject?). Great, any
application can now link to these two libraries and use *two *languages.
What if someone writes support for a third language, say ruby. Your
application will need to be modified to use that library and add another
dependency. Now libraries to add two more languages' support, say Java and
.NET, are created. So your application will need to add yet more (bloat)
code, add another two dependencies raising the total number
of dependencies to four. Now Lua supports comes in...

The cycle continues.

I perhaps failed to clearly highlight the main goal of the project: enable
an application to add scripting support, *without regard to any particular
language, i.e. cross-language. Specific languages plugins will then be
loaded at runtime (read: no static dependency) which will handle all the
issues mentioned above plus generate "bindings" via GObject-introspection as
well. *
*
*
*The project is very much inspired by the Kross scripting framework which is
available to KDE developers (http://www.techbase.kde.org/Kross)*


>
> > The two uses-cases I mentioned are similar to what you are suggesting.
> > In my opinion, these two extremes do seem to have a fair bit of
> > similarity and hence they can be supported using a single scripting
> > framework. Moreover, attempting to unify them would save some code
> > bloat since a single solution is always better than two overlapping
> > ones.
>
> Well, would a single solution have so much benefit? Of course you might
> be able to unify the way plugins are loaded and plugin descriptions are
> designed but this is actually not much code as most things a handled by
> GModule anyway.
>
> Much more important is the point that any application has it's own
> plugin API anyway, as the plugins have to interact with the internal
> architecture of the application.
>
> Example: gedit and anjuta both use gtksourceview. But a plugin in gedit
> is able to interact directly with the gtksourceview class while anjuta
> supports different editors and as such has an interface called
> IAnjutaEditor which is used to interact with the editor. A unified
> framework won't help you here at all.
>
>
>
Covering the two use cases (plugin + embedding) is not the main focus of the
project. Let me rephrase it as covering the 'maximum possible usage
scenarios'. If its not possible to unify embedding and plugin usages then
let it be so; I will not attempt to cover both usages in such a case ;-) ...
My point was that we shouldn't restrict ourselves to only a single use case
but rather make it as general as possible. Plus I wanted to make a stronger
case for my proposal ... ;-)



>
> > You reinforced my point ;-) . Having a proper scripting framework
> > would avoid having to modify/update each application individually in
> > order to support any new technology in future. Same goes if for
> > example, as you say, python bindings become more mature: individual
> > applications would not have to be updated to add support for this new
> > language.
> >
> See above. The internal APIs need to be exposed anyway and
> gobject-introspection is the best way to do it. I wonder what would be
> left for the "Scripting Framework".
>
>
If your not happy with "framework", suggest a word you like better. I only
used it since the KDE folks call their implementation (Kross) a 'scripting
framework' so I just reused that phrase. And maybe you are right, its not a
complete framew

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-06 Thread Johannes Schmid
Hi!

> You still need to add support by hand - otherwise there would be no
> 'javascript only' gnome-shell.

Well, the shell is javascript-only because it is itself written in
javascript. You cannot bind anything to Javascript, you can just bind it
to C. gnome-shell is a mutter plugin, mutter is written in C.

> I'm not quite sure how much code/time is spent on this but you still
> need to hook the single languages into the stack.
> 
> Last time I checked C/python/vala was used. gnome-games seems to use a
> bit guile. If user knows lua/ruby/fortran/shell/javascript - he's out of
> luck.

There may be some code necessary to actually load a plugin but it can
also be done in a way that the plugin itself contains some C code
(probably just some macros) to behave like a C plugin from the outside
and loading its language itself.

This part is probably interesting if someone wants to mentor it but it's
not really that much work. And keep in mind that plugins usually have
metadata files (anjuta uses GKeyFiles) to query information before
loading the plugin. Maybe you could write some library that handles the
metadata and the loading but it would need to be adapted and added to
the gnome code components to be useful.

Anyway, if someone would want to mentor it - why not. But it's definitly
no scripting framework, it's a plugin library (and there are already a
few out there).

Regards,
Johannes


signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-06 Thread Maciej Piechotka
On Tue, 2010-04-06 at 18:24 +0200, Johannes Schmid wrote:
> Hi!
> 
> 
> > I am not entirely sure but my guess is adding support for another
> > language would require modifications to all the applications
> > individually that want its support to be included. As far as I have
> > read (I apologize if I am wrong) GObject-introspection just makes
> > language bindings pretty straightforward but to be able to use a
> > language for scripting requires more than bindings; there are other
> > issues involved for example, mechanism for invoking the script,
> > passing objects, data conversion from the scripting language to the
> > language of the application (usually C\C++), etc.
> 
> That's not true. By adding gobject-introspection you get
> language-bindings for at least JavaScript and Vala out of the box and
> python is planned. There is nothing else to do as the bindings are
> constructed a runtime (vala: compile-time) from the introspection files.
> 

If I understand you still need to *load* plugins. While
gobject-introspection do simplify exporting/importing objects (in
runtime or compile time) it does *not* handle loading scripts and
running hooks.

You still need to add support by hand - otherwise there would be no
'javascript only' gnome-shell.

> 
> > The two uses-cases I mentioned are similar to what you are suggesting.
> > In my opinion, these two extremes do seem to have a fair bit of
> > similarity and hence they can be supported using a single scripting
> > framework. Moreover, attempting to unify them would save some code
> > bloat since a single solution is always better than two overlapping
> > ones.
> 
> Well, would a single solution have so much benefit? Of course you might
> be able to unify the way plugins are loaded and plugin descriptions are
> designed but this is actually not much code as most things a handled by
> GModule anyway.
> 
> Much more important is the point that any application has it's own
> plugin API anyway, as the plugins have to interact with the internal
> architecture of the application. 
> 
> Example: gedit and anjuta both use gtksourceview. But a plugin in gedit
> is able to interact directly with the gtksourceview class while anjuta
> supports different editors and as such has an interface called
> IAnjutaEditor which is used to interact with the editor. A unified
> framework won't help you here at all.
> 

I'm not quite sure how much code/time is spent on this but you still
need to hook the single languages into the stack.

Last time I checked C/python/vala was used. gnome-games seems to use a
bit guile. If user knows lua/ruby/fortran/shell/javascript - he's out of
luck.

> 
> > You reinforced my point ;-) . Having a proper scripting framework
> > would avoid having to modify/update each application individually in
> > order to support any new technology in future. Same goes if for
> > example, as you say, python bindings become more mature: individual
> > applications would not have to be updated to add support for this new
> > language.
> > 
> See above. The internal APIs need to be exposed anyway and
> gobject-introspection is the best way to do it. I wonder what would be
> left for the "Scripting Framework".
> 
> BTW, could you explain what components this scripting framework should
> have, which languages it would support, etc.?

I cannot answer for author but I'd imagine that:
 - Searching plugin directories for plugin
 - Detecting the language of plugin (ok. assembler is not the language
plugin is written in but that's different matter).
 - Loading/unloading plugins according to given configuration. Setting
the python/guile/haskell/lua/tcl/brainf*ck/whitespace/javascript
environment. Possibly it should handle dependencies between plugins.

Probably languages should be GModule plugins itself.

I don't know if it is enough for GSOC project but it is at least so
boring task many programs have no more then native+python scripting.

Regards


signature.asc
Description: This is a digitally signed message part
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-06 Thread Johannes Schmid
Hi!


> I am not entirely sure but my guess is adding support for another
> language would require modifications to all the applications
> individually that want its support to be included. As far as I have
> read (I apologize if I am wrong) GObject-introspection just makes
> language bindings pretty straightforward but to be able to use a
> language for scripting requires more than bindings; there are other
> issues involved for example, mechanism for invoking the script,
> passing objects, data conversion from the scripting language to the
> language of the application (usually C\C++), etc.

That's not true. By adding gobject-introspection you get
language-bindings for at least JavaScript and Vala out of the box and
python is planned. There is nothing else to do as the bindings are
constructed a runtime (vala: compile-time) from the introspection files.


> The two uses-cases I mentioned are similar to what you are suggesting.
> In my opinion, these two extremes do seem to have a fair bit of
> similarity and hence they can be supported using a single scripting
> framework. Moreover, attempting to unify them would save some code
> bloat since a single solution is always better than two overlapping
> ones.

Well, would a single solution have so much benefit? Of course you might
be able to unify the way plugins are loaded and plugin descriptions are
designed but this is actually not much code as most things a handled by
GModule anyway.

Much more important is the point that any application has it's own
plugin API anyway, as the plugins have to interact with the internal
architecture of the application. 

Example: gedit and anjuta both use gtksourceview. But a plugin in gedit
is able to interact directly with the gtksourceview class while anjuta
supports different editors and as such has an interface called
IAnjutaEditor which is used to interact with the editor. A unified
framework won't help you here at all.



> You reinforced my point ;-) . Having a proper scripting framework
> would avoid having to modify/update each application individually in
> order to support any new technology in future. Same goes if for
> example, as you say, python bindings become more mature: individual
> applications would not have to be updated to add support for this new
> language.
> 
See above. The internal APIs need to be exposed anyway and
gobject-introspection is the best way to do it. I wonder what would be
left for the "Scripting Framework".

BTW, could you explain what components this scripting framework should
have, which languages it would support, etc.?

Regards,
Johannes



signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-05 Thread Javier Jardón
2010/4/4 Johannes Schmid :

> I think there are more interesting opportunities for example to make
> sure that any of the GNOME core applications support full
> gobject-introspection of there plugin API that would bring GNOME much
> more forward.

There already is a GnomeGoal for this, take a look here [1] to check
the actual status

[1] http://live.gnome.org/GnomeGoals/AddGObjectIntrospectionSupport
-- 
Javier Jardón Cabezas
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-05 Thread Shaneeb Kamran
On Mon, Apr 5, 2010 at 1:04 AM, Johannes Schmid  wrote:
>
>
> Well, we have gobject-introspection and at least Javascript uses it to
> be able to connect to any API availabel in GNOME. Python is going to use
> it soon. So there is no problem in limiting the developer to a single
> language.
>

I am not entirely sure but my guess is adding support for another language
would require modifications to *all* the applications individually that want
its support to be included. As far as I have read (I apologize if I am
wrong) GObject-introspection just makes language bindings pretty
straightforward but to be able to use a language for scripting requires more
than bindings; there are other issues involved for example, mechanism for
invoking the script, passing objects, data conversion from the scripting
language to the language of the application (usually C\C++), etc.


>
> And for the plugin framework and don't think it possible/feasible to
> unitfy it as "plugins" are different things in different applications.
> In gedit plugins enhance the core functionality while for example in
> anjuta, the whole application is put together with different plugins as
> an architectural choice and you would just see an empty menu bar if no
> plugins are loaded. This is simple no "User scripting". I wonder if the
> would be a common layer that would work for both extremes and if that
> wouldn't impose new implications.
>
>
The two uses-cases I mentioned are similar to what you are suggesting. In my
opinion, these two extremes do seem to have a fair bit of similarity and
hence they can be supported using a single scripting framework. Moreover,
attempting to unify them would save some code bloat since a single solution
is always better than two overlapping ones.


> I think there are more interesting opportunities for example to make
> sure that any of the GNOME core applications support full
> gobject-introspection of there plugin API that would bring GNOME much
> more forward.
>
>
You reinforced my point ;-) . Having a proper scripting framework would
avoid having to modify/update each application individually in order to
support any new technology in future. Same goes if for example, as you say,
python bindings become more mature: individual applications would not have
to be updated to add support for this new language.


Regards,
> Johannes
>
> Am Montag, den 05.04.2010, 00:48 +0500 schrieb Shaneeb Kamran:
> > Hey, I am a undergraduate student of Computer Engineering from
> > Pakistan. I am very excited about availing the Summer of Code
> > opportunity to contribute to the GNOME project. The idea I am
> > proposing is a scripting framework for GNOME applications and it is
> > inspired by the Kross scripting framework that is available for KDE
> > apps.
> >
> >
> > The need for scripting support in applications is two-folds. These two
> > different use cases are as follows:
> >
> >
> > 1) Plugins aka User Scripts: Allow third-party developers to enhance
> > or add features to the application
> > 2) Embedding: Make an efficient native-compiled core and use more
> > productive languages to add the front-end on top such as UI, or to
> > glue together different base components to form a complete
> > application.
> >
> >
> > However, at present there are a few problems/limitations associated
> > with such scripting support. Firstly, most applications that currently
> > employ scripting support have limited themselves to one language. This
> > approach has disadvantages in that the users are forced to use that
> > particular language to add their own customizations/enhancement to the
> > application even if its a trivial one. This may discourage the user
> > from writing such an enhancement at all if he is not proficient in the
> > scripting language of the application and has to learn it. Moreover,
> > different languages have different features which are very suitable
> > for a specific problem domain. For example, Perl has good support for
> > text processing, Python makes 'gluing' components together very easy,
> > JavaScript/Lua are lightweight and well suited for embedding uses,
> > etc. Limiting the user to only one language prevents him from using
> > such features which might be available in other languages.
> >
> >
> > Secondly, there is no one common/unified implementation that attempts
> > to cover maximum possible use cases. Most applications that currently
> > employ scripting support have each come up with their own unique
> > solutions e.g. Evolution's EPlugins, GEdit's plugin system, Anjuta
> > plugin framework, etc. Having one common implementation has advantages
> > including code reuse of backend plugins (if a new plugin for a
> > language is written then all applications using the framework will be
> > able to use it), API reuse( that is the application programmer needs
> > to learn only one API in order to add scripting support in multiple
> > applications) and consistent functionality/behavior across
> > appli

Re: GSoC Proposal: Scripting Framework for Applications

2010-04-04 Thread Johannes Schmid
Hi!

Well, we have gobject-introspection and at least Javascript uses it to
be able to connect to any API availabel in GNOME. Python is going to use
it soon. So there is no problem in limiting the developer to a single
language.

And for the plugin framework and don't think it possible/feasible to
unitfy it as "plugins" are different things in different applications.
In gedit plugins enhance the core functionality while for example in
anjuta, the whole application is put together with different plugins as
an architectural choice and you would just see an empty menu bar if no
plugins are loaded. This is simple no "User scripting". I wonder if the
would be a common layer that would work for both extremes and if that
wouldn't impose new implications.

I think there are more interesting opportunities for example to make
sure that any of the GNOME core applications support full
gobject-introspection of there plugin API that would bring GNOME much
more forward.

Regards,
Johannes

Am Montag, den 05.04.2010, 00:48 +0500 schrieb Shaneeb Kamran:
> Hey, I am a undergraduate student of Computer Engineering from
> Pakistan. I am very excited about availing the Summer of Code
> opportunity to contribute to the GNOME project. The idea I am
> proposing is a scripting framework for GNOME applications and it is
> inspired by the Kross scripting framework that is available for KDE
> apps.
> 
> 
> The need for scripting support in applications is two-folds. These two
> different use cases are as follows:
> 
> 
> 1) Plugins aka User Scripts: Allow third-party developers to enhance
> or add features to the application
> 2) Embedding: Make an efficient native-compiled core and use more
> productive languages to add the front-end on top such as UI, or to
> glue together different base components to form a complete
> application. 
> 
> 
> However, at present there are a few problems/limitations associated
> with such scripting support. Firstly, most applications that currently
> employ scripting support have limited themselves to one language. This
> approach has disadvantages in that the users are forced to use that
> particular language to add their own customizations/enhancement to the
> application even if its a trivial one. This may discourage the user
> from writing such an enhancement at all if he is not proficient in the
> scripting language of the application and has to learn it. Moreover,
> different languages have different features which are very suitable
> for a specific problem domain. For example, Perl has good support for
> text processing, Python makes 'gluing' components together very easy,
> JavaScript/Lua are lightweight and well suited for embedding uses,
> etc. Limiting the user to only one language prevents him from using
> such features which might be available in other languages.
> 
> 
> Secondly, there is no one common/unified implementation that attempts
> to cover maximum possible use cases. Most applications that currently
> employ scripting support have each come up with their own unique
> solutions e.g. Evolution's EPlugins, GEdit's plugin system, Anjuta
> plugin framework, etc. Having one common implementation has advantages
> including code reuse of backend plugins (if a new plugin for a
> language is written then all applications using the framework will be
> able to use it), API reuse( that is the application programmer needs
> to learn only one API in order to add scripting support in multiple
> applications) and consistent functionality/behavior across
> applications from the user's point of view (quirks?).
> 
> 
> Hence, the goals of the project are:
> 1) Easy and transparent scripting support for applications
> 2) Isolate the application from the details of interfacing with the
> interpreter
> 3) Language Independent
> 4) Cover maximum possible use cases of scripting
> 5) Code Reuse - Backend language plugins reusable by applications
> 6) Efficient Implementation
> 
> 
> Your criticism, suggestions, opinions... ?
> 
> 
> -- 
> 
> Regards,
> Shaneeb Kamran
> ___
> desktop-devel-list mailing list
> desktop-devel-list@gnome.org
> http://mail.gnome.org/mailman/listinfo/desktop-devel-list



signature.asc
Description: Dies ist ein digital signierter Nachrichtenteil
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

GSoC Proposal: Scripting Framework for Applications

2010-04-04 Thread Shaneeb Kamran
Hey, I am a undergraduate student of Computer Engineering from Pakistan. I
am very excited about availing the Summer of Code opportunity to contribute
to the GNOME project. The idea I am proposing is a scripting framework for
GNOME applications and it is inspired by the Kross scripting framework that
is available for KDE apps.

The need for scripting support in applications is two-folds. These two
different use cases are as follows:

1) Plugins aka User Scripts: Allow third-party developers to enhance or add
features to the application
2) Embedding: Make an efficient native-compiled core and use more productive
languages to add the front-end on top such as UI, or to glue together
different base components to form a complete application.

However, at present there are a few problems/limitations associated with
such scripting support. Firstly, most applications that currently employ
scripting support have limited themselves to one language. This approach has
disadvantages in that the users are forced to use that particular language
to add their own customizations/enhancement to the application even if its a
trivial one. This may discourage the user from writing such an enhancement
at all if he is not proficient in the scripting language of the application
and has to learn it. Moreover, different languages have different features
which are very suitable for a specific problem domain. For example, Perl has
good support for text processing, Python makes 'gluing' components together
very easy, JavaScript/Lua are lightweight and well suited for embedding
uses, etc. Limiting the user to only one language prevents him from using
such features which might be available in other languages.

Secondly, there is no one common/unified implementation that attempts to
cover maximum possible use cases. Most applications that currently employ
scripting support have each come up with their own unique solutions e.g.
Evolution's EPlugins, GEdit's plugin system, Anjuta plugin framework, etc.
Having one common implementation has advantages including code reuse of
backend plugins (if a new plugin for a language is written then all
applications using the framework will be able to use it), API reuse( that is
the application programmer needs to learn only one API in order to add
scripting support in multiple applications) and consistent
functionality/behavior across applications from the user's point of view
(quirks?).

Hence, the goals of the project are:
1) Easy and transparent scripting support for applications
2) Isolate the application from the details of interfacing with the
interpreter
3) Language Independent
4) Cover maximum possible use cases of scripting
5) Code Reuse - Backend language plugins reusable by applications
6) Efficient Implementation

Your criticism, suggestions, opinions... ?

-- 

Regards,
Shaneeb Kamran
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list

GSoC Proposal: Scripting Framework for Applications

2010-04-04 Thread Shaneeb Kamran
Hey, I am a undergraduate student of Computer Engineering from Pakistan. I
am very excited about availing the Summer of Code opportunity to contribute
to the GNOME project. The idea I am proposing is a scripting framework for
GNOME applications and it is inspired by the Kross scripting framework that
is available for KDE apps.

The need for scripting support in applications is two-folds. These two
different use cases are as follows:

1) Plugins aka User Scripts: Allow third-party developers to enhance or add
features to the application
2) Embedding: Make an efficient native-compiled core and use more productive
languages to add the front-end on top such as UI, or to glue together
different base components to form a complete application.

However, at present there are a few problems/limitations associated with
such scripting support. Firstly, most applications that currently employ
scripting support have limited themselves to one language. This approach has
disadvantages in that the users are forced to use that particular language
to add their own customizations/enhancement to the application even if its a
trivial one. This may discourage the user from writing such an enhancement
at all if he is not proficient in the scripting language of the application
and has to learn it. Moreover, different languages have different features
which are very suitable for a specific problem domain. For example, Perl has
good support for text processing, Python makes 'gluing' components together
very easy, JavaScript/Lua are lightweight and well suited for embedding
uses, etc. Limiting the user to only one language prevents him from using
such features which might be available in other languages.

Secondly, there is no one common/unified implementation that attempts to
cover maximum possible use cases. Most applications that currently employ
scripting support have each come up with their own unique solutions e.g.
Evolution's EPlugins, GEdit's plugin system, Anjuta plugin framework, etc.
Having one common implementation has advantages including code reuse of
backend plugins (if a new plugin for a language is written then all
applications using the framework will be able to use it), API reuse( that is
the application programmer needs to learn only one API in order to add
scripting support in multiple applications) and consistent
functionality/behavior across applications from the user's point of view
(quirks?).

Hence, the goals of the project are:
1) Easy and transparent scripting support for applications
2) Isolate the application from the details of interfacing with the
interpreter
3) Language Independent
4) Cover maximum possible use cases of scripting
5) Code Reuse - Backend language plugins reusable by applications
6) Efficient Implementation

Your criticism, suggestions, opinions... ?

-- 

Regards,
Shaneeb Kamran
___
desktop-devel-list mailing list
desktop-devel-list@gnome.org
http://mail.gnome.org/mailman/listinfo/desktop-devel-list