From 98fe425b452bd8e8084a8f34c9848dfafe47f6b3 Mon Sep 17 00:00:00 2001 From: Jorit de Weerdt Date: Mon, 30 May 2022 13:51:20 +0200 Subject: [PATCH 1/6] updatede readme --- code4me-server/markdowns/index.md | 27 +++++++++++++++------------ 1 file changed, 15 insertions(+), 12 deletions(-) diff --git a/code4me-server/markdowns/index.md b/code4me-server/markdowns/index.md index 4c83a3b..992d4be 100644 --- a/code4me-server/markdowns/index.md +++ b/code4me-server/markdowns/index.md @@ -1,25 +1,28 @@ # Code4Me -**Code4Me** is a plugin that autocompletes code in a TU Delft research project for the CSE3000 course given in the Computer Science and Engineering bachelor. -This study focuses on the usefulness of various statement completion language models in a real-world setting. +Code4Me provides language model based code completion. Code4Me predicts statement (line) completion and is available for both Jetbrains and Visual Studio Code. The code suggestions from Code4Me can be recognised by the logo in the suggestion menu. Code4Me triggers (on specific trigger characters) automatically or it can be prompted manually by pressing the keybind. This keybind differs per IDE. -The plugin autocompletes on trigger characters, and a keybind which will trigger the autocompletion wherever you want. +Code4Me does not hinder native auto completion or other extensions. For more information, visit the Code4Me website. ## Installation -We have developed IDE plugins for the following two major IDEs: +The plugin is available on both marketplaces. You can download them by either clicking the link in your browser or looking up 'Code4Me' in the integrated marketplace of your IDE. ### JetBrains The Code4Me plugin can be found in the [JetBrains Marketplace](https://plugins.jetbrains.com/plugin/19200-code4me). ### VSC -TODO +The Code4Me plugin can be found in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Code4Me.code4me-plugin). ## Data Collection -The plugin works with a remote API, which requires us to send (parts) of the currently opened file to our backend server, in order to suggest autocompletions. -However, we do not store any of this information server-side, it is purely used for generating an autocompletion. -After this request the server will return a prediction to the client. -The prediction made by the model (the completion of the line) is stored on the server. -In the plugin we track the position of the completion which allows us to send the ground truth (possibly changed version of the prediction) back to the server after 30 seconds. -The ground truth is stored and compared to the initial prediction using different evaluation metrics to evaluate the autocompletion model. +The plugin works with a remote API in order to suggest autocompletions. After this request the server will return a prediction to the client. The remote API requires a segment of the 2048 characters. Thus this limited segment is sent to the TU Delft backend server. We do not store the entire segment. The inserted line is tracked over the course of 30 seconds and then returned to the server and then stored. This line has to be stored to use different evaluation metrics to properly asses the autocompletion model. + +The plugin does not collect personal data nor the full segment sent. The plugin does collect the following data: + +* Suggest insertion. +* Verification of the insertion. + * The plugin tracks the line the code was inserted and sends that line to the server after a timeout. +* Inference time of completion. + +Furthermore, Code4Me is in full compliance with the GDPR and all data is anonymous. The data collected will remain on the servers of TU Delft until the end of the bachelor thesis. By using Code4Me you give permission for the data collection. ## Source Code -The source code for the IDE plugins and the API webserver can be found at our GitHub [repository](https://github.com/code4me-me/code4me). +The source code for the IDE plugins and the API webserver can be found at our GitHub [repository](https://github.com/code4me-me/code4me). \ No newline at end of file From 5203e0c9528185fbf3523325fd7b7d3f34cbcf91 Mon Sep 17 00:00:00 2001 From: Jorit de Weerdt Date: Mon, 30 May 2022 13:54:47 +0200 Subject: [PATCH 2/6] remove recursive mention to the website --- code4me-server/markdowns/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code4me-server/markdowns/index.md b/code4me-server/markdowns/index.md index 992d4be..1fb1794 100644 --- a/code4me-server/markdowns/index.md +++ b/code4me-server/markdowns/index.md @@ -1,7 +1,7 @@ # Code4Me Code4Me provides language model based code completion. Code4Me predicts statement (line) completion and is available for both Jetbrains and Visual Studio Code. The code suggestions from Code4Me can be recognised by the logo in the suggestion menu. Code4Me triggers (on specific trigger characters) automatically or it can be prompted manually by pressing the keybind. This keybind differs per IDE. -Code4Me does not hinder native auto completion or other extensions. For more information, visit the Code4Me website. +Code4Me does not hinder native auto completion or other extensions. ## Installation The plugin is available on both marketplaces. You can download them by either clicking the link in your browser or looking up 'Code4Me' in the integrated marketplace of your IDE. From 30ca1f0f18d052bd8fd43a24c85ef771bd767a71 Mon Sep 17 00:00:00 2001 From: Jorit de Weerdt Date: Mon, 30 May 2022 15:24:22 +0200 Subject: [PATCH 3/6] Update code4me-server/markdowns/index.md Co-authored-by: Frank van der Heijden --- code4me-server/markdowns/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code4me-server/markdowns/index.md b/code4me-server/markdowns/index.md index 1fb1794..90e6260 100644 --- a/code4me-server/markdowns/index.md +++ b/code4me-server/markdowns/index.md @@ -22,7 +22,7 @@ The plugin does not collect personal data nor the full segment sent. The plugin * The plugin tracks the line the code was inserted and sends that line to the server after a timeout. * Inference time of completion. -Furthermore, Code4Me is in full compliance with the GDPR and all data is anonymous. The data collected will remain on the servers of TU Delft until the end of the bachelor thesis. By using Code4Me you give permission for the data collection. +Furthermore, Code4Me is in full compliance with the GDPR and all data is anonymous. The data collected will remain on the servers of TU Delft until the end of the study. By using Code4Me you give permission for the data collection. ## Source Code The source code for the IDE plugins and the API webserver can be found at our GitHub [repository](https://github.com/code4me-me/code4me). \ No newline at end of file From de8f5ac164cbb1d1ee9e6006605aff47d438aa24 Mon Sep 17 00:00:00 2001 From: Jorit de Weerdt Date: Mon, 30 May 2022 16:08:37 +0200 Subject: [PATCH 4/6] Update code4me-server/markdowns/index.md Co-authored-by: Frank van der Heijden --- code4me-server/markdowns/index.md | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/code4me-server/markdowns/index.md b/code4me-server/markdowns/index.md index 90e6260..699d563 100644 --- a/code4me-server/markdowns/index.md +++ b/code4me-server/markdowns/index.md @@ -13,7 +13,8 @@ The Code4Me plugin can be found in the [JetBrains Marketplace](https://plugins.j The Code4Me plugin can be found in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Code4Me.code4me-plugin). ## Data Collection -The plugin works with a remote API in order to suggest autocompletions. After this request the server will return a prediction to the client. The remote API requires a segment of the 2048 characters. Thus this limited segment is sent to the TU Delft backend server. We do not store the entire segment. The inserted line is tracked over the course of 30 seconds and then returned to the server and then stored. This line has to be stored to use different evaluation metrics to properly asses the autocompletion model. +The plugin works with a remote API in order to suggest autocompletions. After triggering the autocompletion (automatically or manually), the client's request is sent to the server. Running the ML-based model, the server returns a prediction in response to the client. The remote API requires a segment of the current document (close left context at the trigger point). This limited segment is sent to the backend server only for prediction and will not be stored on our server. +For the purpose of evaluating the models' predictions, we only store the suggestion made by the ML-based models at each trigger point and compare it against the accepted prediction by users (collected after 30 seconds). The plugin does not collect personal data nor the full segment sent. The plugin does collect the following data: From aad671d649e5c09c57d78fe807e29aad03666073 Mon Sep 17 00:00:00 2001 From: Jorit de Weerdt Date: Mon, 30 May 2022 16:10:06 +0200 Subject: [PATCH 5/6] various readme changes --- code4me-server/markdowns/index.md | 15 +++++++++------ 1 file changed, 9 insertions(+), 6 deletions(-) diff --git a/code4me-server/markdowns/index.md b/code4me-server/markdowns/index.md index 1fb1794..1f52d45 100644 --- a/code4me-server/markdowns/index.md +++ b/code4me-server/markdowns/index.md @@ -1,5 +1,8 @@ # Code4Me -Code4Me provides language model based code completion. Code4Me predicts statement (line) completion and is available for both Jetbrains and Visual Studio Code. The code suggestions from Code4Me can be recognised by the logo in the suggestion menu. Code4Me triggers (on specific trigger characters) automatically or it can be prompted manually by pressing the keybind. This keybind differs per IDE. +Code4Me provides automatic intelligent code completion based on large pre-trained language models. Code4Me predicts statement (line) completion and is available for both PyCharm (also other JetBrains IDEs) and Visual Studio Code. The code suggestions from Code4Me can be recognised by the logo in the suggestion menu. Code4Me automatically triggers (on specific trigger characters) or the user can prompt it manually by pressing the keybind. The keybind differs per IDE: + +- Jetbrains: **ALT + SHIFT + K** +- VSC: **CTRL + SPACE** Code4Me does not hinder native auto completion or other extensions. @@ -13,13 +16,13 @@ The Code4Me plugin can be found in the [JetBrains Marketplace](https://plugins.j The Code4Me plugin can be found in the [Visual Studio Code Marketplace](https://marketplace.visualstudio.com/items?itemName=Code4Me.code4me-plugin). ## Data Collection -The plugin works with a remote API in order to suggest autocompletions. After this request the server will return a prediction to the client. The remote API requires a segment of the 2048 characters. Thus this limited segment is sent to the TU Delft backend server. We do not store the entire segment. The inserted line is tracked over the course of 30 seconds and then returned to the server and then stored. This line has to be stored to use different evaluation metrics to properly asses the autocompletion model. +The plugin works with a remote API in order to suggest autocompletions. After this request the server will return a prediction to the client. The remote API requires a segment of 2048 characters. Thus this limited segment is sent to the TU Delft backend server. We do not store the entire segment. The inserted line is tracked over the course of 30 seconds and then returned to the server and then stored. This line has to be stored to use different evaluation metrics to properly asses the autocompletion model. -The plugin does not collect personal data nor the full segment sent. The plugin does collect the following data: +The plugin does not collect personal data nor the segment sent. The plugin does collect the following data: -* Suggest insertion. -* Verification of the insertion. - * The plugin tracks the line the code was inserted and sends that line to the server after a timeout. +* Suggest autocompletion. +* Verification of the autocompletion. + * The plugin tracks the line the code was inserted and sends that line to the server after 30 seconds. * Inference time of completion. Furthermore, Code4Me is in full compliance with the GDPR and all data is anonymous. The data collected will remain on the servers of TU Delft until the end of the bachelor thesis. By using Code4Me you give permission for the data collection. From 12f67c9e38419800d2b1866f5b56c2fc0bb43438 Mon Sep 17 00:00:00 2001 From: Jorit de Weerdt Date: Mon, 30 May 2022 16:16:38 +0200 Subject: [PATCH 6/6] typo --- code4me-server/markdowns/index.md | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/code4me-server/markdowns/index.md b/code4me-server/markdowns/index.md index 5ffdfa0..e36c8c9 100644 --- a/code4me-server/markdowns/index.md +++ b/code4me-server/markdowns/index.md @@ -21,7 +21,7 @@ For the purpose of evaluating the models' predictions, we only store the suggest The plugin does not collect personal data nor the segment sent. The plugin does collect the following data: -* Suggest autocompletion. +* Suggested autocompletion. * Verification of the autocompletion. * The plugin tracks the line the code was inserted and sends that line to the server after 30 seconds. * Inference time of completion.