Mobile/Get Involved

From MozillaWiki
Jump to: navigation, search

This page is the place to learn how to start contributing to Firefox for Android, also known as Fennec.

Firefox for Android is developed by the Mozilla community. We're currently focused on making Firefox rock on Android phones and tablets. We hope this page will help you become an active member of our community! If you're looking for other ways to contribute to Mozilla, have a look at Mozilla's global page for new contributors.

If you still feel that you don't know where to start after reading this page, feel free to ping us on IRC, we can probably give you some ideas. We're always looking for ways to improve this page to make it easier to start contributing to Firefox for Android. Suggestions and general feedback are more than welcome.

Hacking

Setting up a development environment for Firefox for Android is relatively easy. Just follow our build instructions and you'll be ready to start hacking after a couple of hours—mostly waiting for everything to compile. Unfortunately, Firefox for Android is more complicated than a basic Android app, so we recommend that you're comfortable using a command line before getting started.

Before starting to work on a bug, you should make sure you have your development environment set up. When you're ready to start hacking, it's a good idea to add a comment to the bug report letting the mentor know that you want to work on it. Ideally, the bug report should already have relevant source code links to help you get started. If you're unsure whether to take a certain bug or not, you can always contact us for clarification. If the bug you're working on involves UI changes, request feedback from the UX team (see contact list below) before landing.

Resources

Here's a list of resources that you may find useful for hacking on Fennec. Feel free to add more if you find things are missing!

Videos

Mentor Bugs

If you are looking for a bug with guidance, we maintain a set of bugs that are marked with an assigned mentor (see "Whiteboard" field). The mentor will help you get the necessary information to understand the issue, point out relevant parts of the code to look at, etc. You can browse these bugs on Bugs Ahoy!, but here's a list of unassigned mentor bugs to get you started:

ID Summary Whiteboard
582581 Auto-populate the text in the Find-in-page textbox with search engine query [lang=js][lang=java]
583242 Add contact support to form autocomplete (Android) [lang=java]
604719 No warning when the downloaded file is larger than the space available [strings][native-crash]
613287 video controls should "push in" when tapped
613590 No alert shown if we try to download with no sd-card attached
648548 Provide a UI to allow users to download fonts (for web content) that are missing from their system [lang=js]
669510 Create Home screen shortcuts from bookmarks using a shell shortcut launcher
701895 [IME] return key does not cause the urlbar to go to the website using simeji [testday-20111111], [VKB]
706500 ANR in keyDispatchingTimedOut due to blockage in GeckoLayerClient.compositionPauseRequested()
707415 Needs better initial size for file listings readability
708457 No Next button in the software keyboard when entering data into http://www.sweepstakes.com/
713062 Incorrectly using testExactPermssion to check some permission types [lang=js]
715990 Fire click events on option elements [lang=js]
716748 Investigate Google's Android Lint tool for scanning project resources for potential bugs [lang=java]
717088 compositionupdate events aren't being fired when text is deleted
717600 Maxlength attribute is ignored for typed characters with the vkb (even when composition string is committed)
717712 Should popups pass as a top-site
719276 Double tapping causes css :active to remain [lang=js]
719527 Enable input suggestions for the AwesomeBar when it's in Search mode
719690 Fire mousemove events on long press [lang=js]
720050 Various issues with disabled form controls [good next bug][lang=css]
720542 Fennec Java <-> native events should be autogenerated
720622 Avoid crashing when library loading fails somehow [lang=java]
721117 extension to exercise hooks in Native UI
722255 Add-ons Manager: Extension icon is scaled down unnecessarily
723664 Asus Transformer hardware keyboard will replace the previous character in the text box with the next character typed.
725919 Visual cursor position is different from the actual one on Etherpad [badfirstbug]
726865 UX for add-on installation warnings (softblocked or outdated add-ons) in Native Fennec
727816 Video controls should allow changing volume
729495 Hide http:// in URLs [lang=java][parity-desktop][parity-chrome][parity-stock]
730644 GeckoProfile file operations should be async
731887 Need to be able to force reload of cached objects (CSS, JS, images, etc.) [MTD], [parity-desktop]
737024 Show new types of bookmarks (separator, livemark, and query) where applicable
744025 Expose more discoverable way to delete downloads
747633 Back button behaviour should be consistent regardless of tabs open
755909 Text is selected when clicking textbox with Swype keyboard
756074 Double tap to zoom should zoom to container, not text
758259 libstagefright crash in _ZN7android8OMXCodec14configureCodecERKNS_2spINS_8MetaDataEEEj with Flash on Samsung GT-I9100G with Gingerbread [native-crash]
765121 Video controls unresponsive on mobile [lang=js][lang=xbl]
769857 Delay showing tap highlight instantly on tap (50ms delay) [lang=js]
771752 Master password preference dialog keyboard does not automatically show up on Galaxy Nexus [lang=java]
774309 Firefox does not show up as an option for Android's voice search results on ICS [lang=java]
795767 There is no way to see and/or undo any certificate error overrides in Firefox for Android [parity-desktop]
825752 Minus key (-) generates 0 keycode instead of 109 on TF300T [lang=c++]
826780 Splash screen background color is not right for open webapp [WebRuntime] [lang=java]
830761 Add a way to undo Clear Pin(s) [lang=java]
835012 Don't show home page/frequently used tabs when backing out of Fx ui-hackathon
856715 Map L2/R2 to next/previous tab
858137 Animated GIFs not working properly on the Samsung Galaxy SII (i9100) [lang=c++][likely much investigation needed]
875366 Make dir listings mobile friendly [lang=css][lang=C++][bad-first-bug]
876867 Style non-spinner input elements in Doorhangers [lang=java]
878145 Follow-up: auto-scroll to datareporting section when settings launched from notification [good next bug][lang=java]
878173 Create alternate about:feedback that sends positive feedback to input [lang=js][bad first bug]
879097 Remove "FormHistory:Init" and "Passwords:Init" messages [lang=js][lang=java]
881510 Accept-Language header customization UI for Android
884327 Domain highlighting should be applied to URLs shown during pageload [lang=js]
884590 stale requestIds in Gecko _prefsObserver not being removed [lang=java][good first bug]
891040 Media controls on Kickstarter overflow page content [lang=js][lang=xbl]
893289 Kill AlertNotification [lang=java]
893822 addon-options-hidden doesn't Firefox for options on Mobile [lang=js]
893836 Change Android menu contents to sentence case [lang=properties][lang=dtd][good next bug]
895750 Strange doorhanger behavior - persists between tabs [lang=java]
901059 Clean up old unused package-manifest.in references
912306 Form history dropdown reappears after moving focus outside the associated form field [lang=java][lang=js][bad first bug]
912343 Extend testBookmarkKeyword to check for search term [lang=java]
924751 cannot save a web page for viewing offline
926234 Eliminate combined_with_favicons view [lang=java][good next bug][needs SQL experience]
927692 Preload search engines [lang=java][good first bug]
940605 Provide a text selection action mode for webapps [WebRuntime][lang=java][lang=js]
942653 Proxy setting support for Fennec network operations
943082 Follow-up: more efficient loading of favicons from JAR [lang=java][good first bug]
944934 Use icon of helper app in address bar
945340 crash in libstagefright.so@address - Nexus 4, 5 and 7 Android 4.4 [badfirstbug]
945714 Don't tweak tab states to force the 'showProgress' behaviour [lang=java]
947162 Adblock Plus Settings Page locks up the Browser/Add-on Manager
947606 Tabs opened from other apps can disappear on OOM [lang=java]
948355 Unable to go to mozRequestFullScreen() in <body contextmenu=...> [lang=js][lang=java]
949045 Persist open tabs more quickly, sync all the damn time [qa+][parallel]
949204 SiteIdentityPopup doesn't need to depend on BrowserApp [lang=java]
949637 Use LocalBroadcastManager to create more efficient and secure broadcasts [lang=java]
956079 Leaked IntentReceiver in BrowserLocaleManager
956865 Calling BrowserApp.addTab with no parameters causes odd behavior [lang=js]
958399 Use apple-touch-icon links as the home screen icon for homescreen shortcuts [lang=js][lang=java]
963352 Add more testcases to TestHomeProvider [lang=js]
964901 Curate debug output for HomePanel add-on developers [lang=js]
965454 Stress test home panel JS API [lang=js]
965817 Empty space at the Tools menu display - HTC Sensation 4G
966707 Delete old addons.sqlite and extensions.sqlite [lang=java]
967376 Pull master password dialog out of GeckoPreferences [lang=java]
968533 Separate Fennec-specific code and resources from generic Gecko code and resources
970478 Certificate error pages are not completely translated in localized builds (missing pipnss.properties in build)
972042 Audit UITest's use of Solo.getView [lang=java]
972058 Disable strictmode warnings during known violations [lang=java]
972624 Add tests to ensure each device configuration has the appropriate toolbar/menu buttons [lang=java]
974427 Generalize page_row_height dimension [lang=java]
974466 SelectHelper passed document instead of window to prompt [lang=js]
975212 Finish encapsulating access to profiles.ini within GeckoProfileDirectories
976511 Text cut off on panels from reading list or recent tabs for (pt-PT), (hu-HU) [lang=js]
976616 Support dynamic viewport changes (changing meta viewport tag from JavaScript) [lang=js][bad first bug]
979776 Allow section tabs in hub panels [lang=java][bad first bug]
984310 Helper app icon in the URL bar, is not displayed after tapping back from external app
988930 Auth view button overlaps text in landscape mode on phones [lang=java]
995609 TextSelection regex thinks 'p', 'w', '#' are dialable phone numbers [lang=js][good first bug]
1001084 Remove ToolbarEditLayout [lang=java][bad first bug]
1002711 Authentication state pref remains after panel is uninstalled [lang=js]
1004153 Only show the home banner some of the time [lang=js]
1004517 Allow including local images for Home.panels imageUrl fields [bad first bug][lang=java]
1007793 Notify HomeProvider consumers when they're storing too much data [lang=js]
1009250 Investigate drawing efficiency in editing mode on non-animating phone devices [lang=java]
1014163 Add views to display more content in dynamic panel list items [lang=js][lang=java][bad first bug]
1015467 Add a new tab by long-tapping on the empty space of horizontal tab strip [lang=java]
1017338 Swipe up to close a tab from tab panel [lang=java]
1018419 Reorder a tab on tab panel [lang=java][exploration required]
1018456 Blur effect for private tab thumbnails
1018466 Press down to peek original thumbnail of a private tab
1018481 Pin a tab on horizontal tab strip [lang=java][ux needed]
1021364 Tabs tray does not update strings on locale change [lang=java]
1022091 [Roku] Feature request: allow casting from local files
1022679 Add network analytics [lang=C++]
1023243 Adding search for Longreads.com doesn't seem to work properly [lang=java]
1023551 Add hooks to let add-on know when a panel is enabled/disabled [lang=java][lang=js]
1023571 Strangely poor performance on fairly simple app
1023637 intermittent: AboutHomeTest overswipes on Nexus 4 and Galaxy Nexus [lang=java]
1024717 Investigate defining device configuration (e.g. isLargeTablet) in resources
1024816 Tab overflow on horizontal tab strip
1028727 Update testAboutHomePageNavigation to account for recent tabs panel [lang=java]
1029646 RTL locale support in locale picker
1029649 [meta] Locale switching functionality for RTL
1032179 Grey bar remains on the bottom of the screen after exiting full screen mode [lang=java][lang=js]
1040206 Improvements to SuggestClient
1043141 [TABLET] Overflow menu button in GONE state during try run [lang=java]
1044273 Update HomeBanner translation animation to use NineOldAndroids [lang=java]
1044275 Update ButtonToast alpha animation to use NineOldAndroids
1045887 Implement a simple janitor for deleting stale files
1048951 support flinging youtube to devices [lang=java]
1051544 Favicon cache doesn't update history entries with favicon ids
1054113 Firefox for Android should support Navigator.requestWakeLock API [lang=js]
1057650 Investigate whether new_tablet_browser_toolbar can be a LinearLayout
1058149 Lock screen widget/shortcut for Guest Sessions on Android 4.2 and above [lang=java]
1061382 If background syncs are disabled, Add to Firefox can never send a tab
1062978 Update select element styling ui-hackathon
1065076 Update icons for video controls [lang=js][lang=css][good first bug]
1065484 Distribution.copyFiles takes 500msec on Nexus S first run [good next bug][lang=java]
1065752 Lockscreen widget should prompt before starting guest mode [lang=java]
1066884 Integrate Home Feeds addon into built-in home panel [lang=java][lang=js]
1067539 Remove OnUrlOpenListener from HomeListView
1069971 Don't paint ugly box around home screen shortcut icons if icon has high resolution
1070211 Invalidate Gecko locale service when app locale changes
1071118 crash in java.lang.IllegalArgumentException: View=android.widget.PopupWindow$PopupViewContainer{420dd738 V.E..... ......ID 0,0-768,297} not attached to window manager at android.view.WindowManagerGlobal.findViewLocked(WindowManagerGlobal.java)
1072054 Load new tablet tab strip favicons on browser load
1073412 Tab panels can get out of focus after changing the device orientation to portrait on tablets
1075476 removing download notification restarts Firefox
1075550 Locale option displayed even if some fonts support are missing
1077614 Adjust width between close button and favicon in new tablet tab strip to 12dp [lang=java][bad first bug]
1078301 Search engine color can be slow to appear [lang=java][shovel-ready]
1080671 Upload pre- and post-ProGuard javap outputs
1084523 nothing matches overlay file [exploration needed]
1085406 Update new tablet reload assets [lang=xml][good next bug][see comment 5]
1085779 Write tab history stack into TabsProvider
1086980 Copy desktop behavior for back/forward buttons in tablet editing mode [lang=java][see comment 2]
1087654 Add about:logcat
1093199 Fix sizing issues during forward button animation [lang=java]
1093640 Improve tablet keyboard navigation [lang=java]
1093643 crash in java.lang.NullPointerException: at org.mozilla.gecko.GuestSession.isSecureKeyguardLocked(GuestSession.java)
1093902 Tab history tablet refinements
1097317 Do not restore zoom on cancellable nsISHistoryListener events [lang=js][lang=c++]
1098657 Don't expose PageActions implementation internals to consumers [lang=js]
1101190 Remove new tablet edit_cancel button [lang=java]
1105271 Adjust new tablet tabs tray button sizes [lang=java][good next bug]
1106375 Start/Homepage panel/view 'Reading list' and icon for reading list in reader mode not shown because isLowMemoryPlatform used and reader.parse-on-load.force-enabled not evaluated [lang=java][lang=js]
1109593 [TABLET] Small size font on webrtc doorhanger [lang=java]
1111663 [JavaScript Error: "TypeError: button.onClicked is not a function" {file: "resource://gre/modules/Notifications.jsm" line: 236}] [lang=js][good first bug]
1111820 Explore: layering tabs in tab strip over and under add tab button when scrolling [lang=java]
1112865 [tabs tray] Swipe to switch tabs trays [lang=java][bad next bug]
1113848 Clean up GeckoAppShell.getOpenURIIntent
1116280 Use download.launch in DownloadNotifications.jsm [lang=js]
1116349 Flush Picasso LRU cache on memory pressure events [good next bug][lang=java]
1116351 Each Tab instance holds a 650KB thumbnail Bitmap [good next bug][lang=java]
1116571 verify profilePath is correctly set in BaseRobocopTest
1117833 Top-Site thumbnail summary displays page URL instead of page title; fixed on refresh [lang=java]
1118971 Extract LocalBrowserDB.with* methods into DBUtils [good first bug][lang=java]
1119212 Reduce thumbnail size to limit memory usage of Tab instances
1119341 Thumbnail size selection depends on TopSitesGridView
1119401 Images are shared with wrong extension [good next bug][lang=java]
1119890 Provide a way for PageActions.jsm to specify multiple icons sizes [lang=js]
1119915 Provide an escape hatch when the user installs an APK with the wrong API range [lang=java]
1120022 Move logic to update reader mode page action icon out of browser.js [lang=js]
1121515 Tapping under the last option in a combo box will select the last option and deselect all the others [lang=java][lang=js]
1121651 Remove static StringHelper.get references in UITest framework [lang=java][good next bug]
1121656 Remove static StringHelper.get references in BaseTest framework [lang=java][good next bug]
1122056 Move tablet action bar to cover tabs, rather than toolbar
1122072 [tablet] Close tabs tray when last normal tab is closed [lang=java]
1122752 Remove whitespace from action bar drawable pngs [lang=java][good next bug]
1122776 Remove whitespace from menu drawable pngs [lang=java][good next bug]
1122977 Increase number of inline devices from 2 to N, based on screen sizes [good first bug][lang=java]
1125043 Download notifications are cleared from Android notification bar after you enter/exit Guest Mode [lang=js]
1125050 Big space between thumbnail rows on Kindle Fire [lang=java]
1127139 BounceAnimator incorrectly overrides start [good first bug][lang=java]
1127578 Consolidate hide/showUrlEditLayout into BrowserToolbarPhone/Tablet [lang=java][good next bug]
1128561 Try to PRAGMA shrink_memory when we get a TrimMemory notification [good next bug][lang=java]
1129935 fennec nightly sometimes gets two tabs for page only opened from Homescreen bookmark
1129998 Listen for LoginManagerContent events in content.js [lang=js]
1130254 Clean up DirectoryProvider to handle localized values of general.useragent.locale [good next bug][lang=js]
1130617 Disabled date inputs should not show a popup [good next bug][lang=js]
1130633 Video controls slow to respond and don't actually control video that auto played
1130809 Batch-load thumbnails from DB [good next bug][lang=java]
1131177 Restoring defaults does not preserve region.properties ordering [lang=java][lang=js][bad first bug]
1133157 Add telemetry for reader cache record sizes [good next bug][lang=js]
1133560 Underline divider missing from top and second level search results in Android 5.0+ [lang=java]
1134494 Change url_bar_entry_pressed outline color to action orange [good first bug]
1136325 Disable fullscreen mode when the hardware menu button is pressed [lang=java][exploration needed]
1137153 Default search engine is not preserved after crash [good first bug][lang=js]
1137283 Centralize fullscreen interactions with FullScreenUtils or similar
1137737 Investigate use of colorAccent attribute in Lollipop theme [lang=java][lang=xml][exploration needed]
1137992 feature: draw theme under system bars [ux needed][exploration needed][lang=java]
1138560 Add telemetry for web pages launched from home screen shortcuts. [lang=java][good next bug]
1139013 Settings menu unexpectedly accessible from fullscreen mode on devices w/ hardware menu buttons [lang=java]
1140430 Single locale builds aren't aware of their locale, consequently using incorrect capitalization schemes (and text directions, and…)
1140674 Remove extra LinearLayout view in doorhanger [good first bug]
1141142 propagate referrer policy in android [lang=js][bad first bug]
1144386 Don't copy *.orig/rej files to geckoview_library when copying resource dir
1145192 GeckoProfile spamming Android log with: Fetching profile: '', 'null' [lang=java]
1145505 screen shots of private tabs can show up in recent apps list
1145821 Add browser menu "Add to reading list" button test [lang=java][good next bug]
1146735 Change outer container in @layout/anchored_popup to FrameLayout [good first bug]
1148028 Remove MOZ_ANDROID_SHARE_OVERLAY #define
1148176 Add test for share overlay
1148244 Investigate removing share overlay outermost FrameLayout
1148549 Change menu items divider color to #D7D9DB
1148550 Change menu list items pressed color to "Toolbar grey pressed"
1148919 Robocop: Extend the testStateWhileLoading test to assert the state of the forward button too [lang=java]
1149780 Enable code block in GeckoLoader that depends on SDK 17 [good first bug]
1150983 Add "Synced Tabs" to Clear Private Data option list
1151671 Move StringHelper.ABOUT_PASSWORDS_URL to a member variable [lang=java][good first bug]
1153211 download silently continues on cell mobile data
1153804 Keyboard pops up unexpectedly in the tab switcher
1154646 Mobile about:config determines pref existence incorrectly [lang=javascript]
1156546 Remove "Developer Tools" preferences category when in Guest Mode [good first bug][lang=java]

238 Total; 238 Open (100%); 0 Resolved (0%); 0 Verified (0%);


Whiteboard tags

There are some whiteboard tags we use to characterize introductory bugs. Click the links below to see the list of those bugs!

Testing

If you want to help us find issues on the latest Fennec releases, join the Mobile QA team and participate in the breadth of areas that are offered. We're always looking for assorted Android Device coverage and a breadth of website compatibility testing.

Start by filing Firefox for Android Issues or converse directly with us on IRC about the bugs you find. Or watch the Events calendar for upcoming Mobile Testdays on focused topics! Testdays are an interactive opportunity to participate in real time with other community testers on testing and debugging.

Finally, subscribe to our bi-monthly newsletter on the latest and greatest in Fennec features!

Useful links:

Support

Join our amazing volunteer support community dedicated to helping people get the most out of Firefox Mobile!

  1. Create an account on SUMO - Creating an account gives you access to answering questions and editing articles about Firefox Mobile, where we give you credit for your contributions.
  2. Answer support questions - Share your knowledge of Firefox Mobile by pointing people to the right help articles and providing troubleshooting steps for their individual questions. View and reply to the unanswered mobile support questions.
  3. Improve the Knowledge Base - If you like to write or teach, improving the articles in the Knowledge Base is great way to help thousands of people each week. Currently we are looking for contributors to document the new Camera UI feature in Firefox Mobile and the new Tablet UI.

Communication

Subscribe to the mobile-firefox-dev mailing list to follow and participate in development discussions.

To keep in touch with the Mobile team on a daily basis, you should hang out on the #mobile channel at irc://irc.mozilla.org/mobile. We're always there, in different timezones. You can read the IRC wiki page for more details about joining IRC. If you want to talk to people from specific areas or have any questions, here are a few people you can ping:

  • Front-end: bnicholson, liuche, margaret, mcomella, mfinkle, mhaigh, nalexander, rnewman, wesj
  • Platform: blassey, Cwiiis, esawin, gcp, jchen, kats, rbarker, snorp
  • QA: AaronMT, kbrosnan
  • Design: alam, tecgirl, darrin
  • Marketing: arcadio
  • Support: rolandtanglao, tdowner
  • Market data and insights: irina
  • Project management: jchaulk
  • Product management: kar, dria


You should also be able to find us in the mobile Mozillians group.

For the latest developments, updates, pro-tips and happenings in the world of Firefox on Android, you should follow @FennecNightly on Twitter. You can also read our development blogs on planet mobile.

Glossary

  • [good first bug] - a whiteboard comment that means this bug is a great one to start with. These bugs are ready for you to work on as soon as you have a development environment configured. Good first bugs should be small and include detailed instructions explaining what needs to be done.
  • [good second bug] - a whiteboard comment that means this is a great bug to follow your first bug with. These bugs are ready for you to work once you've submitted a patch and gotten review on your first bug. They should be small and include some instructions about what needs to be done.
  • [bad first bug] - a whiteboard comment that means this bug looks very simple but is harder than it looks! Consult the bugs mentor or ask in #mobile about tackling it if you think you're ready.