GSoC 2015 - Writing a JS Plugin Loader

Gary Kramlich grim at reaperworld.com
Mon Mar 9 02:14:51 EDT 2015


On second thought, Lua was the loader that took me a night, not GJS and
Seed...  I don't recall how much time they took, but I still wouldn't say a
summer's worth of work.

Thanks,

--
Gary Kramlich <grim at reaperworld.com>

On Mon, Mar 9, 2015 at 12:34 AM, Gary Kramlich <grim at reaperworld.com> wrote:

> GPlugin has had two javascript loaders that were actually both removed
> recently.  One was using Seed [1] which was removed since they don't allow
> you to properly subclass objects.  The other was gjs [2], or GNOME
> JavaScript, which was removed recently because they moved from the
> SpiderMonkey C bindings to the C++ bindings and I didn't see a quick
> solution to making it work.
>
> That said, writing a single loader for GPlugin is actually pretty simple
> if there is an existing gobject-introspection library for the language
> you're trying to bind to.  For example, I wrote both the Seed and GJS
> loaders in one night a piece.  Hardly enough work to be considered a full
> blown Summer of Code project.
>
> When it comes to JavaScript, there's so many different ways it could be
> done, which makes it far more complicated than it should be.  Which is
> exactly why GNOME itself has two JavaScript bindings; Seed and GJS.  What I
> really mean is, which JavaScript engine to support, how to handle packages,
> etc.
>
> In the case of JavaScript engines, SpiderMonkey (Mozilla's) was working
> just fine in GJS until GJS switched what bindings they were using.  I
> realized after I removed it from the GPlugin tree, that I could probably
> rewrite the GJS loader in C++ and call it a day.  However, I don't have any
> C++ bindings for GPlugin and last I checked GTKmm was still using custom
> bindings and not gobject-introspection.  So that might be a bit more
> difficult that it should be.
>
> Seed uses the WebKit JavaScript engine (not v8, that's specific to Chrome,
> Chromium, NodeJS, and Opera), but as noted earlier it's limitations make it
> only usable for the most simplest of cases.  As far as I know, there are no
> gobject-introspection bindings for any of the other JavaScript engines.
> Also, last time I checked NodeJS is not capable of being embedded which
> removes it from the list of possibilities as well.
>
> Long story short, it would be great to have JavaScript support for GPlugin
> and thus Pidgin, however, the current state of gobject-introspection in
> regards to JavaScript is terrible at best.
>
> [1]
> https://wiki.gnome.org/action/show/Projects/Seed?action=show&redirect=Seed
> [2]
> https://wiki.gnome.org/action/show/Projects/Gjs?action=show&redirect=Gjs
>
> Thanks,
>
> --
> Gary Kramlich <grim at reaperworld.com>
>
>
> On Sun, Mar 8, 2015 at 6:04 PM, Alangi Derick <alangiderick at gmail.com>
> wrote:
>
>> Hello,
>>      My name is Alangi Derick, i am from Africa and precisely Cameroon. I
>> went through the idea list for Pidgin and i saw an interesting project i
>> want work on. I am a web developer with very good knowledge in JavaScript,
>> so i would like to contribute to this organisation by writing a JS plugin
>> loader.
>>      My idea is improving on GPlugin by writing a JS plugin loader for
>> them in which Pidgin will now integrate GPlugin into their software. I
>> don't know if this is a good idea but that is the approach i want to use.
>> So i will like suggestions and comment on whether to continue with this
>> idea or change to something else.
>>     I wish to do this project as my GSoC project 2015, i am available in
>> the channel and my irc nick is: d3r1ck and waiting for suggestions. Thanks
>>
>> Regards
>> Alangi Derick Ndimnain
>>
>> _______________________________________________
>> Devel mailing list
>> Devel at pidgin.im
>> https://pidgin.im/cgi-bin/mailman/listinfo/devel
>>
>
>
>
> --
> Thanks,
>
> --
> Gary Kramlich <grim at reaperworld.com>
>



-- 
Thanks,

--
Gary Kramlich <grim at reaperworld.com>
-------------- next part --------------
An HTML attachment was scrubbed...
URL: <https://pidgin.im/pipermail/devel/attachments/20150309/4b84c10a/attachment.html>


More information about the Devel mailing list