Webpack Roadmap
### What
We got webpack in and that is great. But we can't take full advantage until we remove global code.
After a chat with @jschatz1, we decided to make a roadmap to allow for things to get scheduled. This issue is done in collaboration by @filipa @mikegreiling and @iamphill.
For this to happen we need to divide and conquer. This is not an hard task to do, just a boring one.
We also need to teach. We all use it, but webpack can be hard to understand and there is no shame in that :)
We can't force everyone to read full documentation, we could do a small talk explaining the need of webpack and how to use it.
### How
1. `main.js` - Divide and conquer!
1. Shortcuts
- [x] `shortcuts` @iamphill
- [x] `./shortcuts_blob` @iamphill
- [x] `./shortcuts_dashboard_navigation` @iamphill
- [x] `./shortcuts_navigation` @iamphill
- [x] `./shortcuts_find_file` @iamphill
- [x] `./shortcuts_issuable` @iamphill
- [x] `./shortcuts_network` @iamphill
1. Templates
- [x] `./templates/issuable_template_selector` @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15524
- [x] `./templates/issuable_template_selectors` @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15524
1. Commit
- [x] `./commit/image_file`
1. Utils
- [x] `./lib/utils/bootstrap_linked_tabs` @filipa gitlab-ce!14734
- [x] `./lib/utils/datetime_utility` @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15782
- [x] `./lib/utils/pretty_time` @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15459
- [x] `./lib/utils/text_utility` @filipa gitlab-ce!15320
- [x] `./lib/utils/url_utility` @iamphill gitlab-ce!15783
1. u2f
- [x] `./u2f/authenticate` @filipa gitlab-ce!14776
- [x] `./u2f/error` @filipa gitlab-ce!14776
- [x] `./u2f/register` @filipa gitlab-ce!14776
- [x] `./u2f/util` @filipa gitlab-ce!14776
1. Everything else
- [x] `./abuse_reports`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14709
- [x] `./activities`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15933
- [x] `./admin`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15933
- [x] `./ajax_loading_spinner`; @filipa gitlab-ce!14738
- [x] `./api`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14774
- [x] `./aside`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15933
- [x] `./autosave`; @mikegreiling gitlab-ce!14856
- [x] `./broadcast_message`; @mikegreiling gitlab-ce!14853
- [x] `./build`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14744
- [x] `./build_artifacts`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14744
- [x] `./build_variables`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14744
- [x] `./ci_lint_editor`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14744
- [x] `./commits`; @filipa gitlab-ce!14735
- [x] `./compare`; @mikegreiling gitlab-ce!14857
- [x] `./compare_autocomplete`; @mikegreiling gitlab-ce!14857
- [ ] `./confirm_danger_modal`; @mikegreiling gitlab-ce!17874
- [x] `./copy_as_gfm`; @mikegreiling gitlab-ce!14859
- [x] `./copy_to_clipboard`; @mikegreiling
- [x] `./create_label`; @filipa gitlab-ce!14738
- [x] `./diff`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14965
- [x] `./dropzone_input`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14894
- [x] `./due_date_select`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14881
- [x] `./files_comment_button`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14965
- [x] `./flash`;
- [ ] `./gl_dropdown`; @jschatz1 https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15992
- [x] `./gl_field_error`; @iamphill
- [x] `./gl_field_errors`; @iamphill
- [x] `./gl_form`; @iamphill
- [x] `./group_avatar`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15006
- [x] `./group_label_subscription`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15006
- [x] `./groups_select`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15008
- [x] `./header`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15090
- [x] `./importer_status`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15058
- [x] `./issuable_index`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15058
- [x] `./issuable_context`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15058
- [x] `./issuable_form`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15058
- [x] `./issue`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15090
- [x] `./issue_status_select`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15090
- [x] `./label_manager`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14794
- [x] `./labels`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14794
- [x] `./labels_select`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15091?w=1
- [x] `./layout_nav`; @iamphill https://gitlab.com/gitlab-org/gitlab-ee/merge_requests/3829
- [x] `./line_highlighter`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15960
- [x] `./logo`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15091?w=1
- [x] `./member_expiration_date`; @filipa gitlab-ce!14808
- [x] `./members`; @filipa gitlab-ce!14808
- [x] `./merge_request`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15960
- [x] `./merge_request_tabs`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15952
- [x] `./milestone`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15503/
- [x] `./milestone_select`; @okoghenun gitlab-ce!16076
- [x] `./mini_pipeline_graph_dropdown`; @filipa gitlab-ce!14734
- [x] `./namespace_select`;
- [x] `./new_branch_form`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15503/
- [x] `./new_commit_form`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15503/
- [x] `./notes`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15953
- [x] `./notifications_dropdown`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15952
- [x] `./notifications_form`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15952
- [x] `./pager`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15952
- [x] `./pipelines`; @filipa gitlab-ce!14734
- [x] `./preview_markdown`; @jschatz1 https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/16025
- [x] `./project`; @filipa gitlab-ce!15355
- [x] `./project_avatar`; @filipa gitlab-ce!15355
- [x] `./project_find_file`; @filipa gitlab-ce!15787
- [x] `./project_import`; @filipa gitlab-ce!15355
- [x] `./project_label_subscription`; @filipa gitlab-ce!15356
- [x] `./project_new`; @filipa gitlab-ce!15356
- [x] `./project_select`; @filipa gitlab-ce!15356
- [x] `./project_show`; @filipa gitlab-ce!15356
- [x] `./project_variables`; @filipa gitlab-ce!15356
- [ ] `./projects_dropdown`; @jschatz1
- [x] `./projects_list`; @filipa gitlab-ce!15787
- [x] `./syntax_highlight`; @filipa gitlab-ce!15787
- [x] `./render_math`;
- [x] `./render_gfm`; @jschatz1 https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15993
- [x] `./right_sidebar`; @iamphill https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15960
- [x] `./search`; @filipa gitlab-ce!15787
- [x] `./search_autocomplete`; @filipa gitlab-ce!15787
- [x] `./smart_interval`; @psimyn
- [x] `./star`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/14795
- [x] `./subscription`;
- [x] `./subscription_select`; @filipa https://gitlab.com/gitlab-org/gitlab-ce/merge_requests/15503/
1. Export `gl` utility functions as modules - https://gitlab.com/gitlab-org/gitlab-ce/issues/37220 :white_check_mark:
1. Spies in `gl` functions - https://gitlab.com/gitlab-org/gitlab-ce/issues/30998
1. Dispacther - https://gitlab.com/gitlab-org/gitlab-ce/issues/37792
1. Docs! Let's document everything so everyone can use it! - https://gitlab.com/gitlab-org/gitlab-ce/issues/38173
1. Memory - https://gitlab.com/gitlab-org/gitlab-ce/issues/32893
1. Logs - https://gitlab.com/gitlab-org/gitlab-ce/issues/34348
1. Speed up webpack dev server - https://gitlab.com/gitlab-org/gitlab-ce/issues/35305
Followup: https://gitlab.com/gitlab-org/gitlab-ce/issues/41290
issue