Skip to content

VandalByte/GSoC25

Folders and files

NameName
Last commit message
Last commit date

Latest commit

 

History

4 Commits
 
 

Repository files navigation

☀️ Google Summer of Code 2025 - Final Report

PROJECT - Implement Unified File dialog, Password Change UI, and Implement File dialog for Exclusions

Contributor Vandal Byte
Sub-Organization Borg Collective
Organization Python Software Foundation
Project Link Project
Mentors Manuel Riel (m3nu), Dan Helfman (witten)

🎯 Project Goals

Borg is a powerful file backup tool that performs tasks like compression, encryption, authentication, and data deduplication. It is a command-line tool, and is used by many users and organizations to back up their data.

Vorta is a desktop GUI for Borg that makes it easier to interact with it without knowing any CLI commands or other intricacies. It is a cross-platform application that is built using Python and Qt, and is used by beginners and advanced users alike.

Borgmatic is a CLI wrapper around Borg that stores all Borg settings and preferences inside a configuration file and makes it easy to automate backups. It also extends Borg's capabilities by adding support for running pre and post-backup hooks, setting up monitoring, backing up databases, and more.

The primary goal of this GSoC project was to improve the code quality, user experience, and functionality of the Vorta and Borgmatic applications. The project focused on three main areas:

  1. Add Password Change UI - Add a new UI for changing the passphrase of a borg repository, this has been a long requested feature and once implemented will allow users to directly change the passphrase from vorta UI instead of relying on borg commanline.
  2. Implement Unified File dialog - Create a custom Qt-based file selector (VortaFileDialog) to unify file and directory selection. Previously, Vorta used two separate dialogs due to limitations in Qt. This new dialog will streamline the process and improves consistency across the UI.
  3. Implement File dialog for Exclusions - Improve the exclusion dialog in Vorta by allowing users to select files and directories via the new unified file dialog instead of manually typing exclusion patterns.
  4. Code Refactor, Cleanup, and Maintenance Tasks - Refactored portions of the codebase for better maintainability, fixed broken tests, and reviewed community PRs to improve overall stability and consistency of the application.

🏆 Project Achievements

  • Created and integrated an entire passphrase changing UI in Vorta.
  • Added a new dropdown button in the UI to house the less-used functionalities, as well as a button for changing the passphrase.
  • Created a new UI based on suggestions from discussions and previous unmerged PRs.
  • The new UI was integrated into the main application UI.
  • Used existing passphrase fields to reduce code duplication.
  • Added tests to cover my implementation and ran existing tests to ensure that no other features were broken as a result of this.
465335310-0b3236e0-e951-4250-8d12-21919e7d4d46
  • Built a custom Qt-based file selector (VortaFileDialog) to support both files and directories with QTree.
  • Replaced existing separate dialogs to simplify and standardize file selection.
  • Added a new UI for file dialog which included features like path selection, goto home button, goto parent button, tree view of the directories and files and an option to view/select hidden files.
  • Verified working of the new dialog and it's addition to the source list.
  • Improved overall consistency and reduced code duplication in the selection flow.
  • Added tests to cover my implementation and ran existing tests to ensure that no other features were broken as a result of this.
447232822-0686731d-9ad7-4efc-baa3-95c952ef9faf
  • Implemented file dialog support for excluding files and directories from backup using exclusion patterns.
  • Allowed users to visually select exclusions rather than typing the patterns manually.
  • Integrated with the unified file selector to maintain consistency.
  • Ensured excluded paths persist across each backup.
  • Added tests to cover my implementation and ran existing tests to ensure that no other features were broken as a result of this.
465325626-b5d9e7b9-45bf-4a65-acb7-3d52a75e9214

📌 Current State

All proposed tasks except PR #2252 have been successfully completed and merged upstream. The codebase is now cleaner and easier to maintain, and the overall user experience has seen noticeable improvements.

⚙️ What's Left to Do

Just need to finalize and merge the new file dialog for exclusions. After that, there's a bit of cleanup to do, tidying up the code and closing out any loose ends, then it'll be time to get things ready for the next Vorta release.

⭐ Pull Requests

A list of all the pull requests I made before and during GSoC, in chronological order of their creation.

🤝 Acknowledgements

I want to convey my heartfelt thanks to my mentors for their significant assistance throughout this journey. Special thanks to @m3nu for taking me through the Vorta projects and @witten for his technical advice on the Borgmatic work. Your input and feedback were critical to the success of these projects. My gratitude goes to the Python Software Foundation and the Borg Collective for this opportunity. The warm and helpful character of the Borg community was greatly appreciated. I'd also like to thank Google for organizing GSoC and giving a platform to collaborate on relevant projects.

About

My Work Product Submission for GSoC 2025

Resources

Stars

1 star

Watchers

0 watching

Forks

Releases

No releases published

Packages

 
 
 

Contributors