nextcloud / nextcloud/desktop

Native macOS File Provider App

Open
#9,301 5 comments 4 reactions 1 assignee Claimed by @i2h3 View on GitHub
2. developing feature: :file_folder: file provider os: :apple: macOS
Dominant language
C++
Stars
3.9k
Forks
1k
Avg merge
1d 17h
Merged PRs (30d)
123

Description

**This is a developer experience issue for now.**

## Problems

* The Qt-based main app needs too much time too build and increases the development feedback loop drastically. A native macOS host application for our file provider extensions usually (clean) builds in less than 20 seconds.
* It's handling in the daily workflow is cumbersome, setting up accounts and wiping environments and creating builds happens dozens of times a day.
* The overall project is daunting and complex while the file provider extension mostly is like a self-contained client making up only a minor part of the greater whole. Most of the work concerning it does not involve changes in the larger extend of the project.

## Goals

* Significantly accelerate the development feedback loop to improve developer experience and productivity in regard to the file provider extension. The whole Qt stack and build system can be circumvented when quickly wanting to try out changes.
* Lower the entry barrier for contributors to the file provider extension. People can contribute to the Nextcloud VFS client by only knowing Xcode, Swift and a tiny amount of Objective-C. Much less requirements of knowledge.
* Design it as a minimalistic developer tool and pure addition to the project, not a replacement to the actual main app which still can be worked with and tested as before.
* The app takes launch arguments which can be used to automatically set up accounts and (temporary) domains which would drastically simplify and enable Xcode UI tests for **end to end testing**. Though, there still might be missing a simple counterpart to verify server state in those cases.

## Suggestions

* Add a new native macOS app target to the existing NextcloudIntegration Xcode project which already is used and required for the macOS system extensions.
* That app does nothing more than manage file provider extensions to enable their testing and development.
* It is comparable to the official code example by Apple.

----

I wrote this issue initially when I waited 53 minutes for a desktop client build on my development machine. 😅

Contributor guide

Open the contributing guide

Assessment

This issue has not been assessed yet.

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.