From: Taj M. <taj...@us...> - 2004-09-13 21:51:57
|
Update of /cvsroot/davinci/docs In directory sc8-pr-cvs1.sourceforge.net:/tmp/cvs-serv31202 Added Files: MasterPlan.xml Log Message: Converted MasterPlan.lyx to DocBook --- NEW FILE: MasterPlan.xml --- <?xml version="1.0" standalone="no"?> <!DOCTYPE book PUBLIC "-//OASIS//DTD DocBook XML V4.1.2//EN" "dtd/docbookx.dtd"> <book> <title>DaVinci Master Plan</title> <chapter id="ch1"> <title>Abstract</title> <para> This document contains the master plan for DaVinci. It contains all the information you could ever want to know about DaVinci, its technical details, time line, etc. Questions and comments should be directed to our mailing list (<email>dav...@li...</email>), or our propaganda minister (Taj Morton, <email>ta...@wi...</email>). </para> </chapter> <chapter id="ch2"> <title>Introduction to DaVinci</title> <para> DaVinci is a cross-platform development environment for any programming language, but designed for web development. </para> <para> It is licensed under the GNU General Public License. It basically states that the internal source code of a program or must be freely available for everyone to see, allow redistribution of the program or source code for free, and allow others to use the code in other GPL'd (or GPL compatible) projects. All documents created by the DaVinci project will be released under the GNU Free Documentation License. This document allows copying and modification of documentation, similar to the GPL. You can find these documents in the appendix. <emphasis>Plugins for DaVinci be released under the GPL</emphasis>. Please read the GPL FAQ (<ulink url="http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins"> http://www.gnu.org/licenses/gpl-faq.html#GPLAndPlugins</ulink>) for an explanation of why. Is is similar to the Linux kernel, were all modules must be GPL'd. </para> <sect1 id="another-development-environment"> <title>Why another development environment?</title> <para> Why do we need another development environment for programming? Because people need choice. If you look at the current offerings for development environments you will see that yes, there certainly are a lot of them, however, most of them are only for one or two languages (except, of course, in the case of emacs/vi!). Programmers need a familiar environment to work in. For example, when I write code for websites, I use Quanta, when I develop in C, I use emacs, when I write Pascal code, I use Kate. Oh, I switch between them a lot too. </para> <para> <emphasis>However, we are not trying a "Jack of all trades, master of none." development environment.</emphasis> </para> </sect1> </chapter> <chapter id="ch3"> <title>Technical Details</title> <para> Since DaVinci is a complex computer program, we thought that it might be wise to describe how it's written. </para> <para> As stated previously, DaVinci will be written in FreePascal using the Lazarus Component Library (LCL). FreePascal has been ported to many different platforms, including Linux, Windows, BSD, Macintosh (Classic and OS X), and others. The LCL has been ported to GTK1, Win32, and several other toolkits are under the works. GTK2 may be available by version 1.0 of Lazarus. Qt development is also in the works. </para> <sect1 id="plugins"> <title>Plugins</title> <para> Plugins are central to DaVinci. They essentially create it. Without plugins, DaVinci would be little more than a simple window with a useless code editor and menus. Plugins are a dynamically linked shared libraries (called DLLs under windows, shared objects (.so) under Linux. </para> <para> Plugins make function calls to the plugin SDK. The SDK will either be linked into DaVinci or be a shared library. </para> </sect1> <sect1 id="gui"> <title>GUI</title> <para> We will use the Lazarus Component Library for our GUI. The Lazarus project was started to be a free replacement for Delphi. The LCL is a multi-platform/toolkit library for GUI development written in FreePascal. Hopefully it will become more mature and support more toolkits as it progresses. </para> </sect1> <sect1 id="coding-standards"> <title>DaVinci Coding Standards</title> <para> The DaVinci project will follow the Borland coding standards found at <ulink url="http://community.borland.com/soapbox/techvoyage/article/1,1795,10280,00.html"> http://community.borland.com/soapbox/techvoyage/article/1,1795,10280,00.html </ulink> </para> <para> [Fill in details] </para> </sect1> </chapter> <chapter id="ch4"> <title>DaVinci Communication and Website</title> <para> The DaVinci project is hosted at Sourceforge.net, the largest Open Source development website, hosting thousands of Open Source projects. Sourceforge.net provides web hosting, mailing lists, CVS repositories, bug tracking, support requests, hosting of project releases, and more. </para> <sect1 id="mailing-lists"> <title>Mailing Lists</title> <para> The DaVinci team communicates over mailing lists. Read-only archives are available for anyone to read. Mailing lists used by DaVinci include: </para> <itemizedlist> <listitem> <para> <ulink url="http://lists.sourceforge.net/mailman/listinfo/davinci-develop"> davinci-develop</ulink>: For developers of DaVinci, or just keeping up on progress. </para> </listitem> <listitem> <para> <ulink url="http://lists.sourceforge.net/mailman/listinfo/davinci-users"> davinci-users</ulink>: If you are having problems doing something with DaVinci, or just want to help others, then you might want to join this list. </para> </listitem> <listitem> <para> <ulink url="http://lists.sourceforge.net/mailman/listinfo/davinci-announce"> davinci-announce</ulink>: Messages sent to this list are generally just announcents of major happenings about DaVinci, for example new versions and ports. </para> </listitem> <listitem> <para> <ulink url="http://lists.sourceforge.net/mailman/listinfo/davinci-cvs">davinci-cvs</ulink>: Whenever a commit happens to a module in the DaVinci CVS repository, a message is posted to this list. Good for keeping up on progress or seeing if your bug has been fixed. </para> </listitem> </itemizedlist> </sect1> <sect1 id="website"> <title>Website</title> <para> The DaVinci website is located at <ulink url="http://davinci.sourceforge.net">http://davinci.sourceforge.net</ulink>. Watch this site for news and updates about DaVinci. </para> </sect1> <sect1 id="cvs"> <title>CVS</title> <para> You can access the DaVinci CVS repository in several ways. You can browse threw the code online using ViewCVS at <ulink url="http://cvs.sourceforge.net/viewcvs.py/davinci">http://cvs.sourceforge.net/viewcvs.py/davinci</ulink>. Also, you can download the code onto your computer through anonymous CVS. Please note that the ViewCVS code is synced with the development tree every 5 hours. If you don't need the very latest code, then you can download a nightly CVS tarball from <ulink url="http://cvs.sourceforge.net/cvstarballs/davinci-cvsroot.tar.bz2"> http://cvs.sourceforge.net/cvstarballs/davinci-cvsroot.tar.bz2 </ulink> </para> <para> If you want to get the very latest code, then you can use anonymous CVS to download the code from the CVS repository. These servers are also synced with the development tree every 5 hours. To download the davinci code, you can use the cvs program included with most Linux distributions. If you don't have CVS, then you can download it for free from http://www.cvshome.org. Type (no line breaks): </para> <para> <code> cvs -d pserver:ano...@cv...:/cvsroot/davinci login </code> </para> <para> When prompted for a password, press <ENTER>, there is none. </para> <para> Then, type (all one line) You can leave off the -z3 if you have a nice fast connection or a slow processor. The -z option enables compression. Don't use any more than 6 on a public server: </para> <para> <code> cvs -z3 -d:pserver:ano...@cv...:/cvsroot/davinci co <emphasis>modulename</emphasis> </code> </para> <itemizedlist> <listitem><para>davinci</para></listitem> <listitem><para>docs</para></listitem> <listitem><para>plugins</para></listitem> </itemizedlist> <para> davinci holds the core DaVinci code, as well as the plugin SDK. docs holds documentation for DaVinci, including documentation of the plugin SDK. plugins holds various plugins for DaVinci. </para> <para> If you have already downloaded a module, and wish to update it to the latest code, change to that directory (usually the same name as the module), and run: </para> <para> <code>cvs login</code> </para> <para> Press <ENTER> when prompted for a password Then, run: </para> <para> <code>cvs update</code> </para> <para> You do not need to enter the module name or repository because the directory you're in already has all the information CVS needs to download the changes. </para> </sect1> </chapter> <chapter id="ch5"> <title>Gory Technical Details</title> <sect1 id="plugin-implementation"> <title>Plugin Implementation</title> <para> You can see a graphical explanation of the plugin system in DV_PluginSystem.pdf. Basically, they are implemented as dynamic libraries and loaded at runtime. During loading, symbols are resolved (by loading other plugins). If resolving of symbols fails, then the plugin loading fails. It's like modprobe under Linux. (For those of you who don't know, modprobe is used to load drivers and other extra baggage into the Linux kernel at runtime.). </para> <orderedlist> <listitem><para>TPlugin.Create('APlugin') called by DV.</para></listitem> <listitem> <para> TPlugin.Create opens the file and resolves symbols. If symbols are resolved correctly, then the plugin is loaded. Otherwise, plugins are recursively loaded until all symbols have been resolved. In the event that symbols cannot be resolved, loading fails. It also fills TPlugin.Info with data. TPlugin.Start and Tplugin.Stop are set to the correct pointer values (using GetProcAddress). </para> </listitem> <listitem> <para> DV calls TPlugin.Start. From here, the plugin starts taking care of itself. It can now call any functions in the SDK. Common first steps would to call SetupGUI (a function within the plugin that would make calls to the SDK to assemble the GUI). </para> </listitem> <listitem> <para> When DaVinci is begin shut down, it loops through all TPlugins calling TPlugin.Stop. The plugin then takes necessary steps to free memory, destroy GUI, etc. Plugins may also be unloaded at runtime (<emphasis>if they are not used by any other plugin!</emphasis>). </para> </listitem> </orderedlist> </sect1> <sect1 id="toolkits"> <title>Toolkits</title> <itemizedlist> <listitem> <para> Since we are using Lazarus and the LCL, we can switch between any GUI toolkit that we want. However, we will be using the GTK1 toolkit because it it modern, fast, and complete. When the LCL wrappers for GTK2 are released, we will switch to it. Why not Qt? Well, we could start a holy war over this, but the major reasons are: </para> </listitem> <listitem> <para> Qt isn't used by many programs. KDE uses Qt as their base, but has their own set of components (KButton, KEdit, etc). We would have to use the Qt base dialogs for saving, opening, etc (or write our own). Not optimal. Also, Qt is not themed by KDE or GTK and will stick out like a sore thumb on the desktop. </para> </listitem> </itemizedlist> <para> If a wrapper for KDE was written for the LCL, the we would would certainly consider using it. However, at this time, a KDE wrapper doesn't look very promising. Also, since DaVinci is open source, you may choose what ever toolkit you want. </para> <para> Under Windows, the Win32 toolkit will be used. </para> <para> Under Macintosh (classic or OSX), the default toolkit will be used. </para> <para> Lazarus may be ported to other operating systems. The default toolkit will be used on this system as well. </para> </sect1> </chapter> <chapter id="ch6"> <title>Contact Information</title> <itemizedlist> <listitem> <para>Elio Cuevas Gómez</para> <para> Official Title: Programming Guru<sbr/> Email: <email>elcugo at yahoo dot com dot mx</email> </para> </listitem> <listitem> <para>Paul Hampson</para> <para> Official Title: Windows Version Maintainer, Editor, Programmer<sbr/> Email: <email>p dot hampson at dsl dot pipex dot com</email> </para> </listitem> <para> <para>Taj Morton</para> <para> Official Title: Propaganda Minister, Programmer Email: <email>taj at wildgardenseed dot com</email> </para> </para> </itemizedlist> </chapter> <appendix id="revisions"> <title>Revisions</title> <para> 0.5 Converted into DocBook format. Taj Morton <email>ta...@wi...</email> Monday 13 September 2004 </para> <para> 0.4 Typos. Added section on toolkits. Added section on coding standards as well. Taj Morton <email>ta...@wi...</email> Tuesday 13 April 2004. </para> <para> 0.3 Added section on plugin implementation. Created graphical description of plugins as well. Fixed Typos. Proof Read. Taj Morton <email>ta...@wi...</email> Friday 09 April 2004. </para> <para> 0.2 Typos Elio Cuevas Gómez <email>el...@ya...</email> Wednesday 07 April 2004. </para> <para> 0.1 First Draft Taj Morton <email>ta...@wi...</email> Wednesday 07 April 2004. </para> </appendix> </book> |