Loop/Development: Difference between revisions

Some rework and tidy up ready for "v1"
(→‎Repositories: Drop Fxos for now)
(Some rework and tidy up ready for "v1")
Line 7: Line 7:
* Server: 'Loop' product, 'Server' component
* Server: 'Loop' product, 'Server' component


''Tracking section to be added elsewhere, with a reference here''
==== Looking for bugs? ====
 
Try one of the [https://bugzilla.mozilla.org/buglist.cgi?f1=status_whiteboard&o1=substring&resolution=---&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&v1=good%20first%20bug&component=Client&component=General&product=Loop&list_id=12141660 good first bugs] (simple bugs that are easy to fix) or a [https://bugzilla.mozilla.org/buglist.cgi?f1=status_whiteboard&o1=substring&resolution=---&query_format=advanced&bug_status=UNCONFIRMED&bug_status=NEW&bug_status=ASSIGNED&bug_status=REOPENED&v1=good%20next%20bug&component=Client&component=General&product=Loop&list_id=12141660 good next bug].
 
There's also [https://bugzilla.mozilla.org/buglist.cgi?f1=bug_mentor&list_id=12141679&o1=isnotempty&resolution=---&emailtype1=exact&query_format=advanced&emailassigned_to1=1&email1=nobody%40mozilla.org&product=Loop mentored bugs] where are developers have signed up to help you fix the bugs. Most of these will be in the good first and next bug groups above.
 
Or if not, take a look at our [[Firefox/Iterative_Hello_Development#Product_Backlog|ranked priority list]] and choose one from there.


=== Repositories ===
=== Repositories ===
Line 14: Line 20:
* Master repository for Desktop and Standalone UI: [http://hg.mozilla.org/mozilla-central/ mozilla-central] (there's a [https://github.com/mozilla/gecko-dev git mirror] of it as well)
* Master repository for Desktop and Standalone UI: [http://hg.mozilla.org/mozilla-central/ mozilla-central] (there's a [https://github.com/mozilla/gecko-dev git mirror] of it as well)
* [https://github.com/mozilla-services/loop-server Loop server]
* [https://github.com/mozilla-services/loop-server Loop server]
== Getting started with Firefox Desktop and Standalone development ==


=== Directories ===
=== Directories ===
Line 29: Line 33:
* ui/ - A UI showcase, used to aid development and layout of styles for the various parts of the UI
* ui/ - A UI showcase, used to aid development and layout of styles for the various parts of the UI


=== Firefox Desktop ===
=== Loop Software Architecture ===
First, [https://developer.mozilla.org/en-US/docs/Simple_Firefox_build build Firefox].
 
More details on the structure coming soon. We have parts of Loop that run in a web-content space (those typically below a <code>content</code> directory), and other parts that work in a gecko privileged space (these are typically in the root directory of <code>browser/components/loop</code>).
 
A lot of the content files use a Flux based architecture, [https://blog.mozilla.org/standard8/2015/02/09/firefox-hello-desktop-behind-the-scenes-flux-and-react/ read more about that here].
 
== Getting started with Firefox Desktop and Standalone development ==
 
=== Additional Requirements ===
 
For Loop development, there's currently a couple of extra requirements on top of the [https://developer.mozilla.org/en-US/docs/Simple_Firefox_build#Build_prerequisites Firefox desktop build requirements].
 
These are npm and react-tools.


Make sure you have npm installed:
Make sure you have npm installed:
Line 40: Line 55:
  npm install -g react-tools
  npm install -g react-tools


=== Standalone (aka link clicker) client ===
=== Unit test and ui-showcase tools ===
This also needs npm to run.


To run the server on localhost, do:
We have a server that helps running the unit tests manually, there's also the ui-showcase which helps with previewing layouts before starting Firefox.


  cd browser/components/loop/standalone
  cd browser/components/loop/standalone
  make install
  make install
Then to run the server:
  make runserver
  make runserver


You'll also need to run a [https://github.com/mozilla-services/loop-server Loop server]:
You only need to do <code>make runserver</code> on subsequent runs. Although <code>make install</code> may be required occasionally if dependencies get updated.
 
git checkout https://github.com/mozilla-services/loop-server
cd loop-server
make install
 
You'll then need to copy sample.json to dev.json. Ask in #loop if you need help. Then run:
 
make runserver
 
In a Firefox profile, you'll need to set the <code>loop.server</code> pref to <code>http://localhost:5000</code>


=== Developing ===
=== Developing ===
Line 75: Line 76:


to keep watching the jsx files and updating them as the change.
to keep watching the jsx files and updating them as the change.
=== UI-showcase ===
If you've got the standalone server running, you can view this by visiting http://localhost:3000/ui/ . This lets you layout the content pages (the parts displayed in the panel and conversation view) in a web context before loading and testing them in Firefox itself.
=== Running Tests ===
There's a file located at <code>[http://mxr.mozilla.org/mozilla-central/source/browser/components/loop/run-all-loop-tests.sh browser/components/loop/run-all-loop-tests.sh]</code> which allows all loop related tests to be run at the same time.
For information on running the tests individually, see the <code>[http://mxr.mozilla.org/mozilla-central/source/browser/components/loop/README.txt README.txt]</code> file.
== Creating Patches ==
Creating patches happens in exactly the same manner as for the rest of Firefox. See our documentation on the Mozilla Developer Network for [https://developer.mozilla.org/en-US/docs/Mozilla/Developer_guide/How_to_Submit_a_Patch how to create and submit a patch.]
canmove, Confirmed users, Bureaucrats and Sysops emeriti
3,628

edits