[Opengc-devel] opengc "toolkit" proposal
Status: Pre-Alpha
Brought to you by:
madmartigan
From: Damion S. <be...@cs...> - 2003-10-01 20:57:05
|
Hi folks, I've been doing some thinking over the past few days about how to address the future of OpenGC (both in terms of where it's going in functionality and development). I think I'll throw the following out as a straw man proposal to get feedback on. To summarize, since the following may be a bit long-winded: OpenGC will be rewritten into a form of which I am the sole author (or have express written permission to include the code of others), after which it will be released as open source under a license modeled after the VTK license. 1) I will completely rewrite OpenGC based in part on my source code from pre Dec. 2001 (the date of the first CVS contributions of others), in part on modern source code about which there is no dispute regarding sole authorship (the font manager, X-Plane data source, the NEW nav database, etc.), and in part on a new design I've been working on based on the ITK and VTK toolkits, http://www.itk.org and http://www.vtk.org respectively. 2) Under this new design, the appobject would disappear completely, as would the gauge and gaugecomponent classes (to be replaced by a more general widget class). Objects would also be reference counted, using smart pointers, to avoid memory leaks. The eventual goal would be to provide something along the lines of VTK; i.e., a finished "application" as such is not provided, but the tools to rapidly produce one are. Example applications would of course be included, but more full-featured applications (with advanced mouse interaction for instance) would be left as an exercise for the reader. Under this model, an application main() might look something like: main() { ogcRenderer* pRen = ogcRenderer::New(); ogcDataSource* pDataSource = ogcFSUIPCDataSource::New(); ogc777PFD* pPFD = ogc777PFD::New(); pPFD->SetDataSource(pDataSource); pRen->AddWidget(pPFD); } The above code may look a bit odd to those of you not familiar with VTK, but is intended to show the basic steps involved in creating a simple one-gauge display that drives a 777 PFD from FSUIPC. The _major_ advantages of switching OpenGC to this modular approach are: A) It becomes possible to use the CABLE tool ( http://www.itk.org/HTML/CableSwig.html ) to generate wrappings in other languages. Prefer to code your GUI in Java or Tcl? No problem. This would address the common question of "can I use OpenGC in language X". B) OpenGC is not tied into a particular application framework. As it stands, OpenGC doesn't really exist without AppObject and main.cpp - it would be nice if this weren't true. 3) This code would be distributed under a modified form of the Kitware license/VTK toolkit copyright. This is an extremely open license (do whatever you want), with one exception: the version of _contributed_ code placed in the repository becomes copyrighted solely by myself. All users and developers still retain full rights to use and redistribute the code, with or without modifications, with or without included source. I've talked to Kitware in the past, and they have adopted this license purely to avoid copyright dispute regarding the code INSIDE the repository; as the license states, users are still free to do WHATEVER THEY WANT with the code. Please take a look at the license here: http://www.vtk.org/copyright.php This is likely to be the portion of this proposal that creates the most angst among others, so feedback is encouraged. Please keep in mind that this license has worked extremely well for Kitware; VTK has something on the order of 2000 active developers. The copyright clause does not mean that you're giving up copyright to code you've written; you're free to publish another version elsewhere copyrighted solely by yourself. 4) As I produce a "sanitized" version of OpenGC, it will posted for everyone to see. I do not want to be accused of using code which someone else may legitimately have a claim to, so the entire revision process will be conducted in the open. After it has been established that I am the sole author of version "X" of OpenGC, it will again be opened up for public contributions under the new license terms. 5) Code for which permission cannot be obtained for inclusion in OpenGC mark II will have to be removed from the repository. I will try and work with the FlightGear folks to produce a non-GPL'd version of the FlightGear data source. All of the data sources will be changing dramatically, both in function and variable names. The current version is very poorly designed, by my own admission, and does not allow any form of bi-directional communication. Given how well things have worked out for the Kitware folks and the users of VTK (of which I am one) I think this is probably the best direction in which to proceed. I realize that this will effectively halt new development of OpenGC for 4-6 weeks during the rewrite, but I'd rather get this sorted out sooner rather than later. The current version of OpenGC, as licensed under the GPL, will continue to be available for download even after the new version is released. Feedback is encouraged... Cheers, -Damion- --------- Damion Shelton The Open Source Glass Cockpit Project (OpenGC) Carnegie Mellon University, Robotics Institute http://www.opengc.org da...@op... |