Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

[eclipse] Track repo's move to the "eclipse" GitHub org #3182

Closed
10 of 12 tasks
marcdumais-work opened this issue Oct 15, 2018 · 8 comments
Closed
10 of 12 tasks

[eclipse] Track repo's move to the "eclipse" GitHub org #3182

marcdumais-work opened this issue Oct 15, 2018 · 8 comments
Assignees
Labels
eclipse issues related to eclipse / eclipse foundation

Comments

@marcdumais-work
Copy link
Contributor

marcdumais-work commented Oct 15, 2018

update 2018-11-16:
added in a comment below the files that I think we copied from vscode, in whole or in part. I think that in some cases we should add proper attribution so that we respect the MIT license, but ATM the focus is on confirming license compatibility with Theia. In some cases, "attribution" is probably in a "gray zone", e.g. keeping an original MIT license header is normally required, but if none was there in the first place, are we required to add it ourselves? CQ created for vscode.

update 2018-10-30:
Found ~60 more files that look like they were copied verbatim from vscode, by comparing checksums of all files, between the two repos (for now comparing just 1 commit on each repo). There might be more if we were to compare the overlapping history of each repo or if we had a more granular comparison than whole files. These files are mostly Textmate grammars (.tmLanguage.json) and icons (.svg). This checksum comparison has only been done against the vscode repo; we might find more if we compared to other related repos.

update 2018-10-26:

We recently noticed that some 3rd party content, mostly code and icons from the vs code project, were added to our code base without corresponding CQs being registered and "license certified". The Eclipse Foundation confirmed that the move of the repo needs to wait, until this is done.


update:

  • opened a bugzilla to ask Webmaster's help to move the repo
  • we were offered our own (Eclipse-owned) GitHub organization, instead of the usual "eclipse" one: "Eclipse-Theia". It would probably help with one concern we have: some GH integrations that we use, such as Travis CI, seem to share/limit resources per GH org. So we were anticipating having to wait longer for builds.

As part of the move of the project to the Eclipse Foundation, we will soon move this repo to the Eclipse GitHub organization: eclipse/theia. This issue is to track what's left to do and plan the move.

General considerations:

  • Since this is a repo move, it will not be possible to have both the current and new repos concurrently active: some downtime is unavoidable. So let's plan the move a bit and get the buy-in from the people that will be involved.
  • The SHAs of all commits in our repo will change. This is a consequence of having to re-write history to modify our "Eclipse Foundation Initial Contribution"
  • Only the master branch will survive the move, from a normal user's perspective. All other branches will disappear. This will likely affect PRs pushed as a branch on the main repo. It's the responsibility of PR submitter to save PR content/state (code/branch, comments, ...) offline, and if needed re-create the PR after the move.
  • The old history: commits, branches and tags, will be persisted in the new repo but not be easily accessible. i.e. normal users cloning the repo will not pull these old objects. See [1]
  • Post-move: it's been noticed that some PRs done after initial contribution have included 3rd party code without first obtaining permission through a CQ. Might need another "scan" by foundation to identify these, create CQs and get approval. Until this is completed, we might not be able to release. Once we move, the Eclipse Foundation rules will apply. See [3]: A project cannot make a release until the due diligence on the IP contained in that release is complete.
    • Option: to mitigate, do a release shortly before the move. Then if it takes a little while to get the new repo in good shape w-r to IP, there is a recent latest release out there.

Before Repo move

Update initial contribution commit

We need to update the Eclipse Foundation initial contribution commit, that was done on the master branch back in June, following feedback from the foundation. The resulting commit will be the first one of our new repo:

  • update commit to remove all files that have 3rd party code

Re-add files with 3rd party content, misc updates

Then, right after the initial contribution commit, we need to insert some commits, that re-add the removed files (they are needed to compile, after all), one commit per approved CQ. Finally we want to add a NOTICE file and update CONTRIBUTING.md, according to the Foundation's guidelines.

Repo move - coordination

We need to identify a move date/time that fits involved persons. Announce in advance to the community, in some way. Tentatively:

  • [theia] Marc Dumais
  • Eclipse Foundation: webmaster?
  • WHEN?
  • ...

The actual move steps, high-level:

  • disable merging to the "old" repo, so nothing gets merged in the meantime.
  • (See section below for the details how we propose this be done.) Re-write the repo's history to update the original initial contribution, following comments by the Eclipse Foundation, and insert a few extra commits after that one.
  • Add the eclipse_initial tag on the updated initial contribution commit.
  • Transfer repo ownership to the Eclipse Foundation's GH org.
  • EF webmaster proceeds to squash the old repo's history, onto the commit tagged with eclipse_initial. The original repo's history is not completely removed but rather hidden.
  • EF webmaster makes the new repo available (e.g.re-enable merging to the repo)

Post-move:

  • setup/confirm master branch protection status (do not permit force push, require 1 review before merging, ...)
  • Verify that CI, other integrations still work
  • Provide instructions on how to update a previously cloned Theia repo
  • Have the Eclipse Foundation do another pass to identify merged code that has 3rd party content, from after the initial contribution. Register CQs for them.
  • ...

Here are instructions how to update the initial contribution:

Update initial contribution:

See here where I pushed the result of a test-run of the steps below, on branch eclipse-theia of my fork. Please have a look and report any issue. This will be re-done on the move day.

insert extra commits after original "initial contribution:

The extra commits to add are on branch eclipse_foundation_submission: https://github.com/theia-ide/theia/commits/eclipse_foundation_submission

Rebase interactive on the commit immediately before the initial contribution commit: 8a5132e5 [monaco-textmate] Add new Syntax Coloring

git rebase -i 8a5132e

Mark commit "1e3f8dbb [eclipse] prepare the initial contribution" as edit, leave the rest as pick.

image

Add other commits from branch "eclipse_initial_submission":
image

git cherry-pick 1be28c69
git cherry-pick 49cb4dff
git cherry-pick e22ad199
git cherry-pick ab08e019
git cherry-pick 1923f3c0

The commit log should now look like:
image

git rebase --continue

The first time might fail, with a message about a commit being now empty. That's fine. Re-run the command to continue.

Squash together initial contribution and following commit

Then we need to squash-together commits "[eclipse] prepare the initial contribution" and "Removed files that have 3rd party content.", so that we have the initial contribution that we need: (note: the SHAs of all following commits will have changed, after the rebase above.

Rebase interactive on commit immediately followinf the initial contribution: 8a5132e5 [monaco-textmate] Add new Syntax Coloring :

git rebase -i 8a5132e5

Squash the second commit: 6384480d Removed files that have 3rd party content. and keep all the rest:

image

Once done with the rebase, we should have, in master, around the initial contribution:
image

image

Finally, force-push the result to the master branch of the repo.


Issues

  • ATM when I follow the steps above, GH thinks that I am the committer of all rebased commits (correct authorship is preserved) :
    image

Is there another way we could go this that would also preserve who committed each commit? AFAIK this might be un-avoidable, when using rebase like I do here.

According to the accepted SO answer here this only reflects that, for this new repo, I am the one who committed the latest version of these commits.


Links

@marcdumais-work marcdumais-work changed the title [eclipse] Track this repo's move to the "eclipse" GitHub org [eclipse] Track repo's move to the "eclipse" GitHub org Oct 15, 2018
@marcdumais-work marcdumais-work self-assigned this Oct 15, 2018
@marcdumais-work
Copy link
Contributor Author

marcdumais-work commented Nov 16, 2018

Here are the files that we found, that appear to have been copied from vscode. In some cases verbatim, in other cases smaller chunks. See CQ here

Theia VSCode Attribution / license included
core/src/browser/icons/collapse.svg src/vs/base/browser/ui/splitview/arrow-collapse.svg ok
core/src/browser/icons/expand.svg src/vs/base/browser/ui/splitview/arrow-expand.svg ok
debug/src/browser/editor/debug-expression-provider.ts src/vs/workbench/parts/debug/common/debugUtils.ts ok
debug/src/browser/debug-configuration-manager.ts src/vs/workbench/parts/debug/electron-browser/debugEditorContribution.ts ok
debug/src/browser/style/breakpoint-disabled.svg src/vs/workbench/parts/debug/browser/media/breakpoint-disabled.svg ok
debug/src/browser/style/breakpoint-hint.svg src/vs/workbench/parts/debug/browser/media/breakpoint-hint.svg ok
debug/src/browser/style/breakpoints-activate-inverse.svg src/vs/workbench/parts/debug/browser/media/breakpoints-activate-inverse.svg ok
debug/src/browser/style/breakpoints-activate.svg src/vs/workbench/parts/debug/browser/media/breakpoints-activate.svg ok
debug/src/browser/style/breakpoint.svg src/vs/workbench/parts/debug/browser/media/breakpoint.svg ok
debug/src/browser/style/breakpoint-unverified.svg src/vs/workbench/parts/debug/browser/media/breakpoint-unverified.svg ok
debug/src/browser/style/configure-inverse.svg src/vs/workbench/parts/debug/browser/media/configure-inverse.svg ok
debug/src/browser/style/configure.svg src/vs/workbench/parts/debug/browser/media/configure.svg ok
debug/src/browser/style/continue-inverse.svg src/vs/workbench/parts/debug/browser/media/continue-inverse.svg ok
debug/src/browser/style/continue.svg src/vs/workbench/parts/debug/browser/media/continue.svg ok
debug/src/browser/style/current-and-breakpoint.svg src/vs/workbench/parts/debug/browser/media/current-and-breakpoint.svg ok
debug/src/browser/style/current-arrow.svg src/vs/workbench/parts/debug/browser/media/current-arrow.svg ok
debug/src/browser/style/pause-inverse.svg src/vs/workbench/parts/debug/browser/media/pause-inverse.svg ok
debug/src/browser/style/pause.svg src/vs/workbench/parts/debug/browser/media/pause.svg ok
debug/src/browser/style/remove-all-inverse.svg src/vs/workbench/parts/debug/browser/media/remove-all-inverse.svg ok
debug/src/browser/style/remove-all.svg src/vs/workbench/parts/debug/browser/media/remove-all.svg ok
debug/src/browser/style/repl-inverse.svg src/vs/workbench/parts/debug/browser/media/repl-inverse.svg ok
debug/src/browser/style/repl.svg src/vs/workbench/parts/debug/browser/media/repl.svg ok
debug/src/browser/style/restart-inverse.svg src/vs/workbench/parts/debug/browser/media/restart-inverse.svg ok
debug/src/browser/style/restart.svg src/vs/workbench/parts/debug/browser/media/restart.svg ok
debug/src/browser/style/stackframe-and-breakpoint.svg src/vs/workbench/parts/debug/browser/media/stackframe-and-breakpoint.svg ok
debug/src/browser/style/stackframe-arrow.svg src/vs/workbench/parts/debug/browser/media/stackframe-arrow.svg ok
debug/src/browser/style/start-inverse.svg src/vs/workbench/parts/debug/browser/media/start-inverse.svg ok
debug/src/browser/style/start.svg src/vs/workbench/parts/debug/browser/media/start.svg ok
debug/src/browser/style/step-into-inverse.svg src/vs/workbench/parts/debug/browser/media/step-into-inverse.svg ok
debug/src/browser/style/step-into.svg src/vs/workbench/parts/debug/browser/media/step-into.svg ok
debug/src/browser/style/step-out-inverse.svg src/vs/workbench/parts/debug/browser/media/step-out-inverse.svg ok
debug/src/browser/style/step-out.svg src/vs/workbench/parts/debug/browser/media/step-out.svg ok
debug/src/browser/style/step-over-inverse.svg src/vs/workbench/parts/debug/browser/media/step-over-inverse.svg ok
debug/src/browser/style/step-over.svg src/vs/workbench/parts/debug/browser/media/step-over.svg ok
debug/src/browser/style/stop-inverse.svg src/vs/workbench/parts/debug/browser/media/stop-inverse.svg ok
debug/src/browser/style/stop.svg src/vs/workbench/parts/debug/browser/media/stop.svg ok
monaco/data/monaco-themes/vscode/light_vs.json extensions/theme-defaults/themes/light_vs.json no
monaco/data/monaco-themes/vscode/light_plus.json extensions/theme-defaults/themes/light_plus.json no
monaco/data/monaco-themes/vscode/light_defaults.json extensions/theme-defaults/themes/light_defaults.json no
monaco/data/monaco-themes/vscode/dark_vs.json extensions/theme-defaults/themes/dark_vs.json no
monaco/data/monaco-themes/vscode/dark_plus.json extensions/theme-defaults/themes/dark_plus.json no
monaco/data/monaco-themes/vscode/dark_defaults.json extensions/theme-defaults/themes/dark_defaults.json no
python/data/MagicPython.tmLanguage.json extensions/python/syntaxes/MagicPython.tmLanguage.json no
python/data/MagicRegExp.tmLanguage.json extensions/python/syntaxes/MagicRegExp.tmLanguage.json no
textmate-grammars/data/bat.tmLanguage.json extensions/bat/syntaxes/batchfile.tmLanguage.json no
textmate-grammars/data/clojure.tmLanguage.json extensions/clojure/syntaxes/clojure.tmLanguage.json no
textmate-grammars/data/coffeescript.tmLanguage.json extensions/coffeescript/syntaxes/coffeescript.tmLanguage.json no
textmate-grammars/data/css.tmLanguage.json extensions/css/syntaxes/css.tmLanguage.json no
textmate-grammars/data/fsharp.tmLanguage.json extensions/fsharp/syntaxes/fsharp.tmLanguage.json no
textmate-grammars/data/groovy.tmLanguage.json extensions/groovy/syntaxes/groovy.tmLanguage.json no
textmate-grammars/data/handlebars.tmLanguage.json extensions/handlebars/syntaxes/Handlebars.tmLanguage.json no
textmate-grammars/data/hlsl.tmLanguage.json extensions/hlsl/syntaxes/hlsl.tmLanguage.json no
textmate-grammars/data/html.tmLanguage.json extensions/html/syntaxes/html.tmLanguage.json no
textmate-grammars/data/ini.tmLanguage.json extensions/ini/syntaxes/ini.tmLanguage.json no
textmate-grammars/data/less.tmLanguage.json extensions/less/syntaxes/less.tmLanguage.json no
textmate-grammars/data/markdown.tmLanguage.json extensions/markdown-basics/syntaxes/markdown.tmLanguage.json no
textmate-grammars/data/perl.tmLanguage.json extensions/perl/syntaxes/perl.tmLanguage.json no
textmate-grammars/data/powershell.tmLanguage.json extensions/powershell/syntaxes/powershell.tmLanguage.json no
textmate-grammars/data/pug.tmLanguage.json extensions/pug/syntaxes/pug.tmLanguage.json no
textmate-grammars/data/razor.tmLanguage.json extensions/razor/syntaxes/cshtml.tmLanguage.json no
textmate-grammars/data/r.tmLanguage.json extensions/r/syntaxes/r.tmLanguage.json no
textmate-grammars/data/scss.tmLanguage.json extensions/scss/syntaxes/scss.tmLanguage.json no
textmate-grammars/data/shaderlab.tmLanguage.json extensions/shaderlab/syntaxes/shaderlab.tmLanguage.json no
textmate-grammars/data/shell.tmLanguage.json extensions/shellscript/syntaxes/shell-unix-bash.tmLanguage.json no
textmate-grammars/data/sql.tmLanguage.json extensions/sql/syntaxes/sql.tmLanguage.json no
textmate-grammars/data/swift.tmLanguage.json extensions/swift/syntaxes/swift.tmLanguage.json no
textmate-grammars/data/vb.tmLanguage.json extensions/vb/syntaxes/asp-vb-net.tmlanguage.json no
textmate-grammars/data/xml.tmLanguage.json extensions/xml/syntaxes/xml.tmLanguage.json no
textmate-grammars/data/xsl.tmLanguage.json extensions/xml/syntaxes/xsl.tmLanguage.json no
textmate-grammars/data/yaml.tmLanguage.json extensions/yaml/syntaxes/yaml.tmLanguage.json no
typescript/data/snippets/typescript.json extensions/typescript-basics/snippets/typescript.json no
java/data/java.tmlanguage.json extensions/java/syntaxes/java.tmLanguage.json no
json/data/jsonc.tmLanguage.json extensions/json/syntaxes/JSONC.tmLanguage.json no
json/data/json.tmLanguage.json extensions/json/syntaxes/JSON.tmLanguage.json no
typescript/data/grammars/typescript.tsx.tmlanguage.json extensions/typescript-basics/syntaxes/TypeScriptReact.tmLanguage.json no
typescript/data/grammars/javacript.jsx.tmlanguage.json extensions/javascript/syntaxes/JavaScriptReact.tmLanguage.json no
typescript/data/grammars/javascript.tmlanguage.json extensions/javascript/syntaxes/JavaScript.tmLanguage.json no
typescript/data/grammars/typescript.tmlanguage.json extensions/typescript-basics/syntaxes/TypeScript.tmLanguage.json no
cpp/data/cpp.tmLanguage.json extensions/cpp/syntaxes/cpp.tmLanguage.json ok
cpp/data/c.tmLanguage.json extensions/cpp/syntaxes/c.tmLanguage.json ok
cpp/data/platform.tmLanguage.json extensions/cpp/syntaxes/platform.tmLanguage.json ok
cpp/src/browser/cpp-grammar-contribution.ts extensions/cpp/language-configuration.json no
python/src/browser/python-grammar-contribution.ts extensions/python/language-configuration.json no
textmate-grammars/src/browser/bat.ts extensions/bat/language-configuration.json no
textmate-grammars/src/browser/clojure.ts extensions/clojure/language-configuration.json no
textmate-grammars/src/browser/coffeescript.ts extensions/coffeescript/language-configuration.json no
textmate-grammars/src/browser/csharp.ts extensions/csharp/language-configuration.json no
textmate-grammars/src/browser/css.ts extensions/css/language-configuration.json no
textmate-grammars/src/browser/fsharp.ts extensions/fsharp/language-configuration.json no
textmate-grammars/src/browser/groovy.ts extensions/groovy/language-configuration.json no
textmate-grammars/src/browser/handlebars.ts extensions/handlebars/language-configuration.json no
textmate-grammars/src/browser/hlsl.ts extensions/hlsl/language-configuration.json no
textmate-grammars/src/browser/html.ts extensions/html/language-configuration.json no
textmate-grammars/src/browser/ini.ts extensions/ini/ini.language-configuration.json no
textmate-grammars/src/browser/less.ts extensions/less/language-configuration.json no
textmate-grammars/src/browser/lua.ts extensions/lua/language-configuration.json no
textmate-grammars/src/browser/make.ts extensions/make/language-configuration.json no
textmate-grammars/src/browser/markdown.ts extensions/markdown-basics/language-configuration.json no
textmate-grammars/src/browser/objective-c.ts extensions/objective-c/language-configuration.json no
textmate-grammars/src/browser/perl.ts extensions/perl/perl.language-configuration.json no
textmate-grammars/src/browser/powershell.ts extensions/powershell/language-configuration.json no
textmate-grammars/src/browser/pug.ts extensions/pug/language-configuration.json no
textmate-grammars/src/browser/razor.ts extensions/razor/language-configuration.json no
textmate-grammars/src/browser/r.ts extensions/r/language-configuration.json no
textmate-grammars/src/browser/scss.ts extensions/scss/language-configuration.json no
textmate-grammars/src/browser/shaderlab.ts extensions/shaderlab/language-configuration.json no
textmate-grammars/src/browser/shell.ts extensions/shellscript/language-configuration.json no
textmate-grammars/src/browser/sql.ts extensions/sql/language-configuration.json no
textmate-grammars/src/browser/swift.ts extensions/swift/language-configuration.json no
textmate-grammars/src/browser/vb.ts extensions/vb/language-configuration.json no
textmate-grammars/src/browser/xml.ts extensions/xml/xml.language-configuration.json no
textmate-grammars/src/browser/xsl.ts extensions/xml/xsl.language-configuration.json no
filesystem/src/browser/file-dialog/file-dialog.ts src/vs/vscode.d.ts no
monaco/src/browser/monaco-quick-input-service.ts src/vs/vscode.d.ts no
plugin-ext/src/api/plugin-api.ts src/vs/vscode.d.ts no
debug/src/node/debug-model.ts src/vs/vscode.d.ts
plugin-ext/src/common/paths.ts src/vs/base/common/paths.ts yes
plugin-ext/src/typings/monaco/index.d.ts src/vs/editor/common/editorCommon.ts no
plugin-ext/src/common/strings.ts src/vs/base/common/strings.ts yes
plugin-ext/src/common/disposable-util.ts src/vs/base/common/lifecycle.ts no
plugin-ext/src/common/object-identifier.ts src/vs/workbench/api/node/extHost.protocol.ts no
plugin-ext/src/common/glob.ts src/vs/base/common/glob.ts yes
plugin-ext/src/common/char-code.ts src/vs/base/common/charCode.ts yes
plugin-ext/src/hosted/node/scanners/scanner-theia.ts src/vs/workbench/parts/codeEditor/electron-browser/languageConfiguration/languageConfigurationExtensionPoint.ts no
plugin-ext/src/main/browser/text-editor-main.ts src/vs/workbench/api/electron-browser/mainThreadEditor.ts no
plugin-ext/src/main/browser/editors-and-documents-main.ts src/vs/workbench/api/electron-browser/mainThreadDocumentsAndEditors.ts no
plugin-ext/src/plugin/markdown-string.ts src/vs/workbench/api/node/extHostTypes.ts no
plugin-ext/src/plugin/types-impl.ts src/vs/workbench/api/node/extHostTypes.ts no
plugin-ext/src/api/model.ts src/vs/editor/common/modes.ts no
plugin-ext/src/api/rpc-protocol.ts src/vs/base/common/errors.ts yes
plugin-ext/src/plugin/prefix-sum-computer.ts src/vs/editor/common/viewModel/prefixSumComputer.ts yes
plugin-ext/src/plugin/word-helper.ts src/vs/editor/common/model/wordHelper.ts yes
plugin-ext/src/plugin/text-editor.ts src/vs/workbench/api/node/extHostTextEditor.ts no
plugin-ext/src/plugin/languages/completion.ts src/vs/workbench/api/node/extHostLanguageFeatures.ts no
plugin-ext/src/plugin/status-bar/status-bar-item.ts src/vs/workbench/api/node/extHostStatusBar.ts no
plugin-ext/src/plugin/document-data.ts src/vs/workbench/api/node/extHostDocumentData.ts no
plugin-ext/src/plugin/type-converters.ts src/vs/workbench/api/node/extHostTypeConverters.ts no
editor/src/browser/editor.ts src/vs/monaco.d.ts no
debug/src/browser/debug-monaco-contribution.ts extensions/configuration-editing/src/extension.ts yes
core/src/common/json-schema.ts src/vs/base/common/jsonSchema.ts yes

@marcdumais-work
Copy link
Contributor Author

Files found copied from wjordan/browser-path

CQ here

Theia wjordan/browser-path Attribution / license included
plugin-ext/src/common/paths-util.ts plugin-ext/src/common/paths-util.ts yes

@marcdumais-work
Copy link
Contributor Author

Files copied from Microsoft/vscode-debugadapter-node

CQ here

Theia vscode-debugadapter-node Attribution / license included
debug/src/node/debug-adapter.ts adapter/src/protocol.ts yes

@marcdumais-work
Copy link
Contributor Author

Files copied from TypeFox/monaco-languageclient

CQ here

Theia Monaco-languageclient Attribution / license included
plugin-ext/src/main/browser/languages-main.ts src/languages.ts no

@marcdumais-work
Copy link
Contributor Author

marcdumais-work commented Nov 23, 2018

Files copied from desktop/dugite

CQ here

Theia dugite Attribution / license included
git/src/common/git-model.ts lib/errors.ts no
git/src/common/git.ts lib/git-process.ts no

@marcdumais-work
Copy link
Contributor Author

Files copied from textmate/tcl.tmbundle

CQ here

Theia textmate/tcl.tmbundle Attribution / license included
textmate-grammars/data/Tcl.Plist Syntaxes/Tcl.plist yes

@akosyakov
Copy link
Member

akosyakov commented Nov 29, 2018

@vince-fugnitto vince-fugnitto added the eclipse issues related to eclipse / eclipse foundation label Oct 29, 2019
@vince-fugnitto
Copy link
Member

I believe it can be closed thanks to the move :)
We can always re-open in the future if the need ever arises.
I added the eclipse label to facilitate finding such issues again easily.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
eclipse issues related to eclipse / eclipse foundation
Projects
None yet
Development

No branches or pull requests

3 participants