|
|
(46 intermediate revisions by 29 users not shown) |
Line 1: |
Line 1: |
| <table style="float: right; border: 1px solid #999;">
| | {{RELEASE_MANAGEMENT_OBSOLETE}} |
| <tr><td>
| |
| * [[XUL:Home Page]]
| |
| {{XUL:XUL_Runner_TOC}} | |
| </table>
| |
|
| |
|
| These pages on wiki.mozilla.org are about XULRunner development and planning. If you want more information about developing or using XULRunner-based applications, visit the [http://developer.mozilla.org/en/docs/XULRunner Mozilla Developer Center]. | | These pages on wiki.mozilla.org are about XULRunner development and planning. If you want more information about developing or using XULRunner-based applications, visit the [[MDN:XULRunner|Mozilla Developer Network]], which includes documentation on building, running, and deploying XULRunner. |
|
| |
|
| = XULRunner Overview =
| | * [[XULRunner:Roadmap|XULRunner Roadmap]] |
|
| |
|
| XULRunner is a single "gecko runtime"
| | == TODOs == |
| installable package that can be used to bootstrap multiple XUL+XPCOM
| |
| applications that are as rich as Firefox and Thunderbird. It will provide mechanisms for installing, upgrading, and uninstalling these applications. XULRunner will also provide libXUL, an embedding framework which provides an embedding mechanism suitable for each platform.
| |
|
| |
|
| XULRunner is not an appropriate solution for small devices which cannot take the full memory or download weight of the XULRunner featureset. XULRunner must remain a relatively lightweight runtime. At the present time XULRunner applications are not expected to be forwards-compatible, and should be marked as compatible with a specific XULRunner version. | | A core requirement of XULRunner is the elimination of any app-specific |
| | <code>#ifdef</code>s. It does us no good if portions of the toolkit are |
| | <code>#ifdef MOZ_PHOENIX</code> or <code>#ifdef MOZ_THUNDERBIRD</code>. See the [http://developer.mozilla.org/docs/When_To_Use_ifdefs ifdef Manifesto]. |
|
| |
|
| A [http://benjamin.smedbergs.us/blog/2005-07-11/xulrunner-short-term-and-mid-term-roadmap/ tentative XULRunner roadmap] can be found on the weblog of lead developer [http://benjamin.smedbergs.us/ Benjamin Smedberg].
| | The build system must be extended so that it is possible to build XULRunner in one objdir and applications in separate objdirs, propagating compiler feature tests from configure tests and keeping makefile configurations separate. See [[XULRunner:Build System Rework]]. |
|
| |
|
| = The XULRunner Runtime = | | == The XUL Development Kit == |
| | |
| XULRunner should contain most of the common functionality expected by developers of rich internet applications. XULRunner will include:
| |
| | |
| * [[XPCOM]]
| |
| * Networking
| |
| * Gecko rendering engine
| |
| * core DOM editing and transaction support (no UI)
| |
| * Cryptography
| |
| * XUL language support, with its related XBL/RDF technologies and widgets useful for application development
| |
| * [[SVG]] (when ready)
| |
| * [[XSLT]]
| |
| * XML Extras
| |
| * Web Services
| |
| * Extension Manager
| |
| * Auto-update support
| |
| * typeahead-find toolbar
| |
| * history implementation
| |
| * accessibility support
| |
| * APIs and user interface for installing, uninstalling, and upgrading XUL applications. See the [[XUL:Installation Story]].
| |
| * IPC services for communication between gecko-based apps
| |
| * RDF APIs
| |
| * docshell/window-targeting implementation (needs specification by bz!)
| |
| | |
| XULRunner will supply the following user interface elements, which may be overridden by embedders:
| |
| | |
| * File picker (will use native OS filepicker as appropriate)
| |
| * Find toolbar
| |
| * Helper app dialog/UI
| |
| * Security UI (maintenance of SSL keychains, etc)
| |
| | |
| XULRunner will not supply:
| |
| * Bookmarks
| |
| * More here!...
| |
| * [[XForms]] (xforms will be available as an extension)
| |
| | |
| XULRunner might include:
| |
| * LDAP support
| |
| * Spellchecking support (with or without dictionaries provided) see [https://bugzilla.mozilla.org/show_bug.cgi?id=285977 bug 285977]
| |
| * Core support for profile roaming (with application-specific extensibility)
| |
| | |
| | |
| Also, a core requirement of XULRunner is the elimination of any app-specific
| |
| <code>#ifdef</code>'s. It does us no good if portions of the toolkit are
| |
| <code>#ifdef MOZ_PHOENIX</code>. See [https://bugzilla.mozilla.org/show_bug.cgi?id=285789 bug 285789] and the [http://developer.mozilla.org/docs/When_To_Use_ifdefs Ifdef Manifesto].
| |
| | |
| = The XUL Development Kit = | |
|
| |
|
| In addition to the XULRunner runtime, the XULRunner build process will produce a Development Kit which contains tools for building XUL applications and extensions. As a first goal, these tools will provide: | | In addition to the XULRunner runtime, the XULRunner build process will produce a Development Kit which contains tools for building XUL applications and extensions. As a first goal, these tools will provide: |
Line 72: |
Line 22: |
|
| |
|
| * A reference tool which will contain quick reference information for web and XUL development with links to the full reference information from developer.mozilla.org. | | * A reference tool which will contain quick reference information for web and XUL development with links to the full reference information from developer.mozilla.org. |
|
| |
| = Technical Details =
| |
|
| |
| == How do I build it? ==
| |
|
| |
| Building XULRunner is a lot like [http://www.mozilla.org/build/ building any other Mozilla application].
| |
| Start by pulling <code>client.mk</code> from CVS:
| |
|
| |
| <pre>
| |
| $ cvs co mozilla/client.mk
| |
| </pre>
| |
|
| |
| Setup a <code>mozconfig</code> file. Here's what mine looks like:
| |
| <pre>
| |
| $ cat $MOZCONFIG
| |
| export MOZILLA_OFFICIAL=1
| |
| mk_add_options MOZILLA_OFFICIAL=1
| |
| ac_add_options --enable-application=xulrunner
| |
| </pre>
| |
|
| |
| If you want to build debug, then include these options:
| |
|
| |
| <pre>
| |
| ac_add_options --enable-debug
| |
| ac_add_options --disable-optimize
| |
| </pre>
| |
|
| |
| If you are building on Linux, then you'll probably want to add these
| |
| options as well:
| |
| <pre>
| |
| ac_add_options --enable-default-toolkit=gtk2
| |
| ac_add_options --enable-xft
| |
| ac_add_options --disable-freetype2
| |
| </pre>
| |
|
| |
| If you are building on Mac OS X 10.2, libxul will not link correctly. Use the --disable-libxul configure flag, or upgrade to Mac OS X 10.3. See [https://bugzilla.mozilla.org/show_bug.cgi?id=288370 Bug 288370] for further discussion.
| |
|
| |
|
| After you have built XULRunner, try running the sample XULRunner application: | | After you have built XULRunner, try running the sample XULRunner application: |
Line 116: |
Line 30: |
| </pre> | | </pre> |
|
| |
|
| Not much to see, I know. But, take a look at the contents of the <code>apps/simple</code> | | Not much to see, I know. But, take a look at the contents of the <code>xpi-stage/simple</code> |
| directory. Pretty simple (for a Mozilla-based app), wouldn't you say? Check out [http://lxr.mozilla.org/mozilla/source/xulrunner/examples/simple/application.ini application.ini] | | directory. Pretty simple (for a Mozilla-based app), wouldn't you say? (cough) Check out [http://lxr.mozilla.org/mozilla/source/xulrunner/examples/simple/application.ini application.ini]. See [http://developer.mozilla.org/en/docs/XUL_Application_Packaging XUL Application Packaging] for documentation on application.ini. |
| | |
| == Pre-Built Binaries ==
| |
| | |
| Nightly Win32 and Linux builds can be found at [http://ftp.mozilla.org/pub/mozilla.org/xulrunner/nightly/ Mozilla's ftp server].
| |
| | |
| Unix/Linux builds can be found at [http://xulfr.org/download/XulRunner/ Xulfr.org]. There is also a shell script to automate builds directly from Mozilla's CVS.
| |
|
| |
|
| == User Profiles == | | == User Profiles == |
Line 154: |
Line 62: |
| participate in profile sharing. The goal here is to allow applications | | participate in profile sharing. The goal here is to allow applications |
| to share data that is common to the web platform such as SSL certificate, | | to share data that is common to the web platform such as SSL certificate, |
| cookies, and the web cache. (See also: [[Mozilla2:Profile_Sharing]].) | | cookies, and the web cache. (See also: [[Mozilla2:Profile Sharing]].) |
|
| |
|
| == Versioning == | | == Versioning == |
Line 174: |
Line 82: |
| application that does not pass the version test. | | application that does not pass the version test. |
|
| |
|
| Some relatively old notes: [[XUL:Xul_Runner_Versioning]] | | Some relatively old notes: [[XUL:Xul Runner Versioning]] |
| | |
| = Automating Builds =
| |
| [http://tinderbox.mozilla.org/showbuilds.cgi?tree=XULRunner Current XULRunner build status]
| |
| | |
| '''TODO'''
| |
| * Allocate and configure build system resources
| |
| ** win32: testing configuration on sweetlou
| |
| ** linux: ?
| |
| * Run automated builds
| |
| * Package results
| |
| * Publish to FTP site
| |
| | |
| = What needs to be done? =
| |
| | |
| [https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Toolkit&component=XULRunner&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&resolution=---&emailassigned_to1=1&emailtype1=exact&email1=&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailtype2=exact&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= XULRunner bugs]
| |
| | |
| TODO: turn this into a bug list
| |
| | |
| <ul>
| |
| | |
| <li>
| |
| <b>TODO -- Verify UA string</b>.
| |
| Need to make sure that there is a clear distinction
| |
| between the application's <code>{name, buildID, version}</code> info
| |
| and the corresponding info for XULRunner itself. For
| |
| example, the UA string still needs to be generated properly.
| |
|
| |
|
| <li>
| | == Buglist == |
| <b>TODO</b>
| |
| Static references to the application name may be an issue.
| |
| For example, <code>mozilla.in</code> needs to know the vendor name and
| |
| application name in order to locate the profile-relative
| |
| <code>init.d</code> directory. These strings can't be
| |
| statically defined anymore. ''Do we really care that much about <code>init.d</code>
| |
| stuff? The init.d stuff is currently not supported.''
| |
|
| |
|
| <li> DONE (except for xremote)
| | See also: [[XULRunner:Faq]] |
| [[XUL:Command_Line_Handling]] : better (generic) command-line handling APIs | |
|
| |
|
| <li>
| | *[https://bugzilla.mozilla.org/buglist.cgi?query_format=advanced&short_desc_type=allwordssubstr&short_desc=&product=Toolkit&component=XULRunner&long_desc_type=substring&long_desc=&bug_file_loc_type=allwordssubstr&bug_file_loc=&status_whiteboard_type=allwordssubstr&status_whiteboard=&keywords_type=allwords&keywords=&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&resolution=---&emailassigned_to1=1&emailtype1=exact&email1=&emailassigned_to2=1&emailreporter2=1&emailqa_contact2=1&emailtype2=exact&email2=&bugidtype=include&bug_id=&votes=&chfieldfrom=&chfieldto=Now&chfieldvalue=&cmdtype=doit&order=Reuse+same+sort+as+last+time&field0-0-0=noop&type0-0-0=noop&value0-0-0= XULRunner bugs] |
| <b>TODO -- Verify</b>.
| |
| Need to make sure Xremote and Win32 DDE works properly.
| |
| By default, <code>-remote</code> should confine itself to
| |
| talking to the same application type. See [https://bugzilla.mozilla.org/show_bug.cgi?id=280725 bug 280725].
| |
|
| |
|
| <li>
| | *'''TODO -- Verify UA string'''<br />Need to make sure that there is a clear distinction between the application's <code>{name, buildID, version}</code> info and the corresponding info for XULRunner itself. For example, the UA string still needs to be generated properly. |
| <b>TODO</b>
| |
| Need to support application icons. Ben Goodger has some | |
| ideas on this one. There are really two parts to this task:
| |
| (1) under platforms that support it, it should be easy to
| |
| associate an icon with the launcher for a XUL app, and (2)
| |
| we should support window icons located outside the
| |
| <code>chrome/icons/default/</code> directory. | |
| <ul>
| |
| <li>WorldMaker: In Windows icons for (say) .xulapp could be handled via a simple shell extension. [http://www.codeproject.com/shell/shellextguide9.asp An ATL example] </li>
| |
| </ul>
| |
|
| |
|
| <li>
| | *'''TODO'''<br />Need to support application icons. The best way to do this is have the app author provide a suite of PNGs in various sizes, and then convert these to the native OS format (.ico, .icns, .xbm) at app-install time. See [https://bugzilla.mozilla.org/show_bug.cgi?id=314651 bug 314651] and [https://bugzilla.mozilla.org/show_bug.cgi?id=314030 bug 314030] |
| <b>TODO</b>
| |
| Need a fully app-independent toolkit. At the moment there are still a lot of places with #ifdef MOZ_PHOENIX or #if MOZ_THUNDERBIRD, which really [https://bugzilla.mozilla.org/show_bug.cgi?id=270235 hinders] app development for other toolkit apps. There are also some files (see bug [https://bugzilla.mozilla.org/show_bug.cgi?id=250868 250868], bug [https://bugzilla.mozilla.org/show_bug.cgi?id=250793 250793] and bug [https://bugzilla.mozilla.org/show_bug.cgi?id=250867 250867]), which are essentially the same for all toolkit apps, but have to be carried in every app-package, making bug-fixing and maintenance a real nightmare. | |
|
| |
|
| <li>
| | *WorldMaker: In Windows icons for (say) .xulapp could be handled via a simple shell extension. [http://www.codeproject.com/shell/shellextguide9.asp An ATL example] |
| <b>TODO</b>
| |
| Make it so that zero setup is required for app developers that want to
| |
| play with XUL. (Suggestion from nrm).</li>
| |
|
| |
|
| <li>
| | *Make it possible to run xulrunner + app from read only media (CDs). Would be great for demoing webapps with webservice support etc. Needs investigation, probably something that needs extensive volunteer help. |
| Make it possible to run xulrunner + app from read only media (CD's). Would be great for demoing webapps with webservice support etc.</li> | |
|
| |
|
| </ul>
| | [[category:XULRunner|*]] |