Open main menu

CDOT Wiki β

Changes

Portable DXR

3,124 bytes added, 06:11, 17 April 2009
Development updates
* Commit to lowest file size bandwidth
===About The SourceCode===
* Backend: Perl
* Database: SQLite
* Interface: XUL
 
===Perl Interpreter===
Perl will be needed to create pages from database queries. It needs to be able to run from within the extension on Windows, Linux, and Mac. [http://perldoc.perl.org/perlembed.html Perlembed] allows us to use Perl from C, which means that we could compile our program with headers that will be able to alternate between Windows, Linux, and Mac.
===Web Server===
<pre style="font-family:Verdana,Helvetica,sans-serif;border:1px solid #F4C430;font-weight:bold">We are still researching for a light-weight webserver. This section be updated regularly.</pre>
Our picks (so far):
* [http://shttpd.sourceforge.net/ SHTTPD]
* [http://dclib.sourceforge.net/ dlib C++]
* [https://neuro-tech.net/files/ Cheetah Server]
* [http://www.documentroot.com/code/ppcgid Pure Perl CGId]
* [http://nginx.net/ nginx] ([http://wiki.codemongers.com/NginxEmbeddedPerlExample?highlight=(embed) Embedding example code])
====Mozilla-Central====
[https://developer.mozilla.org/en/mozilla-central Mozilla-Central] is the main repository for Mozilla source code. This is the raw fodder out of which documentation will be created. How it is created doesn't really appear on our diagram unless you count the "How does this happen?" note.  Well, how it happens is through a static analysis tool called [https://developer.mozilla.org/en/Dehydra Dehydra]. In layman's terms, Dehydra reads the Mozilla source code and annotates it in a way that can be turned into documentation in an automated fashion. This part is another project entirely and as it relates to our project, the relevant work is being done by David Humphrey. However, our team will need to setup the Dehyra tool to feed our update server. (More on that in a moment.) David has assured us that this part is not a huge job. It might be useful to sit down with him sometime in the near future and get our own development setup running to play around with and use for research. (David has a setup, but we wouldn't want to muck it up.) For now, let's just take it as read that the Mozilla source code has been processed and fed to the update server.
====Update Server====
Although this project is all about building a tool for browsing documentation off-line, that documentation is in a constant state of flux. It would be useful to be able to refresh it when need be. The update server needn't be terribly complex. A simple Apache server and some cgi CGI work should suffice.  However, it needs to be worked out exactly what kind of update is being pushed. Is it a binary diff of the sqlite database? And if so, will it need to keep a collection of diffs based on a original dataset in order to service users who haven't sync'd for some time. There's also the question of whether the update mechanism build into Mozilla for extensions is useful to us. We need to do some research on how extension updates work.
====Application====
======Extention======
The front-end Portable DXR (our browsable source code documentation) is an applicationthat lives inside our extension. It's The CGI tools exist as part of an embeddable web server. When you remove the DXR part, what you are responsible for communicating left with is the core application platform on which it runs. It's also worth pointing out that the SQLite support is available in two ways. Local storage capabilities using SQLite are build into Mozilla applications and fetching can be accessed by an extension using C++, JavaScript, Python. However, SQLite database files can be accessed by any software that understands the data to format, so SQLite support will also be available through the applicationcgi tools. The DXR application then parses will probably use the CGI tools to access SQLite files if our presentation layer is traditional XHTML. But if we decide to use XUL, we can use the data and populates browser's built in functionality directly from JavaScript. In either case, I suspect we will end up leveraging the built in sqlite support for the UI as neccessaryupdates. But we need to do some research on that.
======DXR======
The core application has presentation. The front-end is mostly implemented by [http://vocamus.net/dave/ David Humphrey] on his [http://zenit.senecac.on.ca/wiki/dxr/ DXR]. We need to modify the UI to implement the following functionalities:* Navigation
* Database querying
* Update services
* Data transaction
 
======UI======
* Navigation
* Tree:
**Source Code
**Documentation '''(Source code documentation)'''
**Help '''(PDXR Documentation)'''
**Options
*** Automatic updates
*** Prompted updates
*** Session saving
 
=Roadmap=
 
* Port [http://zenit.senecac.on.ca/wiki/dxr/ DXR] <small>'''(1 week)'''</small>
 
* Modify UI <small>'''(4 weeks total)'''</small>
** Left panel:
*** Source Code
*** Documentation <small>(Source code documentation) '''(1 week)'''</small>
*** Help <small>(PDXR Documentation) '''(2 weeks)'''</small>
*** Options <small>'''(1 week)'''</small>
**** Automatic updates
**** Prompted updates
**** Session saving
 
* Implement the web server <small>'''(1 week)'''</small>
** Test the web server on the different platforms
 
* Implement the Perl parser <small>'''(1 week)'''</small>
** Test Perl scripts on the different platforms
 
* Code the CGI tools <small>'''(4 weeks)'''</small>
=News & Updates=
 
==Development updates==
Project is on hiatus from Jan 2009. It may restart in May 2009 or September 2009 depending on the schedule of the contributors.
 
==Meetings (Chronological)==
[[Portable_DXR/meeting_103008|Oct 30, 2008]]: Group meeting to map out high level design.
 
[[Portable_DXR/meeting_110508|Nov 5, 2008]]: Team meeting with David Humphrey about progress.
==Team Blogs==
* [http://jamesboston.ca/cms/taxonomy/term/22 James Boston]: All relevant posts are tagged 'pdxr'. * [http://sameropensource.blogspot.com Samer Ziadeh] * [http://www.jerrypau.ca/?cat=3 Jerry Pau]
==IRC==
* [irc://irc.mozilla.org/PDXR #PDXR]* [irc://irc.mozilla.org/seneca #seneca]
==TODO==
* Need to get a perl (and python?) interpreter into the extension or into an installer so it lives locally as well<small>'''(by 27/11/08)''' ([[User:Samer.Ziadeh|Samer Ziadeh]])</small>.** Must work within the extension** It probably doesn't need to be ligthweight.** Needs to work with the extension on Windows, Mac, and Linux * Need to figure out how to mash a web server into an extension. <small>'''(by 27/11/08)''' ([[User:Jtpau|Jerry Pau]])</small>** Which Mashup should we use?*** Consumer Mashups*** Data Mashups*** Business Mashups** Do we make sure the web server is up to date?*** How would we do that?*** Are we going to add options in the setting regarding to the updates?**** Automatically check for updates**** Prompt before download updates**** Prompt before installing updates**** Never ask again
* Someone has to figure out Explain how to mash a web server into an extension.these work: <small>'''(by 27/11/08)''' ([[User:Jamesboston|James Boston]])<br/small>There is research ** Get updates from David's [http://zenit.senecac.on.ca/wiki/dxr/ DXR] or Mozilla-Central.** Push updates to be done there on all the options, compare them (which platform, license, complexity, etc.)extension.
* Have to figure out how to aDesign of the interface of PDXR that will be using [https://developer.mozilla.org/en/Dehydra Dehydra] <small>'''(by 27/11/08) get updates from David's dxr or mozilla-central; b'' ([[User:Jtpau|Jerry Pau]] & [[User:Samer.Ziadeh|Samer Ziadeh]]) push updates to the extension</small>.