diff --git a/Google-Summer-of-Code-2023-Ideas.md b/Google-Summer-of-Code-2023-Ideas.md index b04ea88..58ac5fb 100644 --- a/Google-Summer-of-Code-2023-Ideas.md +++ b/Google-Summer-of-Code-2023-Ideas.md @@ -47,18 +47,48 @@ These are tasks you can work on. You can combine any number of tasks, so they ad ## Vorta -### Implement exclude GUI -**Difficulty**: Medium-hard
-**Length**: 175 hours
-**Skills required**: Python, Qt, Unix desktop
-**Description**: Currently users exclude files by adding text rules, like `/tmp/cache/*.tmp`. It is often confusing and we'd like to add a GUI, as well as pre-defined rules for it. E.g. one could choose to exclude common macOS cache files.
+### Remove Paramiko dependency +**Difficulty**: Easy
+**Length**: 25 hours
+**Skills required**: Python, Unix, OpenSSH
+**Description**: It's easy to add a dependency but hard to remove it. We found that it's not really essential for our application to parse each SSH key a user has. So this task would remove Paramiko and just do a rudimentary check to see if a file is a private SSH key.
**Task outline**: -Create a list of sensible default files to exclude. -Possibly grouped, so users can choose to enable parts of them. -Decide on way to store exclusions. -Do mockup of GUI (partly done). -Implement as Qt UI file. Implement parsing exclusion rules to Borg input.
-**Additional details**: See [this issue](https://github.com/borgbase/vorta/issues/907) for discussions about the GUI part and [here](https://github.com/borgbase/vorta/issues/907#issuecomment-1282309557) for suggested exclusion rules.
+Research and confirm the format of OpenSSH keys. +Build a function to identify one, given a file path. +Replace usage of Paramiko with this function. +Also includes test cases for all steps.
+**Additional details**: See [this issue](https://github.com/borgbase/vorta/issues/1559)
+**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] + +### Enhance archive table and archive actions +**Difficulty**: Easy
+**Length**: 50 hours
+**Skills required**: Python, Qt
+**Description**: Vorta comprises a table listing the archives in a borg repository. There also is a button for renaming the selected archive in another dialog. This task should implement the capability to edit the archive name inline (in the table cell) without having to open another dialog. This task should also add a column showing whether an archive was created by the user manually or by the scheduler. Beneath the archive table there is a `compact` button running `borg compact`. However this borg feature is only available since borg v1.2. The button must therefore be hidden from the GUI when using earlier borg versions. There is also a button for refreshing the selected archive data from the repository. This button should work when selecting multiple archives too. Vorta allows mounting a selected archive. Implement the option to copy the mount location to the clipboard, open the file manager at the mount location and a setting for doing that automatically after mounting. +Currently the user has to select a folder to mount to. This can be very time consuming. This task should also add the possibility to 'quick mount' a repository into a temporary directory created by vorta.
+**Task outline**: +Add additional column to the archive table. +Implement edit functionality. +Hide `compact` button for borg versions <1.2. +Implement refreshing multiple archives. +Implement copying mount path to the clipboard. +Implement opening the mount location in default file explorer. +Implement automatically opening mount location (+ corresponding setting). +Implement quick mount action.
+**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] + + +### Search a file in diff and extract view +**Difficulty**: Easy
+**Length**: 100 hours
+**Skills required**: Python, Qt
+**Description**: Vorta has a feature for comparing two archives (backup snapshots) and a feature for extracting specific files from an archive. The dialogs of these are very similiar. They are comprised of a list of files and some view modes options.
+This task adds the option to filter the files shown through a search bar. At first one should be able to search for files containing the string entered but advanced search options like filtering by file size or other attributes could be implemented as well.
+**Task outline**: +Plan out how the search bar should work and how it would fit into the existing GUI. +Implement the search functionality in the backend (FileItemModel). +Implement the GUI addition. +Write unittests for the added code.
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] ### Error handling and report dialog/wizard @@ -77,22 +107,9 @@ Do the coding needed to make the GUI functional. Adjust the existing vorta code to use/work with the new dialog.
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] -### Remove Paramiko dependency -**Difficulty**: Easy
-**Length**: 25 hours
-**Skills required**: Python, Unix, OpenSSH
-**Description**: It's easy to add a dependency but hard to remove it. We found that it's not really essential for our application to parse each SSH key a user has. So this task would remove Paramiko and just do a rudimentary check to see if a file is a private SSH key.
-**Task outline**: -Research and confirm the format of OpenSSH keys. -Build a function to identify one, given a file path. -Replace usage of Paramiko with this function. -Also includes test cases for all steps.
-**Additional details**: See [this issue](https://github.com/borgbase/vorta/issues/1559)
-**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] - ### Improve Test Coverage **Difficulty**: Medium
-**Length**: 90 hours
+**Length**: 100 hours
**Skills required**: Python, Pytest
**Description**: It's fun to add new features, but the actual work is maintaining them over time, as the code around it changes. This task would aim to increase the coverage output by the `coverage` tool from ~65% to ~80% by cleaning up existing tests, using parameterization and adding more unit tests (as opposed to higher-level integration tests we use now).
**Task outline**: @@ -101,14 +118,17 @@ Analyse the test coverage and determine which additional tests are needed. Then use consistent file naming for existing tests and add missing tests (especially unit tests).
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] -### Test on live Borg binary -**Difficulty**: Medium
-**Length**: 100-175 hours
-**Skills required**: Python, Unix, Shell
-**Description**: Currently we test on static mock files of Borg JSON output. That means our tests don't actually run Borg, but take some existing output. This is not optimal because we already support 3 major Borg versions and can only add mock files for one. This task would improve testing to run on multiple actual Borg versions/binaries.
+### Implement summary line for table in source view +**Difficulty**: Medium-hard
+**Length**: 100 hours
+**Skills required**: Python, Qt, (basic reading C++)
+**Description**: The user can configure backup sources in vorta like files or directories. These sources are displayed in a table including information about their size and number of files. We would like the table to have a summary line showing the sum of all sources for these fields. This task will require you to dig deep into Qt documentation and possibly Qt source code to find a way of implementing a summary line since such a thing isn't supported by Qt out of the box.
**Task outline**: -Research how to create multiple environments with different borg versions to run tests in. This might work differently in the CI (on the server) and local developer machines. -Build a testing utility that can run the existing Vorta tests on multiple versions of Borg. (You can use a tool like Tox or write your own script.)
+Research writing custom Qt widgets and extending (subclassing) existing ones. +Research a way to extend QTableView for showing a summary line. +Implement summary line. +Use custom TableView in the GUI.
+**Additional details**: See discussion [#1231](https://github.com/borgbase/vorta/discussions/1231)
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] ### Run backups as root @@ -123,6 +143,25 @@ Implement support for root backups.
**Additional details**: See issues [#801](https://github.com/borgbase/vorta/discussions/801) and [#1482](https://github.com/borgbase/vorta/issues/1482)
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu] +### Test on live Borg binary +**Difficulty**: Medium
+**Length**: 100-175 hours
+**Skills required**: Python, Unix, Shell
+**Description**: Currently we test on static mock files of Borg JSON output. That means our tests don't actually run Borg, but take some existing output. This is not optimal because we already support 3 major Borg versions and can only add mock files for one. This task would improve testing to run on multiple actual Borg versions/binaries.
+**Task outline**: +Research how to create multiple environments with different borg versions to run tests in. This might work differently in the CI (on the server) and local developer machines. +Build a testing utility that can run the existing Vorta tests on multiple versions of Borg. (You can use a tool like Tox or write your own script.)
+**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] + +### Add a log viewer / analyser +**Difficulty**: Medium
+**Length**: 125-150 hours
+**Skills required**: Python, Qt
+**Description**: Currently Vorta just shows 0, 1 or 2 to inform about borg's return code and users have to wonder about what that could mean. It needs to offer a borg log file view, so that users can find more information about problems and also about successful runs. The log file view could colour the log lines according to their log level (e.g. display ERROR in red). A more advanced log line highlighter would be even better. The log viewer should also allowing filtering log lines by application session, borg command and other attributes.
+**Task outline**: Plan out how the log file viewer would integrate into the existing GUI. Plan out how the log file viewer should work from a user perspective. Draw a GUI mockup. Implement the GUI as a Qt UI file. Implement the logic of the new dialog. Implement filtering logs. Implement log syntax highlighting. Write unittests throughtout the process.
+**Additional details**: See issue [#1483](https://github.com/borgbase/vorta/issues/1483)
+**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] + ### Implement profile sidebar **Difficulty**: Medium
**Length**: 125-175 hours
@@ -162,30 +201,18 @@ Write documentation for this feature describing how to use it and how it works f [379]: https://github.com/borgbase/vorta/issues/379 -### Search a file in diff and extract view -**Difficulty**: Easy
-**Length**: 100 hours
-**Skills required**: Python, Qt
-**Description**: Vorta has a feature for comparing two archives (backup snapshots) and a feature for extracting specific files from an archive. The dialogs of these are very similiar. They are comprised of a list of files and some view modes options.
-This task adds the option to filter the files shown through a search bar. At first one should be able to search for files containing the string entered but advanced search options like filtering by file size or other attributes could be implemented as well.
-**Task outline**: -Plan out how the search bar should work and how it would fit into the existing GUI. -Implement the search functionality in the backend (FileItemModel). -Implement the GUI addition. -Write unittests for the added code.
-**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] - -### Implement summary line for table in source view +### Implement exclude GUI **Difficulty**: Medium-hard
-**Length**: 100 hours
-**Skills required**: Python, Qt, (basic reading C++)
-**Description**: The user can configure backup sources in vorta like files or directories. These sources are displayed in a table including information about their size and number of files. We would like the table to have a summary line showing the sum of all sources for these fields. This task will require you to dig deep into Qt documentation and possibly Qt source code to find a way of implementing a summary line since such a thing isn't supported by Qt out of the box.
+**Length**: 175 hours
+**Skills required**: Python, Qt, Unix desktop
+**Description**: Currently users exclude files by adding text rules, like `/tmp/cache/*.tmp`. It is often confusing and we'd like to add a GUI, as well as pre-defined rules for it. E.g. one could choose to exclude common macOS cache files.
**Task outline**: -Research writing custom Qt widgets and extending (subclassing) existing ones. -Research a way to extend QTableView for showing a summary line. -Implement summary line. -Use custom TableView in the GUI.
-**Additional details**: See discussion [#1231](https://github.com/borgbase/vorta/discussions/1231)
+Create a list of sensible default files to exclude. +Possibly grouped, so users can choose to enable parts of them. +Decide on way to store exclusions. +Do mockup of GUI (partly done). +Implement as Qt UI file. Implement parsing exclusion rules to Borg input.
+**Additional details**: See [this issue](https://github.com/borgbase/vorta/issues/907) for discussions about the GUI part and [here](https://github.com/borgbase/vorta/issues/907#issuecomment-1282309557) for suggested exclusion rules.
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] ### Improve modularization of vorta source @@ -202,32 +229,6 @@ Refactor the code accordingly.
**Additional details**: See discussion [#1231](https://github.com/borgbase/vorta/discussions/1231)
**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] -### Enhance archive table and archive actions -**Difficulty**: Easy
-**Length**: 50 hours
-**Skills required**: Python, Qt
-**Description**: Vorta comprises a table listing the archives in a borg repository. There also is a button for renaming the selected archive in another dialog. This task should implement the capability to edit the archive name inline (in the table cell) without having to open another dialog. This task should also add a column showing whether an archive was created by the user manually or by the scheduler. Beneath the archive table there is a `compact` button running `borg compact`. However this borg feature is only available since borg v1.2. The button must therefore be hidden from the GUI when using earlier borg versions. There is also a button for refreshing the selected archive data from the repository. This button should work when selecting multiple archives too. Vorta allows mounting a selected archive. Implement the option to copy the mount location to the clipboard, open the file manager at the mount location and a setting for doing that automatically after mounting. -Currently the user has to select a folder to mount to. This can be very time consuming. This task should also add the possibility to 'quick mount' a repository into a temporary directory created by vorta.
-**Task outline**: -Add additional column to the archive table. -Implement edit functionality. -Hide `compact` button for borg versions <1.2. -Implement refreshing multiple archives. -Implement copying mount path to the clipboard. -Implement opening the mount location in default file explorer. -Implement automatically opening mount location (+ corresponding setting). -Implement quick mount action.
-**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] - -### Add a log viewer / analyser -**Difficulty**: Medium
-**Length**: 125-150 hours
-**Skills required**: Python, Qt
-**Description**: Currently Vorta just shows 0, 1 or 2 to inform about borg's return code and users have to wonder about what that could mean. It needs to offer a borg log file view, so that users can find more information about problems and also about successful runs. The log file view could colour the log lines according to their log level (e.g. display ERROR in red). A more advanced log line highlighter would be even better. The log viewer should also allowing filtering log lines by application session, borg command and other attributes.
-**Task outline**: Plan out how the log file viewer would integrate into the existing GUI. Plan out how the log file viewer should work from a user perspective. Draw a GUI mockup. Implement the GUI as a Qt UI file. Implement the logic of the new dialog. Implement filtering logs. Implement log syntax highlighting. Write unittests throughtout the process.
-**Additional details**: See issue [#1483](https://github.com/borgbase/vorta/issues/1483)
-**Possible mentors**: [@real-yfprojects][real-yfprojects], [@m3nu][m3nu], [@Hofer-Julian][Hofer-Julian] - ### Other issues You can also come up with own ideas to implement or choose to solve any other existing [issue](https://github.com/borgbase/vorta/issues). Discuss your ideas with you prospective mentors.