Thursday, February 28, 2002

Genoa--GEN GEN is an application-generator that greatly simplifies the task of creating analysis tools for the C language. Analysis tools are specified in a high-level domain-specific language (DSL) that is designed to facilitate the task of specifying C analysis tools.
GEN is based on Cfront, the original C to C language translator developed by Bjarne Stroustrup, and GENOA, a language-independent parse-tree querying framework. It was originally developed at AT&T Bell Laboratories (now Lucent Technologies/Bell Laboratories) by Prem Devanbu (now at University of California, Davis) and Laura Eaves. Thanks to Lucent Technologies/Bell Labs innovations, it is now available for free download.
(Aria is a research prototype created by Prem Devanbu, David Rosenblum and Alex Wolf; the GEN tool has similar features. )
Several tools have been created with GEN , and come with the package; these can both be used directly, and as a springboard for other applications:

Purpose The purpose of this paper is to take a publicly available application which is well-used, develop a conceptual architecture based on its documentation and source code, and finally to produce the concrete architecture using CIA and identify any discrepancies

PBS: Portable Bookshelf PBS: The Portable Bookshelf - Introduction
The Software Bookshelf is a web-based paradigm for the presentation and navigation of information representing large software systems. The Portable Bookshelf (PBS) is one implementation of this concept. The PBS Toolkit is our set of tools for the generation of a PBS Bookshelf.

CIAO CIAO is a graph-based navigator that allows users to query and browse structural connections embedded in different software and document repositories. The architecture of CIAO enables the construction of successively more complex operators using a notion of virtual database pipelines. Currently, CIAO runs on SGI, Sun4, HP, and Solaris machines.

Project Home Page ArgoUML: A modelling tool for design using UML.

extende > faq eXtenDE initially started out life as an extensible development environment.
The first step is to decide how to best represent Java source code using XML. There are currently two schools of thought on this matter, JavaML and Eric Armstrong's (a development member of eXtenDE) proposal. Both were developed seperately, so they have much different goals, initially. Please see the Mailing List Archive for this lengthy discussion as it is currently unresolved.
The next step, once this decision has been made, is to write an editor, debugger, repository, etc. that can be plugged into a variety of existing IDE systems (Netbeans, jBuilder, jEdit, VisualAge, etc.).

JavaML Home Page (Greg J. Badros) The classical plain-text representation of source code is convenient for programmers but requires parsing to uncover the deep structure of the program. While sophisticated software tools parse source code to gain access to the program's structure, many lightweight programming aids such as grep rely instead on only the lexical structure of source code. I describe a new XML application that provides an alternative representation of Java source code. This XML-based representation, called JavaML, is more natural for tools and permits easy specification of numerous software-engineering analyses by leveraging the abundance of XML tools and techniques. A robust converter built with the Jikes Java compiler framework translates from the classical Java source code representation to JavaML, and an XSLT stylesheet converts from JavaML back into the classical textual form.

IST - GUPRO - Generische Umgebung zum PROgrammverstehen GUPRO ist ein gemeinsames Projekt mit der Aachener und Münchener Informatik-Service GmbH, Hamburg, und dem IBM Wissenschaftlichen Zentrum, Heidelberg. Es wird gefördert durch das Bundesministeriums für Bildung, Wissenschaft, Forschung und Technologie (BMBF), Förderprogramm Softwaretechnologien, Förderkennzahl 01 IS 504.

I have published this to the gcc mailling list
James Michael DuPont - Linkage of GPLed GCC to Closed Source via XML or Perl Dear GCC Developers,

For the past three years, I have been working on a
project to create a object oriented interface to the
GCC compiler, the GCC Node Introspector
(http://introspector.sourceforge.net/).

This turned from a c into a Perl project after
realising the power of Perl for handling strings and
complex data structures.
Currently I am using a modified version of c-dump.c
like done in CPPX
(http://swag.uwaterloo.ca/~cppx/doc/cppx/arch.html). I
output the tree nodes into a XML form that is very
similar to the tree dump, just with xml syntax. This
is streamed into a Perl program via popen and written
to a Postgres database.

Here is an article that I wrote for
PERLMONKS Article

For the past three years, I have been working on a project
to create a object oriented interface to the GCC compiler, the GCC Node Introspector.


This turned into a perl project after realising the power of perl for handling strings and complex data structures. Also the number of tools that link into perl are amazing.


This linking of programs can to GPL code can be very tricky, and full of problems as a detailed review of the GPL and LGPL can point out.


In this meditation, I will point out what I see as some bumpy spots for Perl and GPL, and clauses that might have been overlooked for too long.



Let us review the the GPL and its implications for linking to Perl :


GPL



This General Public License does not permit
incorporating your program into
proprietary programs.


If your program is a subroutine
library, you may
consider it more useful to permit linking proprietary
applications with the
library.

If this is what you want to do, use the GNU
Library General
Public License instead of this License.




GPL Comment


incorporating is a term that implies
to me containment,


If I write a proprietary program that uses the output of the GPL Code is that containment?



If I open the a pipe to another program, and call
functions in it using data from a GPL program, is
that not what a linker does, but via a different
method?



Lets look at the LGPL 2.1



We use this license for certain libraries in
order to permit linking those
libraries into non-free programs.


When a program is linked with a library, whether
statically or using
a shared library, the combination of the two is
legally speaking a combined work, a derivative of the original library.


The ordinary General Public License therefore permits such linking only if the entire combination fits its criteria of freedom.

The Lesser General Public License permits more lax criteria for linking other code with the library.



LGPL Comment


Now this does not cover linking via RPC/IPC or Shared
Memory or File.

Let alone CORBA or XML-RPC/SOAP.


This comes done to the definition of linking,
is linking only with the linker, or is linking a
method of passing data between function calls?


Can I call a GPLed Function in GIMP via a perl script
webpage, but I cannot link to it?



LGPL part 2



14. If you wish to incorporate parts of the Library
into other free
programs whose distribution conditions are
incompatible with these
,
write to the author to ask for permission. For
software which is
copyrighted by the Free Software Foundation, write to
the Free
Software Foundation; we sometimes make exceptions for
this. Our
decision will be guided by the two goals of preserving
the free status
of all derivatives of our free software and of
promoting the sharing
and reuse of software generally.


LGPL Comment part 2


distribution conditions are
incompatible with these
Does that cover PAL which gives you more freedom. Can I link via perl and all of a sudden, there is no more GPL?



By these terms, every perl script which links in with
GPLed GIMP via script would require such permission to
be asked.

The perl script is called from an apache server, goes across all types of close-source maybe even patented
software sitting on routers and switches, and then
gets displayed in a microsoft browser, only to call a
javascript function that uses the microsoft api to
draw on some graphic card.


As you can see, the network has changed the meaning of
linking.