Closed Bug 1409103 (treeherder-react) Opened 7 years ago Closed 6 years ago

[meta] Migrate Treeherder from AngularJS to React

Categories

(Tree Management :: Treeherder: Frontend, enhancement, P3)

enhancement

Tracking

(Not tracked)

RESOLVED FIXED

People

(Reporter: camd, Assigned: camd)

References

(Blocks 1 open bug)

Details

(Keywords: meta)

We are currently on Angular JS 1.x which is woefully out of date. And supporting packages like angular-ui-bootstrap are now no longer being supported. So in order to move into current code where things are more supported, we'll need to either upgrade Angular or switch away from it. It would take a similar amount of work to move to ReactJS as it would to Angular 4. Since React has been working well for us and other groups in Mozilla also use it (TaskCluster to some degree) we would have a wider ecosystem of in-house contributors if we were completely ReactJS. Ed and I discussed this topic this morning and we feel we should move to React. We can do this in phases something like this: 1. Migrate our current Angular code to Components (prerequisite for #2) 2. Upgrade to the latest React 16 for our existing components so that we're current. (optional) 3. Use the package ``angular2React`` so that we can switch our "base" from Angular to React. Then we can discontinue use of ngReact which works in the opposite direction. 4. Migrate each Angular Component to React one by one. I'll split out the steps into separate bugs. Also: We have a partial PR from Casey Williams that initiated the migration of ``clonejobs.js`` to React. So I may start by finishing that up.
Assignee: nobody → cdawson
Status: NEW → ASSIGNED
We will also likely need to replace our UI unit test from Jasmine to something else. Sounds like Jest and Enzyme are both popular: https://hackernoon.com/react-unit-test-example-tutorial-jest-enzyme-jsdom-mocha-chai-state-props-component-7ec850a98566
Depends on: 1242905, 1409889, 1408791
Depends on: 1409892
Component: Treeherder → Treeherder: Frontend
Depends on: 1419612
Keywords: meta
Priority: -- → P3
Depends on: 1421731
Depends on: 1424091
Blocks: 1384255
Depends on: 1426901
Depends on: 1427620
Depends on: 1434677
Depends on: 1434679
Depends on: 1434683
Depends on: 1404533
Depends on: 1428508
Depends on: 1432896
Depends on: 1437736
Depends on: 1437818
No longer depends on: 1427620
Depends on: 1438501
Depends on: 1440057
Depends on: 1440774
Depends on: 1441164
Depends on: 1441614
Depends on: 1441644
Depends on: 1441700
Depends on: 1441912
Depends on: 1442485
Depends on: 1443129
Blocks: 1437719
Depends on: 1442556
Depends on: 1444207
Depends on: 1446427
Depends on: 1449240
Depends on: 1450018
Depends on: 1450020
Depends on: 1450022
Depends on: 1450023
Depends on: 1450028
Depends on: 1450030
Depends on: 1450032
Depends on: 1450033
Depends on: 1450034
Depends on: 1450038
Depends on: 1450039
Depends on: 1450040
Depends on: 1450041
Depends on: 1450042
Depends on: 1450044
Depends on: 1450045
Alias: treeherder-react
Depends on: 1450024, 1450025, 1450026
Depends on: 1432840
Depends on: 1451171
Depends on: 1451428
Depends on: 1451457
Depends on: 1457205
I was just looking at https://github.com/bcherny/ngimport again, and I wondered whether it might make some of the conversion easier, since we can avoid passing the AngularJS dependencies all the way down through the props? For example: import { $rootscope, $log } from 'ngimport/index.es2015.js'; Or wrapping our own services to be able to do the same to them: https://github.com/bcherny/ngimport#after-1 What do you think?
Flags: needinfo?(cdawson)
This looks really awesome. I'll experiment with it and most likely start using it. :) Thanks for finding it!
Flags: needinfo?(cdawson)
Depends on: 1465987
Depends on: 1466178
Depends on: 1467228
No longer depends on: 1409889
Depends on: 1469047
Depends on: 1469917
No longer depends on: 1421731
Depends on: 1472047
No longer depends on: 1404533
Depends on: 1473166
Depends on: 1473167
No longer depends on: 1473166
Depends on: 1480166
Depends on: 1482536
Depends on: 1484032
Depends on: 1485090
Depends on: 1473777
Not urgent - but I ran the script in bug 1441164 again, and it found that the `preventDefaultOnLeftClick` directive is now unused (as of bug 1465987).
Depends on: 1486148
Depends on: 1488869
Depends on: 1489284
Depends on: 1492270
Depends on: 1492273
Depends on: 1496858
Depends on: 1497931
Depends on: 1499141
Depends on: 1364045
Depends on: 1451174
Depends on: 1501984
Depends on: 1506062
Depends on: 1506805
Blocks: 1492003
Depends on: 1513581
Depends on: 1513583
Depends on: 1513597
Depends on: 1513599
Depends on: 1513601
No longer depends on: 1434679
No longer depends on: 1496858
No longer depends on: 1451174
No longer depends on: 1484032
No longer depends on: 1473777
No longer depends on: 1497931
No longer depends on: 1506805
No longer depends on: 1450044, 1501984, 1506062, 1513583, 1513597, 1513599
Status: ASSIGNED → RESOLVED
Closed: 6 years ago
Resolution: --- → FIXED
Summary: [meta] Migrate from AngularJS to React → [meta] Migrate Treeherder from AngularJS to React
You need to log in before you can comment on or make changes to this bug.