What motivates you to create apps?
I maintain two apps and have two very exciting ones in the pipeline, all of them were created from a personal need for the functionality and I try to generalize them so other people can profit from them.
What are your main blockers to get your apps published to the app store?
The process isnāt very easy to understand in the beginning, but once you get the hang of it, the signing and uploading process is manageable.
What really slowed you down when you just started developing Nextcloud apps?
Nextcloud has a strong backend API and great vue components for the frontend, but there is a missing link in the chain of the data flow.
There is no library to handle the collection of data from the backend to the frontend, it is all manual axios http calls.
If you want anything more than that, you need to abstract it away yourself.
This is in my opinion a missed opportunity, it would be an awesome time saver, if nextcloud had a library that could automatically map backend entities to frontend entities. As most nextcloud apps already use the vue ecosystem and vuex (which will need to be migrated to its sucessor Pinia) these frontend entities would ideally be mapped into Pinia ORM entities.
This could allow for FAR faster development in my opinion, as data structures could just be defined in the backend and automatically exist in the frontend.
Normally this might not be possible to implement, because the data of the entities in the backend travels through Mappers, Services and Controllers, but thankfully appinfo/routes.php definitions already have the concept of resources, which combine the index, show, create, update and destroy actions which would be all, that is necessary for basic backend entitites to frontend entities mapping.
This is the kind of thing only a fully fledged Ecosystem like nextcloud could deliver and it would open the door to MANY cool features, that are not only good for the developer experience, but also for the user experience.
For example: If many apps used the described library, it would be quite easy to implement a Offline First experience for the nextcloud platform, which would make read-only access to app content possible in the browser, while the device is offline and make content loading FAR faster while online, because at first the stored offline copy of data is presented until the newest online version is downloaded and the state is synchronized. This is clearly the way the web is heading (see any google product) and I would like to see nextcloud modernizing in this direction. All that would be neccessary to implement offline first for apps using the above described library would be the pinia persisted state, a Service Worker to cache static files and small modifications of the apps to disable elements that modify data while the data synchonizes or the device is offline.
I would also like to use the opportunity to answer a question, that wasnāt asked , which is what would make me consider moving my dev efforts from the nextcloud plattform to a different one.
One killer feature of an alternative open source plattform, that would make me switch to developing apps for it basically instantly is, if we could get away from data polling from the frontend.
I want to play with the cool new stuff, or in this case the cool new stuff from 12 years ago: Server Sent Events.
Polling is inefficient on traffic and takes up valuable resources on the backend and is a pain to implement, which is why quite a few nextcloud apps only update their data when a context is switched (calendar: deselecting a calender) or only on page reload (passwords app).
This also ties in to my earlier proposal for automatic entities in the frontend as the library could also listen for changes via a Server Sent Event Stream from the Backend (more complicated to implement, as the resources routes ātrickā is not applicable).
SSE in nextcloud is not a new idea, it was partially implemented in 2021 (https://github.com/nextcloud/push/pull/27), but sadly (as far as i can tell) never finished and abandonned (nextcloud/push is archived and I could not find any information, if nextcloud/notify_push is meant to be itās successor).
Collaboration is a huge feature for nextcloud, but sadly only the really big apps have the capabilities to implement it as Realtime Collaboration, often relying on external dependencies (such as the onlyoffice documentserver docker) for the realtime communication part over WebSockets or SSE. Built in SSE could make this available to many more apps.
Generally as a developer I would appreciate more architectual improvements to nextcloud. I know features are what customers are paying for, but the nextcloud architecture has to keep up with the time. I hope nextcloud gmbh can get around to more of them, but I know you are trying, as can be seen with stuff like the sync clients no longer having to poll and sync 2.0.
There have been recent advances in getting more programming languages in the nextcloud backend (MediaDC), but I donāt think these implementations can get generalized enough (like a whole framework for creating nextcloud apps with python / JS) without backing from the Nextcloud gmbh, so maybe you can allocate a few resources to that .
Thanks for this opportunity to get these thoughts out there, I planned on creating a forum thread about them for months, but this is better