Core

From MozillaWiki
Jump to: navigation, search

Core refers to the shared components used by Firefox and other Mozilla software, including handling of Web content (Gecko, HTML, CSS, layout, scripts, images, networking, and so on.)

Here is the List of Core modules with their owners and peers.

Core components in Bugzilla don't always map exactly to the way that core module ownership is organized. They can be hard to triage accurately.


Components in Core

Build Config: For core build config issues

Canvas: 2D: Bugs with the HTML5 <canvas> element, its XUL sibling, and related rendering contexts.

Canvas: WebGL: Bugs with the WebGL Canvas Context.

CSS Parsing and Computation: Bugs in the handling of CSS stylesheets and the computation of style from CSS stylesheets and HTML attributes.

For bugs in the rendering, see the Layout components.

Disability Access APIs: Description: This component relates to bugs in our support for accessibility APIs on the various platforms. Accessibility APIs allow 3rd party products, such as screen readers used by visually impaired users, to communicate with our content and UI. The APIs we support specifically are MSAA on Windows and ATK on UNIX/Linux (Apple has not yet published specs for an accessibility API on OS X). This component is not for keyboard, focus or any accessibility bugs other than those relating to the APIs we export.

DMD: Issues relating to DMD (dark matter detector), the tool for verifying memory reporters.

Document Navigation: Docshell acts as the glue that initiates and monitors document loading and associates documents to their view for rendering. Previously called Webshell.

DOM: For bugs in DOM support which do not fit into any other DOM Component. This is the right component for issues with <base href=""> and xml:base.

DOM: Apps: Bugs related to Gecko's navigator.mozApps DOM API

DOM: Core & HTML: This component includes all functionality related to JavaScript manipulation of window, document and navigator objects that are available in Navigator 4.x and earlier, and that was never defined by the W3C.

DOM: CSS Object Model: For bugs in our DOM Style support.

Examples of appropriate bugs: document.styleSheets doesn't hold missing file:// stylesheets; crash setting element.style.color to 'red'.

This is not the place for most style bugs unless they involve scripting. See the Style System and Layout components.

DOM: Device Interfaces: This component covers WebAPIs exposing device interfaces for communication, networking, multimedia, etc.

DOM: Events: For bugs in our DOM Events support. This component deals with event bubbling, event handling, and interfaces such as UIEvent.

Examples of appropriate bugs: cannot cancel 'submit' event; crash when handling a DOMNodeInserted event after inserting a node into anonymous content.

DOM: IndexedDB: This component covers the IndexedDB implementation in Gecko.

DOM: Workers: This component covers the Web Workers implementation in Gecko.

Drag and Drop: Description: Problems with drag and drop functionality anywhere in the applications.

Editor: For bugs in Mozilla's embeddable editor. If you're encountering a bug with text or rich text editing elsewhere within Gecko-based products, such as within Mail/News, the Location bar, or a dialog box, file it here.

Examples of appropriate bugs: After inserting a image, selecting Undo crashes Composer; After deleting a word, the caret disappears.

Embedding: APIs: The embedding API is the set of functions that an external application uses to host an instance of the layout engine within itself. The embedded layout engine provides services for rendering web content (HTML, XML, CSS, etc).

Embedding: GRE Core: Gecko Runtime Environment is the minimum set of files which are required for running applications written to embed the Gecko browsing engine. It contains the core xpcom libraries, nspr library, a set of key XPCOM components and other supporting files.

Embedding: Mac: Covers issues and bugs specific to embedding in Mac Carbon or Cocoa applications.

Embedding: MFC Embed: For problems with the mfcEmbed application or the mfcEmbed components

Embedding: Packaging: This module is comprised of the makefiles and scripts in embedding/config which are used to build the dist/Embed package. Several embedding applications are built from the contents of dist/Embed as well as the packaged version of MfcEmbed.

Event Handling: Any strangeness with keyboard typing, mouse actions, focus changes.

File Handling: For issues dealing with helper applications, and guessing Content Types when they aren't specified/known (ftp:, file:, jar:, but generally not http:). This component does not cover: backend networking issues, such as those covered by

Networking: FTP or Networking: File, nor does it cover the Download Manager which has its own component in Toolkit.

Find Backend: Component description needed.

Gecko Profiler: The backend to the built-in profiler which can be used in order to get profiling information from within Gecko.

General: For bugs in Core which do not fit into other more specific Core components

Geolocation: The geolocation API and framework enables reporting a physical location, in cooperating with a location provider (such as a GPS).

GFX: Color Management: qcms and other issues relating to Mozilla's color management implementation.

Graphics: Mapping of cross platform rendering interfaces to Cairo APIs. Graphics: Layers: The graphics subsystem that implements hardware-accelerated (and software) composition of layers of content. Graphics: Text: Text and font support in Gecko, including text shaping and font selection.

Hardware Abstraction Layer (HAL): For bugs in the Hardware Abstraction Layer (HAL) code regardless of the backend. Example of appropriate bugs: implementation of a new feature for a backend, fixing a bug for a specific backend or general bugs regarding HAL.

History: Global: This is the global history which tracks all URLs that a user has visited, across all sessions of the browser. This also includes the history window and link coloring. Examples of appropriate bugs: Chrome URLs incorrectly added to global history, Reproducible crash when sorting by Title in History window, misbehaviour in the History sidebar tab.

HTML: Form Submission: This component is for bugs with HTML form submission. For example, "hidden controls don't get submitted to the server".

HTML: Parser: This system consumes content from the web, parses, validates and builds a content model (document)

Identity: Persona / BrowserID Gecko and Firefox integration

Image Blocking: For bugs about (un)blocking images from servers.

ImageLib: ImageLib decodes GIF, JPEG and PNG images, and provides the decoded data to the Compositor for display. If Firefox or Seamonkey can display an image when loaded separately from the page, ImageLib is working, and the actual imaging bug exists elsewhere within Firefox or Seamonkey.

Examples of appropriate bugs: PNG gAMA chunk ignored; Crashes on GIF w/corrupted frame(merr-01.gif); or PNGs and JPEGs aren't displayed on FreeBSD. Installer: XPInstall Engine: For bugs in the underlying cross-platform installation technology. If you encounter an installation failure via a web page, it probably belongs here. Content developers should also report failures of the XPInstall API to this component.

Examples of appropriate bugs: Installer not installing all files; FinalizeInstall() doesn't check or return error codes; or Text from XPInstall confirmation dialog needs revision.

Internationalization: Internationalization is the process of designing and developing a software product to function in multiple locales. This process involves identifying the locales that must be supported, designing features which support those locales, and writing the code needed.

IPC: Inter-process communication mechanism used to isolate plugins and content in separate processes, also known as the Electrolysis project. See https://wiki.mozilla.org/Content_Processes for more details. Java to XPCOM Bridge: For bugs with the interoperability between XPCOM components and Java objects.

JavaScript Engine: The interpreter engine for the core JavaScript language, independent of the browser's object model. File ONLY core JavaScript language bugs in this category. For bugs involving browser objects such as "window" and "document", use the "DOM" component. For bugs involving calls between JavaScript and C++, use the "XPConnect" component.

jemalloc: For bugs relating to improving and integrating jemalloc.

Crashes in jemalloc are usually someone else's fault. Please file the bugs based on the caller instead of in this component.

js-ctypes: js-ctypes is a ffi (Foreign Function Interface) component for JS/XPCOM. js-ctypes allows developers to call functions in dlls/shared libraries directly from JavaScript without the need to create binary XPCOM wrappers.

Keyboard: Navigation: Covers keyboard shortcuts, access keys/accelerators, and navigation by using the keyboard (not the mouse or other input device).

Examples: Ctrl+W not closing the browser window under Windows. Command+N not opening a new browser window under Mac OS. Alt+left arrow not going to the previous page under Linux. Alt not accessing the menu or access keys under Windows. Also, the debate as to use Alt or Ctrl under linux as the keyboard accelerator key for shortcuts. Requests for additional keyboard shortcuts.

Layout: For triage, reduction, and reassignment to other layout components.

Layout: Block and Inline: Core layout and geometry for basic block and line elements. For example, margin collapsing bugs, border rendering bugs, and bugs with the inline box model belong here.

Layout: Floats: Issues with CSS floats or left/right aligned images. For example, bugs with the 'float' and 'clear' properties belong here.

Layout: Form Controls: For problems with HTML Form Elements: buttons, images, edit fields, passwords, file controls, submit buttons, selects, and textareas. NOT for file upload dialog problems, those belong in XP Toolkit/Widgets.

Layout: HTML Frames: For rendering and layout issues with frames (<iframe>, <frame> and <frameset> elements in HTML).

Layout: Images: Bugs related to the layout of images. Use ImageLib for issues with the decoding of images.

Layout: Misc Code: For code-level bugs in things like the pres shell, etc.

Layout: R & A Pos: Relative, Absolute, and Fixed positioning, except when printing. If you don't know what this is then please don't move bugs here, instead select "Layout".

Layout: Tables: For bugs in the CSS and HTML table layout and rendering code. For example bugs with the HTML 'rules' attribute or the CSS 'border-collapse' property belong here.

Layout: Text: For problems with enumerating and rendering system fonts, glyph substitution, fallbacks when specified font not available and legibility. Bugs with the CSS 'font' properties belong here.

Layout: View Rendering: Painting problems. If the object is in the right place, but doesn't paint correctly, it's a view system bug. If it paints OK, but in the wrong place, then it belongs in another Layout component. Bugs with the 'opacity', 'z-index', 'overflow', and 'clip' properties usually belong in this component. (In terms of code, this covers the view/ and gfx/src/nsBlender* directories.)

Localization: Localization is the process of adapting software for a specific international market; this process includes translating the user interface, resizing dialog boxes, replacing icons and other culturally sensitive graphics (if necessary) as well as customizing features.

mach: For bugs related to the "mach" command-line tool.

MathML: Mathematical Markup Language

MFBT: File bugs here for headers, macros, data structures, methods, and other functionality which should be available to SpiderMonkey and to all Gecko code, implemented in the mfbt/ source directory.

mozglue: For issues in the Android glue, the custom dynamic linker or other parts of the mozglue library.

Nanojit: JIT Compiler Infrastructure shared by Mozilla's TraceMonkey compiler and Adobe's Tamarin compiler.

Networking: For bugs in Mozilla's modular networking library (aka "Netlib" or "Necko".) The networking library supplies the software interface that Mozilla uses to access physical transports (e.g. the Internet and local drives), perform URL resolutions, and handle a variety of networking protocols.

Examples of appropriate bugs: URLs with backslash not fetched; URLs starting with a single slash turn into http:///; Cannot access authenticated FTP site. Networking: Cache: For bugs in the cache, which stores recently accessed data for more rapid access. Includes the disk cache, memory cache, and all cache preferences.

Examples of appropriate bugs: Implement compression of network cache data; or Implement partial HTTP caching.

Networking: Cookies: A general mechanism which server side connections (such as CGI scripts) can use to both store and retrieve information on the client side of the connection. This refers to HTML cookies; little blobs of data we store and share with sites

Networking: DNS: For bugs in Mozilla's implementation of DNS (Domain Name Service)

Networking: Domain Lists: Requests for changes to the TLD whitelist for IDN (registry representatives only) or the Public Suffix List

Networking: File: For bugs in Mozilla's File IO code. This component deals with File specific issues like writing to disk, reading local files, etc Related problems with file:// protocol may also be addressed here.

Networking: FTP: For bugs in Mozilla's FTP code. This component deals with FTP specific issues like downloading, directory formats, problems with FTP login, or resuming partial downloads, etc.

Examples of appropriate bugs- Problems with multiple occurrences of files in directory listings, corruption in downloading certain files via FTP, etc. Networking: HTTP: For bugs in Mozilla's HTTP networking code. This component deals with HTTP specific issues like pipelining, keep-alive, HTTP proxies, 1.1 issues, redirects, authentication (basic), etc.

Examples of appropriate bugs: Problems with proxy authentication; HTTP redirects looping indefinitely, etc.

Networking: JAR: For bugs relating to the jar protocol handler, .jar file handling, and .jar directory browsing.

Networking: WebSockets: For bugs in Mozilla's web sockets implementation, especially protocol and network-related issues. Issues which are specific to the web sockets DOM interface may be better classified as Core::DOM.

Permission Manager: For bugs related to the permission manager but not the permission management. Example of appropriate bugs: permissions in the database are ignored or removing permission doesn't work. Example of inappropriate bugs: feature F should use permission P or any user interface related bugs.

Plug-ins: Bugs in core Mozilla code that supports registering and using plug-ins. For bugs in specific plugins, please file those bugs under Plugins.

Preferences: Backend: For bugs in libPref, the backend library that reads, parses, and writes preferences to the user's hard disk. Unless you're a Mozilla developer, your bug probably doesn't belong in this component.

Examples of appropriate bugs: prefs.js on the mac has non-mac style line endings; Large libpref string causes dialogs to crash on Linux; or JS Error at startup reading prefs file on migrated profile.

Print Preview: Problems in the rendering of Print Preview that are not seen when printing the same page.

Printing: Output: Problems printing from this product should be submitted under this component.

Printing: Setup: Integration relating to the OS printing system, including cross-platform components such as the page setup dialog.

Profile: BackEnd: Problems with the creation, deletion and changing of user profiles during the installation process.

Profile: Migration: Problems with conversion of profiles from previous versions.

Profile: Roaming: For bugs relating to Profile Roaming support

QuickLaunch (AKA turbo mode): For bugs related to the QuickLaunch installer option and preference, which keeps the application resident in memory after all windows are closed, to speed subsequent component loading.

RDF: Resource Description Framework: Core RDF components, including the in-memory datasource, composite datasource, RDF/XML parser, and RDF resource manager.

Rewriting and Analysis: Features and bugs in the static analysis and rewriting tools used by Mozilla, including Elsa, Oink, and Dehydra.

Security: For non-crypto security bugs. Or use this general component if you know you have a Browser security bug, but not sure what component to use. Bug will be reviewed for proper component.

Security: CAPS: Caps is the capabilities-based security system for the browser. Manages principals (entities responsible for a piece of code) and the protected capabilities (the ability to perform a restricted action) that may be enabled for given principals.

Security: PSM: A daemon that performs cryptographic operations on behalf of a client application.

Security: UI: PSM client library

Selection: Selection refers to the user action of selecting all or part of a document and highlighting the selected content.

Serializers: Bugs involving conversion to html or plaintext, either during saving or during copy/paste. This component is NOT for general copy/paste bugs, for bugs involving save dialogs or writing to files when saving, or for I18n-related bugs; only for problems with the actual text which is saved.

Spelling checker: For bugs with the spelling checker used by Mozilla-based applications. This includes the backend code, the Hunspell spell checker, the en-US Hunspell dictionary, and the osxspell interface to the Mac OS X spell checker.

SQL: For bugs in Mozilla's SQL support. See the project page for more details.

String: The hierarchy of classes related to managing character sequences. SVG: Bugs against the implementation of the Scalable Vector Graphics (SVG) specification. Reads and renders SVG content.

Tracking: This component is used primarily for "tracking" bugs; bugs used to track a group of bugs.

Video/Audio: For problems related to the HTML 5 media elements (<video> and <audio>) and the codec implementations for them (Vorbis, Theora, etc). Web Services: For problems in using SOAP and WSDL to call Web Services from scripts in Mozilla.

Examples: WSDL crashes if no <message> defined; WSDL Proxy callback doesn't allow access to the SOAP Response; Need better facilities to debug SOAP calls.

WebDAV: Web Distributed Authoring and Versioning protocol support. Currently lives in mozilla/extensions/webdav/.

WebRTC: General bugs associated with WebRTC

WebRTC: Audio/Video: Bugs in WebRTC audio and video capture, handling, echo cancellation, encoding, and playback

WebRTC: Networking: Bugs in the networking portions of WebRTC (PeerConnection dataChannels, SCTP, DTLS, SRTP, ICE, TURN, STUN, etc)

WebRTC: Signaling: Bugs in WebRTC call-setup and re-negotiation code, in particular JSEP and SDP handling

Widget: Cross platform widget interfaces and cross platform base implementations. Bugs that belong in this component are cross-platform problems and API issues. Bugs like this that only occur on one platform belong in the appropriate component listed below.

Widget: Android: Mapping of cross platform widget interfaces to Android platform APIs.

Widget: BeOS: Mapping of cross platform widget interfaces to BeOS platform APIs.

Widget: Cocoa: Mapping of cross platform widget interfaces to Mac Cocoa APIs.

Widget: Gonk: Mapping of cross platform widget interfaces to Gonk

Widget: Gtk: Mapping of cross platform widget interfaces to GTK platform APIs (both versions).

Widget: OS/2: Mapping of cross platform widget interfaces to OS/2 platform APIs.

Widget: Photon: Mapping of cross platform widget interfaces to Photon platform APIs.

Widget: Qt: Mapping of cross platform widget interfaces to Qt platform APIs.

Widget: Win32: Mapping of cross platform widget interfaces to Win32 platform APIs.

Widget: WinRT: Mapping of cross platform widget interfaces to WinRT platform APIs

X-remote: X-Remote Client and Server

XBL: The Extensible Binding Language, used to bind new behavior and new content to XUL and HTML elements.

XForms: For bugs with XForms support. This covers all XForms issues including parsing, data model, form controls, and submission.

XML: For bugs in our XML handling. For example, parser errors, or errors in wellformedness error reporting.

XP Toolkit/Widgets: Menus: For bugs in the cross-platform menu infrastructure, including the display and behavior of pop-up menus, pull-down menus, and context menus. (Pop-up menus that are part of a web page's content should be assigned to HTML Form Controls.)

Examples of appropriate bugs: Command key symbol is missing from Mac menus; or Context menus pop up in wrong location.

XP Toolkit/Widgets: XUL:

For bugs in the XUL language. (XUL is an XML-based language which specifies Mozilla's user interface.)

If you're not actually writing XUL code, this is probably not the right place for your bug.

Examples of appropriate bugs: Duplicate window ID causes infinite loop; or Scrollbars disappear after loading XUL document

XPCOM: This is the basis of our component technology; this covers the mozilla/xpcom source directory and includes the "repository". Unlikely a tester would be able to tell there was an XPCOM problem specifically.

XPConnect: Facilitates calling between JavaScript and XPCOM components.

XSLT: For bugs on Mozilla's XSLT support. See the project page for tips on testcases and commonly encountered legacy problems.

XTF: eXtensible Tag Framework

XUL: XPToolkit includes a User Interface (UI) widget set consisting of menu bars and menus, toolbars and toolboxes, titled buttons, trees, tab widgets, scrollbars, splitters, progress meters, and boxes. Use this category for file picker, color picker, font picker and dialog/window bugs, too. XP Toolkit also accepts bugs relating to copy/paste, drag & drop, key bindings, the clipboard, and focus issues. All bugs concerning skins should use the "Skinability" component.

User interface widgets that are part of a web browser's content (such as web forms) are actually handled by a separate toolbox --- rather than XP Toolkit --- and should be assigned to HTML Form Controls.

Examples of appropriate bugs: Scroll bar disappears when you shrink window; Mouse wheel scrolling broken under Linux; or Horizontal scroll bar flickers mid-screen during window resize.

NOTE: Please use "Keyboard Navigation" component for key cmd problems.