Skip to content

Commit

Permalink
website & readme
Browse files Browse the repository at this point in the history
  • Loading branch information
TTangNingzhi committed Dec 27, 2023
1 parent d624fb9 commit cd802a1
Show file tree
Hide file tree
Showing 25 changed files with 995 additions and 185 deletions.
28 changes: 27 additions & 1 deletion .idea/workspace.xml

Some generated files are not rendered by default. Learn more about how customized files appear on GitHub.

21 changes: 21 additions & 0 deletions LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2023 SaNDwich Lab

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
76 changes: 59 additions & 17 deletions README.md
Original file line number Diff line number Diff line change
@@ -1,26 +1,68 @@
# Getting Started
# CodeGRITS

## What is CodeGRITS?
[[Website]](https://codegrits.github.io/CodeGRITS/) [[Paper]](https://arxiv.org/abs/xxxx.yyyyy) [[Demo Video]](https://www.youtube.com/watch?v=d-YsJfW2NMI)

CodeGRITS stands for **G**aze **R**ecording & **I**DE **T**racking **S**ystem, which is a plugin specifically designed
for empirical software engineering (SE) researchers. CodeGRITS is built on top of IntelliJ’s SDK, with wide
compatibility with the entire family of JetBrains IDEs to track developers’ IDE interactions and eye gaze data.
[CodeGRITS](https://codegrits.github.io/CodeGRITS/) stands for **G**aze **R**ecording & **I**DE **T**racking **S**ystem,
which is a plugin specifically designed
for software engineering (SE) researchers, which is developed by the [SaNDwich Lab](https://toby.li/) at the
[University of Notre Dame](https://www.nd.edu/). CodeGRITS is built on top
of [IntelliJ Platform SDK](https://plugins.jetbrains.com/docs/intellij/welcome.html), with wide compatibility with the
entire family of [JetBrains IDEs](https://www.jetbrains.com/) and [Tobii eye-tracking devices](https://www.tobii.com/),
to track developers’ IDE interactions and eye gaze data.

<p align="center">
<img src="./docs/imgs/overview.png" width="600">
</p>

The data collected by CodeGRITS can be used by empirical SE researchers to understand the behaviors of developers,
especially those related to eye gaze. CodeGRITS also provides a [real-time data API](developer.md)
for future plugin developers and researchers to design context-aware programming support tools.

## Key Features

- **Gaze and IDE Recording**: CodeGRITS tracks developers’ IDE interactions and eye gaze data for further understanding
their behaviors.
- **Screen Recording**: CodeGRITS simultaneously records developers’ screen for visualizing their behaviors.
- **Research Toolkit**: CodeGRITS provides a set of extra features for empirical SE
researchers, including dynamic configuration, activity labeling, etc.
- **Data Export**: CodeGRITS exports data in XML format for further analysis.
- **Real-time Data API**: CodeGRITS provides real-time data API for further
development.
- **Cross-platform**: CodeGRITS provides cross-platform support for Windows, macOS,
and Linux, and is compatible with the entire family of JetBrains IDEs (e.g., IntelliJ IDEA, PyCharm, PhpStorm, etc.).
- **Multilingual Support**: CodeGRITS could extract the abstract syntax tree (AST) structure of eye gazes on multiple
programming languages, including Java, Python, C/C++, JavaScript, etc.
- 🔍 **IDE Tracking**: CodeGRITS tracks developers’ IDE interactions, including mouse clicks, keyboard inputs, etc.
- 👁️ **Eye Tracking**: CodeGRITS tracks developers’ eye gaze data
from [Tobii eye-tracking devices](https://www.tobii.com/), and mapping them to corresponding source code elements.
- 💻 **Screen Recording**: CodeGRITS simultaneously records developers’ screen for visualizing their behaviors.
- 🔨 **Research Toolkit**: CodeGRITS provides a set of extra features for empirical SE
researchers, including dynamic configuration, activity labeling, real-time data API, etc.
- 🗃️ **Data Export**: CodeGRITS exports data in XML format for further data analysis. See [Data Format](data.md)
for more details.

### Cross-platform and Multilingual Support

- [x] CodeGRITS provides cross-platform support for Windows, macOS,
and Linux, and is expected to be compatible with the entire family of JetBrains IDEs, including IntelliJ IDEA,
PyCharm, WebStorm, etc.
- [x] CodeGRITS could extract the abstract syntax tree (AST) structure of eye gazes on multiple
programming languages, as long as the IDE supports them, including Java, Python, C/C++, JavaScript, etc.

## Usage Guide

Please see the [CodeGRITS website](https://codegrits.github.io/CodeGRITS/) for more details.

## Citation

[//]: # (TODO: Update the citation and PDF link after the paper is published.)

The paper of CodeGRITS has been accepted
by [ICSE 2024 Demonstrations Track](https://conf.researchr.org/track/icse-2024/icse-2024-demonstrations).
The PDF version is available [here](https://arxiv.org/abs/xxxx.yyyyy).
The [video demonstration](https://www.youtube.com/watch?v=d-YsJfW2NMI) is available on YouTube.

Please cite the following if you use CodeGRITS in your research.

```bibtex
@inproceedings{tang2024codegrits,
title={CodeGRITS: A Research Toolkit for Developer Behavior and Eye Tracking in IDE},
author={Tang, Ningzhi and An, Junwen and Chen, Meng and Bansal, Aakash and Huang, Yu and McMillan, Collin and Li, Toby Jia-Jun},
booktitle={46th International Conference on Software Engineering Companion (ICSE-Companion '24)},
year={2024},
organization={ACM}
}
```

## Contact us

Please feel free to contact Ningzhi Tang at [email protected] or Junwen An at [email protected]
if you have any questions or suggestions.
8 changes: 4 additions & 4 deletions build.gradle.kts
Original file line number Diff line number Diff line change
Expand Up @@ -25,13 +25,13 @@ dependencies {
intellij {
version.set("2023.1.4")

type.set("IC") // IntelliJ Community Edition
// type.set("IC") // IntelliJ Community Edition
// type.set("IU") // IntelliJ Ultimate Edition
plugins.set(listOf("com.intellij.java"))
// plugins.set(listOf("com.intellij.java"))

// type.set("PC") // PyCharm Community Edition
type.set("PC") // PyCharm Community Edition
// type.set("PY") // PyCharm Professional Edition
// plugins.set(listOf("PythonCore"))
plugins.set(listOf("PythonCore"))

// type.set("CL") // CLion

Expand Down
21 changes: 21 additions & 0 deletions docs/LICENSE
Original file line number Diff line number Diff line change
@@ -0,0 +1,21 @@
MIT License

Copyright (c) 2023 SaNDwich Lab

Permission is hereby granted, free of charge, to any person obtaining a copy
of this software and associated documentation files (the "Software"), to deal
in the Software without restriction, including without limitation the rights
to use, copy, modify, merge, publish, distribute, sublicense, and/or sell
copies of the Software, and to permit persons to whom the Software is
furnished to do so, subject to the following conditions:

The above copyright notice and this permission notice shall be included in all
copies or substantial portions of the Software.

THE SOFTWARE IS PROVIDED *AS IS*, WITHOUT WARRANTY OF ANY KIND, EXPRESS OR
IMPLIED, INCLUDING BUT NOT LIMITED TO THE WARRANTIES OF MERCHANTABILITY,
FITNESS FOR A PARTICULAR PURPOSE AND NONINFRINGEMENT. IN NO EVENT SHALL THE
AUTHORS OR COPYRIGHT HOLDERS BE LIABLE FOR ANY CLAIM, DAMAGES OR OTHER
LIABILITY, WHETHER IN AN ACTION OF CONTRACT, TORT OR OTHERWISE, ARISING FROM,
OUT OF OR IN CONNECTION WITH THE SOFTWARE OR THE USE OR OTHER DEALINGS IN THE
SOFTWARE.
40 changes: 40 additions & 0 deletions docs/about.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,40 @@
---
layout: page
---

# About

[CodeGRITS](https://codegrits.github.io/CodeGRITS/) is professionally built and supported by a small dedicated team of
HCI/SE researchers from [SaNDwich Lab](https://toby.li/) at the [University of Notre Dame](https://www.nd.edu/). We are
committed to keeping CodeGRITS open source and making it beneficial for the community.

Technical support questions, bug reports, and feature requests are best started as
an [GitHub Issue](https://github.com/codegrits/CodeGRITS/issues).

## Credits

CodeGRITS would not be possible without the following commercial and open source projects:

- [IntelliJ Platform SDK](https://plugins.jetbrains.com/docs/intellij/welcome.html): CodeGRITS is built on top of the
IntelliJ Platform.
- [Tobii Pro SDK](https://www.tobii.com/products/software/applications-and-developer-kits/tobii-pro-sdk/): CodeGRITS
uses the Tobii Pro SDK to collect eye gaze data from Tobii eye-tracking devices.
- [ReType](https://retype.com/): CodeGRITS documentation is built with Retype.
- [JavaCV](http://bytedeco.org/): CodeGRITS uses JavaCV to implement the screen recorder.

Special thanks to the [iTrace](https://www.i-trace.org/) team. iTrace is a similar tool to CodeGRITS for collecting
developers' eye gaze data in several IDEs, including Eclipse, Visual Studio, and Atom. We have learned a lot from their
work and referred to part of their code. Different from iTrace, CodeGRITS is built for JetBrains IDEs and provides a
set of extra functionalities (e.g., IDE tracking, screen recording, etc.) for empirical SE researchers.

## License

Please see the CodeGRITS [LICENSE](LICENSE).

## Contact us

Please feel free to contact us anytime if you have any questions or suggestions.

- Email the developers [Ningzhi Tang](https://nztang.com/) at [email protected]
or [Junwen An](https://wanteatfruit.github.io/) at [email protected].
- Start a [GitHub Issue](https://github.com/codegrits/CodeGRITS/issues).
53 changes: 0 additions & 53 deletions docs/api-reference.md

This file was deleted.

41 changes: 41 additions & 0 deletions docs/changelog.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,41 @@
---
icon: log
order: 60
---

# Changelog

!!!
Encountered a bug or have a suggestion? Please create a [GitHub Issue](https://github.com/codegrits/CodeGRITS/issues).
!!!

## v0.2.0 [!badge text="LATEST" variant="info"]

Released on 2023-12-28.

+++ New :icon-shield-check:

- [x] Improve the implementation of Screen Recorder from [JCodec](http://jcodec.org/index.html)
to [JavaCV](http://bytedeco.org/).
- [x] Initial pre-mature release for CodeGRITS.
+++

+++ Improved :icon-thumbsup:
- [x] Fix the color distortion and the missing cursor issues of the screen recorder.
- [x] Fix several issues about the naming.
- [x] Add the logo of CodeGRITS.
+++

---

## v0.1.0

Released on 2023-11-30.

+++ New :icon-shield-check:

- [x] Release for ICSE 2024 Demo review.
+++

---

31 changes: 0 additions & 31 deletions docs/citation.md

This file was deleted.

Loading

0 comments on commit cd802a1

Please sign in to comment.