Sunday, June 3, 2007

Semantic-aware software component provisioning: status report

Recap: This project aims to ease component provisioning by the use of Semantic Web technologies, providing a model - an OWL ontology - of the software component domain, supporting inference and reasoning about components' metadata and allowing developers to import metadata from a number of existing provisioning systems.

During last week I had a couple of interesting chats with my mentor, Philippe Ombredanne, and with Pascal Rapicault as well, discussing some issues about the repository design and positioning in relation to existing component provisioning systems.

I'll briefly report what emerged from our conversations:
  • model and metadata should be general, higher-level respect to the particular provisioning system. Each of existing systems focus on a particular aspect of component modeling, yet the metadata share much the same semantics so, as already hypotized in the previous status report, what we should aim to is providing a general metadata set, to map in turn the particular system metadata set. Some license-related issues about existing ontologies to reuse are being addressed during these days.
  • an interesting idea (borrowed from the Equinox provisioning effort, thanks Pascal) which relates much to the previous point is to enable the repository to plug-in modules to integrate other provisioning systems' metadata repository, relieving the burden of writing over and over the same set of metadata. I'd start with OSGi and Maven repo modules.
  • very interesting stuff @ easyeclipse about license-related properties of a sw component could be reused and/or wrapped (thanks Philippe ;) ).
  • on the technology side we will rely upon a set of REST APIs, a servlet container and a SPARQL query engine (Joseki, very probably) to retrieve rdf metadata and carry out the inference process. This should be quite scalable, and simple enough to get the repo up and running as soon as possible. I am thinking about the RESTlet framework (just checked licensing issues, it looks ok), but if somebody has got better suggestions, please let me hear about.
I started designing the repository and refining the use case model, planning to have CRUD features available in the very next weeks. Architectural views coming soon to a blog near you.

That's all folks, eager to get some feedback,
cheers,
Savino Sguera

Friday, June 1, 2007

I've integrated a "grammar to Ecore-model" converter plugin to Gymnast. Interestingly, there's more than source code :) a chapter describing it along with some further pointers can be found in the (draft) progress report of my Google SoC project.

Have a nice weekend,

Miguel Garcia
http://www.sts.tu-harburg.de/~mi.garcia/

Monday, May 14, 2007

Status: Improving Eclipse Search


Official name: Eclipse search plugin: providing a better, faster, more relevant Eclipse search

May 15th


Training


I'm currently implementing an Eclipse plugin (about AJAX development – currently dealing mostly with manipulating/listening DOM document and nodes in embedded SWT.Mozilla browser – trying to implement a WYSIWYG HTML document designer) as a project at school so I had (and continue having) experience with Eclipse plugin development process with our project team at school. I've read a number of chapters from the book “Eclipse: Building Commercial-Quality Plug-ins” and I'm still reading.


After our initial discussions with Francois, this was a list of ideas about usability from Francois to familiarize myself with source code related with search features of Eclipse.


A few ideas for search usability
1) improve Ctrl-J search:
- Ctrl-J : have Ctrl-V paste the current ring in it
- Ctrl-J : if there's a selection, have a second Ctrl-J take this selection as search string
- Ctrl-J followed by Ctl-R would switch to regex search
- Ctrl-J to global search: transform a Ctrl-J to to a global search actually, drive all searches from the keyboard incremental search would be good: there should be a set of keyboard shortcuts on Ctrl-J to set up a complete search, and then execute it globally.
2) Display search results. the view that displays the search results is very poor currently. Probably a tree view is not perfect. It should show the matches, for example. It should have more shortcuts...
3) improve the search dialog. More TBD
4) real search/replace:
- search and replace in multiple files (all files/subset of files)
- selective (based on language elements...)


I had time to checkout and browse source codes in Eclipse CVS, find out which component does what and how it does that. However, I didn't have time to grasp the whole picture.


Problems/ Possible Enhancements to Address


Here is a list of issues from my little research in Eclipse Bugzilla about possible enhancements/problems to address:

1. find/replace search should have a tick-box for "ignore comments" (enhancement request)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=161398

2. Show as package tree
https://bugs.eclipse.org/bugs/show_bug.cgi?id=160481 (enhancement request)

3. Store Previous Searches for Startup (enhancement request)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=169252

4. Search dialog "Java Search" Scope should include Hierarchy (WONTFIX bug)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=110252

5. New text search shown line not a great help (LATER)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=127672
(This bug is waiting for applying styles on a tree item.)

6. Result in Table (LATER)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=129185

These two are related:
7. Search shows duplicate results in nested projects (LATER)
https://bugs.eclipse.org/bugs/show_bug.cgi?id=144959

8. Resource exclusion filters
https://bugs.eclipse.org/bugs/show_bug.cgi?id=84988
(read together with: https://bugs.eclipse.org/bugs/show_bug.cgi?id=144959 - about duplicate results for nested folder structures)

9. Search Enhancements
https://bugs.eclipse.org/bugs/show_bug.cgi?id=108223

10. Search in files: see matched lines
https://bugs.eclipse.org/bugs/show_bug.cgi?id=72575


Francois investigated the list and commented on it and it seems to me that I can make use of / address many issues in this list, either directly or indirectly.


Thoughts about the Main Part ( Lucene, OpenGrok etc. )


I tried to keep myself focused on research at the beginning so I read about both Lucene and OpenGrok. I understood how OpenGrok achieved to be a great tool for source code browsing and cross-referencing. Since it makes use of Lucene, either way (if I use OpenGrok or not) Lucene is a building block of this project. I've read a few articles and browsed a few presentations about Lucene and I'm still trying to learn more about it.


I've been consistently asking questions to myself about index sizes and frequent updates to the index. As a basic solution, I thought of keeping a partitioned index ( e.g. A project having an index that is distributed to multiple Lucene indexes and these index files being accessed/changed when it's necessary. Shortly, we may call this partitioning the index file. ).


This absolutely has a tradeoff because of the cost of not using one index for the whole project. But, when a good number of partitions is selected, I think that the tradeoff will seem small. (I thought of computing the ideal number in the future, like the computation of ideal bucket size in file processing literature.)


I thought of this “partitioning” method because an Eclipse user can get very aggressive when we tell him that we can “linearize” the time to search his files but in order to do this, he has to keep like ~ 50 MB for the index in RAM. ( I've tried indexing different things and I think that this value is a good estimate for large projects. And by the way, a possible question is why do I have to keep things in RAM and do not write things to disc. One answer: dynamic nature of source codes and frequent updates. )


Partitioning approach gives us one advantage: we only have to index a part of the project when you are working on a set of files. Since the number of active editors is considerably less than the actual project size, it is an idea that can work. And since we can keep a relatively small index in RAM, indexes containing your active file set can be updated fast.


However, I still see other tradeoffs in this approach and it is just a start. By the way, I'm trying not to focus on algorithm-wise enhancements for now and I don't plan to implement this idea in my prototypes during the early days of coding. I plan to start coding by addressing usability enhancements first.


I think early search plugin prototypes will makes use of RAM – HDD data transition features of Lucene and just write the index to a file on the disc after a certain threshold.


Todo List for Rest of the Interim Period


Well, I didn't have time to update the Wiki page of my project but I'll do it in 1-2 days.

Second thing that I feel I have to do before interim period ends is implementing little usability ideas from the list of Francois.


That's all for now.

If you have related ideas please feel free to send an e-mail. I'll be really glad to hear ideas about usability issues or Lucene / OpenGrok etc.

Status,Integate and Connect your Clients

Hi, all:
My project "Integate and Connect your Clients" is focused on building a platform to support mail client, Calendar and TaskList ,mentored by Wayne Beaton.

And I have done the following things:

1. Read related docs my mentors gave.

2. Looked into "Mail content","Mail attachment" and such problems.

3. Study sample codes,discuss with my mentor with the model design and function design.

Next i will try to add some new trial code to sample code.

Feel free to comment :)

Sunday, May 13, 2007

Status, NetBeans in Eclipse

Hi all,

My Project goals are to provide a minimal NetBeans environment within Eclipse as Eclipse plugins and support running NetBeans plugins like Matisse. My mentor is Philippe Ombredanne. During the last 3-4 weeks I didn’t have much time for GSOC07 but I have done some work:

  • I have contacted my mentor and we discussed the project goals. As first step I will implement a simple Netbeans’ plugin(an simple Editor) and try to find what is needed to run this plugin within Eclipse.
  • I updated the wiki page of my Project.
  • I started to read the documentation of NetBeans.
  • I started to code the simple NetBeans’ plugin.

I will have much time for GSoC07 after 26st of May.

Criticism, suggestions and questions are welcome ;).

Saturday, May 12, 2007

What's about this multi-monitor stuff?

Maybe you heard about this project yet - maybe not. The official name of my (Benjamin Muskalla) this years Google Summer of Code project: Improve the multi-monitor support in Eclipse. I have to say that the name maybe a bit delusive because all of the features are also available for single-user desktops. For example what I've implemented so far: Fullscreen mode for RCP applications. This is all about the native support of SWT to provide an option to set a shell into fullscreen mode (native or emulated) and use this to rearrange the layout of the product itself. As you can see if you try out the patches in the CVS repository, you can switch your Eclipse IDE to a fullscreen mode where Eclipse has the whole available space on your monitor, hides it's own toolbar/menubar and statusbar to give you as much space as possible to write code.
As I've only limited platform possibilities, there are only patches for Windows, Windows Vista and Linux GTK available yet - hopefully I can provide some more in the future. Additionally I put together a workbench handler to easily switch to the fullscreen mode (see screenshot). It would be really great to get some feedback from the community to improve the current work. One item I had a hot discussion with my mentor (Kim Horne) if we should provide an option to let the user configure their own fullscreen settings in the Workbench preferences. This way, the user could choose what to show in fullscreen mode: Toolbar on/off, Menubar on/off, etc...

Hope to post some exiting news in the next weeks about other interesting parts of the project like "Detached Views 2.0"!

So long I wish you a nice weekend :)

status, Semantic-aware software component provisioning

As of April, 11th, I've been mainly assessing code reuse scenarios, both for the ontology modeling and the repository design tasks; I've been working on the domain model, analyzing Maven repository's tag cloud, and getting a grasp on the OSGi specification as well.

A good axiomatization of the software component domain is given here @ cos.ontoware.com, and I think augmenting such ontologies would be nice for the project. They provide a quite granular description of a software component and library, which will support future development of the project, pushing formal description of software components down to interface- and method-level. I believe some sort of integration with TagSEA (or other efforts in the code annotation area) is possible and promising for the future.

I also discussed with my mentor some issues about OSGi, Maven and other provisioning systems seamless integration in the framework-to-be, since they share most of metadata and semantics about components: it would be nice to have a core set of shared essential metadata.

I am currenty thinking - and discussing with my mentor - about the chance of extending an existing OSGi Bundle Repository implementation, to add the needed semantic services, avoiding to design the repository from scratch (thanks lemmy). The repository could be deployed as a bundle itself. However, this requires me some time to be assessed more thoroughly.

Repository coding will start thru next weeks, as soon as I decide existing components' and technologies' integration, analyze use cases and define a strategic architecture to rely upon.

I keep updating my project's wiki quite frequently; I just added identified use cases, outlines and specifications will follow asap.

Feedback, criticism and suggestions are welcome ;) .