Newer Older
Naba Kumar's avatar
Naba Kumar committed
This document is the roadmap for future development of anjuta.

Naba Kumar's avatar
Naba Kumar committed
5 6 7 8 9
The goal of Anjuta DevStudio is to provide a truely customizable and
extensible IDE framework and at the same time provide the basic implementations
of common development tools. libanjuta is the framework that realizes the
Anjuta IDE plugin framework and Anjuta DevStudio realizes many of the common
development plugins.

11 12
Anjuta 2.x (trunk):
Naba Kumar's avatar
Naba Kumar committed
13 14 15 16 17 18 19 20 21
Anjuta 2.x development series has new extensible plugin architecture and all
the plugins have been ported to this new plateform. The libanjuta interface
defines all the IDE APIs and is used to write anjuta plugins. In addition, it
also provides many utility classes.

Following are the major milestones that we will attempt to reach by the
estimated dates given. There will be smaller releases in-between, mainly
stablization and bugfix releases.

Milestone 2.2.0 - (Estimated release time Apr 2007):
Naba Kumar's avatar
Naba Kumar committed
- Complete libanjuta API definition and documentation
- Partial user documentation
Naba Kumar's avatar
Naba Kumar committed
- Fix GDL to restore widgets dock locations correctly.
- Complete glade plugin integration
Naba Kumar's avatar
Naba Kumar committed
27 28
- Bug fixing and stable release.

29 30 31 32 33
Optional other stuff
- ants project management backend for gnome-build
- ants build system plugin.
- online anjuta plugin installer
- Better support for other languages (Java, Python, Ruby, C#)
Naba Kumar's avatar
Naba Kumar committed
34 35
- More plugins.

Naba Kumar's avatar
Naba Kumar committed
36 37 38 39 40 41 42 43 44 45 46 47
Given below are some major tasks that no one has yet considered doing. If you
are interested in having these done, you will get our blessings :-). You will
also get our full support while taking up these projects. Please subscribe
to our development mailing list if you want to discuss these further.

Some helpful links that will give initial guide are:
- API docs:

gtranslator plugin for Anjuta:
Naba Kumar's avatar
Naba Kumar committed
Naba Kumar's avatar
Naba Kumar committed
gtranslator is a software used by translators to edit and update .po files,
Naba Kumar's avatar
Naba Kumar committed
50 51 52 53
which are localization files in a project. This plugin will be responsible
for integrating gTranslator in Anjuta DevStudio. The implementation will
closely follow the way we have integrated DevHelp in Anjuta.

Naba Kumar's avatar
Naba Kumar committed
The first task involves collaborating with gtranslator developers to have
55 56 57 58 59 60
gTranslator in form of a library that will provide all the neccessary widgets
to be embeded in Anjuta. The approach would be to segregate all UI (menus and
toolbars) controls from the main engine. The main engine (library) should
contain only the main widgets and API for their interaction with the UI and
themsleves. gTranslator executable will itself use this library and implement
the UIs within.
Naba Kumar's avatar
Naba Kumar committed
61 62 63 64 65

Once that has been done and neccessary library interface has been created
in gTranslator, we can move ahead with creating the actual Anjuta plugin. If
gTranslator library creation is done properly, the Anjuta plugin should
not involve much work, because the only thing that matters at this point is
Naba Kumar's avatar
Naba Kumar committed
to wrap the library with our own UI and embed the widgets in Anjuta Shell.
Naba Kumar's avatar
Naba Kumar committed
67 68 69
Much of this can be easily understood from existing plugins (e.g. devhelp

Naba Kumar's avatar
Naba Kumar committed
70 71 72
- gtranslator:

73 74 75 76 77 78 79 80 81
conglomerate integration
conglomerate is a nice application for editing xml files, such as docbook
articles and book. In anjuta, it will be particularly helpful to write
software documentations. Integrating it will pretty much follow the same
approach as with devhelp and gtranslator.


Naba Kumar's avatar
Naba Kumar committed
83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101
Users manual, tutorials and FAQ update:
This is a non-technical work, but is an extremely important part of Anjuta
project. We used to have a very handy users documentation in
Anjuta 1.x series, but they are no longer useful for Anjuta 2.x series.
The task envolve getting familiar with Anjuta 2.x operation and updating the
existing documents. The documents are written in docbook sgml format. So,
in addition to being able to write good english and having some basic
programming/development skills, one must also be familiar with writing sgml
documents. Screenshots should be taken with default GNOME theme with shadow
drops. Uneccessary screenshots that could be effectively explained in text
should be avoided as much as possible.

For compiling FAQ (frequently asked questions), one needs to research Anjuta
mailing lists, bugzilla discussions and forums to identify repeated questions
and answers that would qualify for FAQ.

Glade3 Integration:
102 103
We already have glade3 integration in anjuta working.
The improvements involve interfacing it with anjuta glade plugin for
Naba Kumar's avatar
Naba Kumar committed
104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122
signals navigation, stubs creations and project files negotiations.

Signals navigation" means when user selects a signal in glade properties editor,
Anjuta automatically brings up the implementation of that signal in its editor.
This can be accomplished with SymbolBrowser plugin in anjuta, that keeps tab
on all symbol updates in the project. Using the signal handler signature,
Anjuta glade plugin can take help of symbol-browser plugin to find the location
of function definitions in the project.

"Stubs creation" means when the user adds new signals, Anjuta glade plugin
automatically creates the stub for the signal handler using gtk signal
introspection. The signal prototype can be identified with the introspection.
Where and how the stubs are added in project is a matter of dissussion.

"Project files negotiation" means when user adds file via glade (e.g. images
in dialogs), glade will notify anjuta to add the file in project and give
a change to relocate it within the project. Anjuta needs to handle this
request and add the files in project (possibly prompting user for relocation).
Anjuta also needs to make sure glade is able to find them later.
Naba Kumar's avatar
Naba Kumar committed
123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141

- Glade3:

Implement preferences as interface:
Currently all plugins register their preferences at activate time. This has
the obvious performance issue of unneccessarily overloading plugin activation
It can stack up significantly when lots of plugins are activated simultaneously.
We want to get rid of this and only construct the preferences pages at
request time.

Define a IAnjutaPreferences interface with construct() method (in addition
to other related methods) in it. Then implement this interface in all plugins
having preferences. Initialize the plugin preferences in construct method,
instead of what currently is been done in activate_plugin(). Then when user
activates Settings->Preferences, find all "loaded" plugins that implement
IAnjutaPreferences and call construct() on them. Display the newly constructed
preferences dialog. Destroy the preferences dialog when it is closed.