| <!DOCTYPE html PUBLIC "-//W3C//DTD HTML 4.01 Transitional//EN"> |
| <html> |
| <head> |
| <meta content="text/html; charset=ISO-8859-1" http-equiv="content-type"> |
| <meta content="text/css" http-equiv="Content-Style-Type"> |
| <style type="text/css">@import url("/css/dba.css");</style> |
| <style type="text/css">.effort_header { font-weight:bold; }</style> |
| <title>Developer projects</title> |
| <script type="text/javascript" src="/js/dba_default.js"></script> |
| </head> |
| <body> |
| <b>Project Sections</b>: |
| <a href="../index.html">Home</a> |
| | <a href="../specifications/index.html">Specifications</a> |
| | <a href="../QA/index.html">QA</a> |
| | <a href="./index.html"><b>Development</b></a> |
| | <a href="../drivers/index.html">Database Drivers</a><br/> |
| <b>Development Sections</b>: |
| <a href="../development/projects.html"><b>Developer Projects</b></a> |
| | <a href="./project_structure.html">Project Structure</a> |
| <hr/> |
| <div class="dba"> |
| <h1 id="dba_dev_projects">Developer Projects</h1> |
| <p>Below is a list of projects which could be implemented by interested developers. |
| Most of these projects are relatively self-contained, and do not require too much knowledge |
| about OOo's code infrastructure.</p> |
| <p>Note that this list doesn't claim to be a complete repository of what will be |
| done in the near/medium future. There may be items on the list which will never |
| be realized, and there definitely are items which are not on the list, but will |
| be implemented.</p> |
| <p>If you are interested in anything from the list, please speak at |
| <a href="mailto:dev@dba.openoffice.org">dev@dba.openoffice.org</a>. We'll gladly |
| help you to get started on this.</p> |
| |
| <p>Also, make sure you don't miss <a href="http://development.openoffice.org/todo.html">OpenOffice.org's global TODO list</a>, |
| which also contains interesting projects for developers.</p> |
| |
| <p>Here is what you'll find below: |
| <ol> |
| <li> |
| <a href="#dbase_joins">Joins in dBase queries</a></li> |
| <li> |
| <a href="#ldap">SDBC driver for LDAP directories</a></li> |
| <li> |
| <a href="#form_controls">New/Enhanced Form Controls</a></li> |
| <li> |
| <a href="#form_dialogs">Dialogs with Form Functionality</a></li> |
| <li> |
| <a href="#driver_modules">Database driver UI modularization</a></li> |
| <li> |
| <a href="#single_file_backend">HSQLDB: single-file backend</a></li> |
| <li> |
| <a href="#embed_derby">Embed Derby into OpenOffice.org databases</a></li> |
| <li> |
| <a href="#cross_access">native, cross-platform access to MS Access databases</a></li> |
| <li> |
| <a href="#vcards">SDBC driver for vCards</a></li> |
| <li> |
| <a href="#new_filter">New Filter Dialog</a></li> |
| </ol></p> |
| |
| <h3>General Notes</h3> |
| <p>Whenever we talk about user interface work, this implies working with VCL, the |
| Visual Class Library in OpenOffice.org. If you are not familiar with it, you |
| will curse it, since especially some of the older parts never heard the word |
| "documentation". On the other hand: In opposite to the native platform |
| controls, everything is there as source code, so if you like "learning by |
| debugging", you will love VCL |
| <img src="../images/smile.gif" alt="smile" style="width: 19px; height: 19px;" class="vertically_centerred"/>.</p> |
| |
| <p>Additionally, be aware of the fact that feature implementations in |
| OpenOffice.org require a specification (you may visit |
| <a href="http://specs.openoffice.org">the specifications project</a> for more |
| information). There's a rule that nothing is checked into the master branch |
| which doesn't have a specification which all stakeholders agreed upon - so |
| unlike other open source projects you may know, the specification really is |
| an important part. Stakeholders are: the documentation team, the user experience |
| team, the quality assurance team, and development. Usually, one representative |
| from every team needs to accept your specification.</p> |
| |
| <p>Well, don't let this hinder you in starting. Just be aware that there will be a |
| time when a specification is finally needed. Most developers don't like writing such documents |
| (and some people even claim that <a href="http://www.joelonsoftware.com/articles/fog0000000034.html">they shouldn't</a>). |
| Thus, you need to clarify who will take this for you, if you can't/don't want.</p> |
| |
| <p>A note about the effort: This is a rather rough guess at the moment. In |
| general, it may be a good idea to add two or more weeks or so simply for |
| becoming familiar with the code and some concepts, so if it is "2 weeks", don't |
| expect to start today and finish it in 14 days ...</p> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- ====================== --> |
| <!-- Joins in dBase queries --> |
| <h3><a name="dbase_joins"></a>Joins in dBase queries</h3> |
| |
| <p>The descirption of this project has been moved to |
| <a href="http://wiki.services.openoffice.org/wiki/Base_To-Do/Joins_in_dBase_queries" target="_blank">our |
| Wiki</a>.</p> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- ================================ --> |
| <!-- SDBC driver for LDAP directories --> |
| <h3><a name="ldap"></a>SDBC driver for LDAP directories</h3> |
| <p>The description of this project has been moved to |
| <a href="http://wiki.services.openoffice.org/wiki/Base_To-Do/SDBC_driver_for_LDAP_directories" target="_blank">our |
| Wiki</a>.</p> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- ========================== --> |
| <!-- New/Enhanced Form Controls --> |
| <h3><a name="form_controls"></a>New/Enhanced Form Controls</h3> |
| <p>The description of this project has been moved to |
| <a href="http://wiki.services.openoffice.org/wiki/Base_To-Do/New+Enhanced_Form_Controls" target="_blank">our |
| Wiki</a>.</p> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- =============================== --> |
| <!-- Dialogs with Form Functionality --> |
| <h3><a name="form_dialogs"></a>Dialogs with Form Functionality</h3> |
| <h4>description</h4> |
| <p>When creating a form, the user always needs to bother with a Writer (or Calc or |
| Draw) document. Very often, this is much too oversized. It would be sufficient |
| to have a simple dialog which contains all the data access controls. Now that |
| we have UNO-based dialogs (in the Basic IDE), this is possible in general, as |
| there already are some basics for doing this. There still would be a lot of |
| work to be done (not mentioning the concrete design), but since some months, |
| it's at least possible.</p> |
| |
| <p>The advantage would be to not slay the user with things she does not bother |
| – a writer document offers a lot of possibilities which are not relevant |
| for a form. In some cases, a full writer document does even contradict to what |
| users expect from a form – one thing to mention here is that documents |
| are always freely sizable (and even do autosizing according to the previous |
| instance of the same document type, the screen resolution, whatever), which is |
| nothing you expect from a carefully designed form, where controls are placed at |
| concrete positions and have a fixed size.</p> |
| |
| <table style="text-align: left;" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="effort_header" width="200px">required skills</td> |
| <td> |
| <ul> |
| <li>C++</li> |
| <li>UNO</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">useful skills</td> |
| <td> |
| <ul> |
| <li>familiarity with OOo's database access and form API</li> |
| <li>familiarity with OOo's toolkit API (module com.sun.star.awt)</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">estimated effort</td> |
| <td>3 months</td> |
| </tr> |
| <tr> |
| <td class="effort_header">difficulty</td> |
| <td>high</td> |
| </tr> |
| </tbody> |
| </table> |
| <br/> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- =============================== --> |
| <!-- Database driver UI modularization --> |
| <h3><a name="driver_modules"></a>Database driver UI modularization</h3> |
| <h4>description</h4> |
| |
| <p>OpenOffice.org Base follows a component-oriented approach for enabling |
| database access. For this, database drivers are installed in |
| OpenOffice.org which provide access to a certain (class of) database(s).</p> |
| |
| <p>While at the driver level, the implementation is pretty good |
| modularized, the UI implementation can be improved. Currently, there are |
| a lot of places in the code with hard-coded information, such as |
| "database X requires UI option Y".</p> |
| |
| <p>The goal of this project is to design and implement a reasonable |
| architecture for bringing a driver to the UI. The existing |
| implementation needs to be migrated to this new architecture. As a proof |
| of concept, an existing currently-external driver (e.g. the |
| <a href="http://dba.openoffice.org/drivers/postgresql/index.html" title="http://dba.openoffice.org/drivers/postgresql/index.html">native PostgreSQL driver</a>) |
| should be modified so that it can be deployed into an OOo installation and makes |
| use of the features of the new architecture.</p> |
| |
| <table style="text-align: left;" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="effort_header" width="200px">required skills</td> |
| <td> |
| <ul> |
| <li>C++</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">useful skills</td> |
| <td> |
| <ul> |
| <li>OOo's component technology (UNO)</li> |
| <li>OOo's configuration concepts</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">estimated effort</td> |
| <td>2 months</td> |
| </tr> |
| <tr> |
| <td class="effort_header">difficulty</td> |
| <td>high</td> |
| </tr> |
| </tbody> |
| </table> |
| <br/> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- =============================== --> |
| <!-- HSQLDB: single-file backend --> |
| <h3><a name="single_file_backend"></a>HSQLDB: single-file backend</h3> |
| <h4>description</h4> |
| |
| <p><a href="http:///hsqldb.org" title="http:///hsqldb.org">HSQLDB</a> is the default database |
| engine used by OpenOffice.org Base.</p> |
| |
| <p>HSQLDB currently creates a number of adjacent files to store its data, |
| where all files together comprise the whole database. To allow the user |
| of OpenOffice.org Base to have a "all-in-one-file" database experience, |
| those HSQL files are currently embedded in some OOo-specific |
| container-file (the .odb file).</p> |
| |
| <p>To overcome various disadvantages of this approach, it is desirable that |
| HSQL stores its data in a single, large file. Preliminary code and |
| concepts exist for this, but no final implementation.</p> |
| |
| <p><i>The following project description was provided by Fred Toussi, HSQLDB project owner:</i> |
| |
| <p>Currently, HSQLDB stores the database information in four separate files. These files are |
| written to using different API�s. Streams are used for some while random access is used for others.</p> |
| |
| <p>The project�s aim is to allow a single file to be used for all permanent data (temporary session |
| data, or file locking may still use a separate file). So existing files that need to be integrated |
| into one are the .properties, .log, .data and .backup files. The new single file will be accessed |
| only as a random access file.</p> |
| |
| <p>The project consists of developing an interface between existing code. At the low level, there is |
| already an implementation of a random access file, org.hsqldb.persist.ScaledRAFile. The new interfaces |
| will allow existing file services to use the single random access file.</p> |
| |
| <p>All the files in the org.hsqldb.persist package should be studied, with the understanding that the |
| functionality of many of these files, including lock and property saving functionality, will become |
| redundant with the introduction of single file persistence.</p> |
| |
| <p>The student is expected to study and become proficient in the Java IO packages and the API calls to |
| these packages currently made from HSQLDB, and write the code and test packages.</p> |
| |
| <p>The mentor will provide regular guidance and help on the design of required interfaces and supervise |
| their implementation.</p> |
| |
| <p>As this is considered an essential development for HSQLDB, all the work done by the student will be |
| used, and if necessary, modified or improved by other project developers. The student will get due credit |
| and will be provided with work references by the HSQLDB Project Maintainer upon successful completion of |
| the project.</p> |
| |
| <table style="text-align: left;" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="effort_header" width="200px">required skills</td> |
| <td> |
| <ul> |
| <li>Java expertise</li> |
| <li>relational databases</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">useful skills</td> |
| <td> |
| <ul> |
| <li>HSQLDB architecture</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">estimated effort</td> |
| <td>2 months</td> |
| </tr> |
| <tr> |
| <td class="effort_header">difficulty</td> |
| <td>high</td> |
| </tr> |
| </tbody> |
| </table> |
| <br/> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- =============================== --> |
| <!-- Embed Derby into OpenOffice.org databases --> |
| <h3><a name="embed_derby"></a>Embed Derby into OpenOffice.org databases</h3> |
| |
| <p>The descirption of this project has been moved to |
| <a href="http://wiki.services.openoffice.org/wiki/Base_To-Do#Embed_Derby_into_OpenOffice.org_databases" target="_blank">our |
| Wiki</a>.</p> |
| <p> See also some <a href="http://openoffice.markmail.org/thread/6l27fyv7vpjwogsg">old information </a>on this topic from the dba@dev.openoffice.org archives. </p> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- ==================================================== --> |
| <!-- Native, cross-platform access to MS Access databases --> |
| <h3><a name="cross_access"></a>Native, cross-platform access to MS Access |
| databases</h3> |
| <h4>description</h4> |
| <p><em>preliminary note</em>: In the meantime, there is an alpha version of a driver for this. |
| It's an OOo database driver which uses <a href="http://mdbtools.sourceforge.net">MDB Tools</a> to |
| read MS Access databases. See <a href="../drivers/mdb/index.html">it's home page</a> for more info.</p> |
| |
| <p>A major goal of OpenOffice.org is interoperability with other office |
| applications, especially with a certain office suite which currently has some greater market share than |
| OpenOffice.org has :).</p> |
| |
| <p>Unfortunately, currently OOo users, as long as they don't work on Windows, are not able <em>at all</em> |
| to access the databases of this office suite - we cannot read MDB files on platforms other than Windows |
| (where we can use Microsofts own API).</p> |
| |
| <p>So the goal here is to allow Linux users to at least read the data from MDB files, using OOo.</p> |
| |
| <p>There are several ways how this could be done.<br/> |
| One is to use MDB Tools, and wrap them in OOo. Since the SQL capabilities of the MDB Tools parser are |
| limited (e.g., no OR conditions in WHERE clauses are allowed), this requires work in either MDB Tools |
| itself (by improving their parser), or it would be used as provider for raw data, and OOo would faciliate |
| it's own parser/query engine (which unfortunately is also limited) to process this data.<br/> |
| Another current disadvantage of MDB Tools is that it doesn't handle UTF8, and since jet4 databases |
| stored their data in UTF8, this implies that it cannot be used for jet4 databases containing non-ASCII |
| characters (well, probably a little bit more that ASCII, but it's a serious limitation for an product as |
| international as OpenOffice.org).</p> |
| |
| <p>Another way would be to re-engineer the MDB format ourself, and write a native SDBC driver (which could |
| be in C++ or probably even in Java) which provides the data. This is similar to the first approach, where |
| MDB Tools would have been used as the provider of raw data.</p> |
| |
| <table style="text-align: left;" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="effort_header" width="200px">required skills</td> |
| <td> |
| <ul> |
| <li>C++</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">useful skills</td> |
| <td> |
| <ul> |
| <li>familiarity with OOo's database access API</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">estimated effort</td> |
| <td>2 months</td> |
| </tr> |
| <tr> |
| <td class="effort_header">difficulty</td> |
| <td>medium</td> |
| </tr> |
| </tbody> |
| </table> |
| <br/> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- ====================== --> |
| <!-- SDBC driver for vCards --> |
| <h3><a name="vcards"></a>SDBC driver for vCards</h3> |
| <h4>description</h4> |
| |
| <p>OpenOffice.org has it's own open database access API called <a href="http://api.openoffice.org/docs/common/ref/com/sun/star/sdbc/module-ix.html">SDBC</a> |
| which is modeled on the architecture of <a href="http://java.sun.com/j2se/1.5.0/docs/api/java/sql/package-summary.html">Java's |
| JDBC</a>. SDBC supports several databases and |
| database-like API's via an extensible provider architecture; ODBC 3.0, JDBC, |
| ADO, dBase and CSV are among the databases and database management systems |
| currently supported. Each SDBC provider is implemented as a UNO component.</p> |
| |
| <p>It could be useful to have a dedicated driver for accessing vCards. |
| There is an infrastructure in the existing SDBC implementations for file-based |
| databases, which could be relatively easily specialized for vCard access. This would |
| broaden the range of address book data which can be used in OpenOffice.org.</p> |
| |
| <table style="text-align: left;" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="effort_header" width="200px">required skills</td> |
| <td> |
| <ul> |
| <li>C++</li> |
| <li>familiarity with UNO</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">useful skills</td> |
| <td> |
| <ul> |
| <li>familiarity with OOo's database access API</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">estimated effort</td> |
| <td>2 weeks</td> |
| </tr> |
| <tr> |
| <td class="effort_header">difficulty</td> |
| <td>medium</td> |
| </tr> |
| </tbody> |
| </table> |
| <br/> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| <!-- ================= --> |
| <!-- New Filter Dialog --> |
| <h3><a name="new_filter"></a>New Filter Dialog</h3> |
| <h4>description</h4> |
| <p>Similar to the Sort Dialog, there is a dialog which allows to filter queries |
| and tables – it can be reached the same way as the sort dialog, by using |
| the "Default Filter..." button in the toolbox of the data source browser.</p> |
| <p>This dialog suffers from some disadvantages: |
| <ul> |
| <li> |
| it's not dynamic, three filter criterions are the maximum</li> |
| <li> |
| The dialog does not really clearly distinguish between ORing and ANDing |
| filters. Though there the user can make a choice for AND or OR, it's not clear |
| what is the result if these are |
| <span style="font-style: italic;">mixed</span>. This UI is simply not |
| intuitive.<br/> |
| </li> |
| </ul> |
| This dialog should be re-implemented, so that it's functionality is extended |
| and it's more intuitive. Design (before implementation) is an important part of |
| this project.</p> |
| <p>One other place where a similar functionality is available is the |
| <span style="font-style: italic;">filter navigator</span> |
| in the |
| <span style="font-style: italic;">form based filter</span>.</p> |
| <p>This will show the so-called filter navigator, which uses a tree view to |
| represent the currently used filter for the form. It has other disadvantages |
| <ul> |
| <li> |
| it's impossible to add a filter with two AND criterions for the same column, |
| such as "name LIKE '%Foo%" and "name LIKE '%Bar%'".</li> |
| <li> |
| it's not intuitive, too (well, this is personal taste :)</li> |
| <li> |
| some functionality cannot be accessed from within the navigator, but only by |
| entering text in the form fields (for instance, try creating a new filter in a |
| form which previously does not have any filter<br/> |
| </li> |
| </ul></p> |
| <p>If the interface of the new implementation of the filter control in the new |
| filter dialog is abstract enough, then on the long term we can use it for the |
| filter navigator, too. This would require some discipline in designing the |
| classes for the new implementations, and some abstraction capabilities. |
| However, this is not the primary goal of this implementation.</p> |
| |
| <table style="text-align: left;" cellspacing="0"> |
| <tbody> |
| <tr> |
| <td class="effort_header" width="200px">required skills</td> |
| <td> |
| <ul> |
| <li>C++</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">useful skills</td> |
| <td> |
| <ul> |
| <li>familiarity with VCL (OpenOffice.org's visual toolkit)</li> |
| </ul> |
| </td> |
| </tr> |
| <tr> |
| <td class="effort_header">estimated effort</td> |
| <td>1 month for an experienced developer</td> |
| </tr> |
| <tr> |
| <td class="effort_header">difficulty</td> |
| <td>medium - high</td> |
| </tr> |
| </tbody> |
| </table> |
| |
| <hr style="width: 100%; height: 2px;"> |
| |
| </div> |
| </body> |
| </html> |