GSoC Proposal: Scripting Framework for Applications

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... ?


Shaneeb Kamran

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