Nextcloud app development

Hi folks,

I was following Owncloud till now and ask myself how much different Nextcloud will be from Owncloud. One important aspect is the app development. I had the impression that apps in the Owncloud store were often unmaintained, redundant in functionality and badly documented. One example might be the notes apps. There were many, but closely all of them were not comparable with closed source solutions (compatibility, UI, mobile app, API, sync).

What will/can Nextcloud do to prevent these drawbacks? Putting effort together on a shared project might be better sometimes than starting a new fork dying unmaintained…

1 Like

I think we can create conditions that apps should fulfill before they are added to the app store (e.g. good documentation). But I don’t know whether this goes against the open source mentality. But maybe not, if end users can install their apps manually if they want.

1 Like

ownCloud has been trying to do this for years, but the platform wasn’t mature enough, so apps became obsolete fast and newcomers didn’t want to recycle the old code.
Once the AppFramework and the core APIs are stable enough, even if an app isn’t updated, it will still work for a while. You will probably only find out the dev is gone once something breaks and nobody responds to the request to fix it.
As for the quality of apps, they’re often developed by people on their free time, to solve a problem they’ve encountered. Testing, documentation, code quality aren’t always part of the scope of the project unless the maintainer is an experienced software developer with lots of time on his hands. It’s not any different than any other software project, with the exception that you can look at the code and decide whether it’s up to scratch or not and perhaps offer to fix it.

If you refer to Nextcloud as the steering committee

  • Build stabler code
  • Grow the community and hope to attract businesses interested in developing apps and sharing them with the community
  • Grow the installation base (not user base) to make it attractive to sell apps
  • Attract talent interested in participating in other areas than code
  • Help crowdfund apps and app features perhaps. It’s easier in terms of recognition if the developer is backed by the project itself, but it has to be done under strict conditions, stricter than for when becoming an official app

It’s not easy as there is a lot of volatility. Some people will come by, help for a few weeks and leave, there is not much you can do to fix that.

Users part of the community can

  • Donate, fill the wishlists, write nice reviews or at least say thank you
  • Help with the documentation
  • Help with testing
  • Buy services from people developing apps
  • Spread the word to motivate people to join their favourite app/project
  • Much more I’m sure
4 Likes

As I mentioned earlier, we could also take care of documentation quality. Open source does not mean that we have to add every app to the app store. A minimum of quality should be adhered to. Quality conditions have only benefits for the community. If someone creates an awesome app but the code is unreadable and there is no documentation, nobody can develop further if the developer itself won’t do it.

I’m curious to see what others will say about that.
A curated store (Apple Appstore) vs an anything-goes store (Google Play).
Given that there are 2 dozen or so official and recommended apps today, it could work if the new app store incorporates a beta section where experimental apps can be release. That exists in any app store.

3 Likes

I forgot to mention earlier than one initiative which is working quite well was the introduction of “official” and “recommended” apps. It’s not quite finished yet, but it did a lot of good to the app store. If an app dev can’t be bothered to maintain his app, then it will lose the label.

2 Likes

Valid point with the AppFramework. I noticed many apps did not get updated accordingly to the frequent changes in framwork. By this, many developer replies in the Owncloud forum popped up complaining about the terrific investment to keep their app simply alive. So happy to see that Nextcloud understands the need of a stable und sustainable framework. :relaxed:

But the point about volatility I do not totally agree. As a user, I did see functionality in Owncloud (core) being managed. But everything aside was in the mercy of volunteers. Isn’t it possible for Nextcloud, to support these developer in terms of functionality? Trying to lead the ecosystem by giving advises in scope and pooling app developers to make them “connect”? My point is…as a user I had the impression the appstore is a central place to extend my Owncloud, but the reality is that you could only trust the core itself. Even the app info pages differed in quality from a single sentence not even describing what this app does, over apps that seem to be a duplicate without content, to info pages stating endless changelogs. Some apps were shown in your own Owncloud instance, others not (I did not understand why only a part of them were visible). I think Nextcloud does a favor to everyone trying to keep the documenation and minimum requirements (app meta data, dependencies) as good as possible. Everyone will still be able to add own apps, but quality gates could help the whole eco system. Just as @Ben proposed in the beginning

I would say something between apple appstore and google playstore is ideal. Your idea is great to use a section for apps which are not conform with our quality standards.

That’s core. There is an understanding that what is merged will be maintained by the core team and that’s one reason you have to be careful not to add more than you can chew.

I’ve seen efforts to get people to work together and that’s what the yearly conference is about imo.
Let’s not forget though, that contributors come from different countries, work for different companies, etc. So, accepting PR works, but working together is more difficult.

Regarding the appstore, you can submit your requests here:

Regarding the quality of apps, you can build a team to refine the specs and review submissions :slight_smile:

For popular apps, it would be great to have several developers that it doesn’t depend on a single person. We have seen the problems with the calendar and contact vs their *plus-version. So much work for nothing.

Maintaining an apps requires a lot of time, we should think about how we could get more people involved in testing and writing documentation. Not everything has to be done by the developers themselves however normal users need to know how to do it. I think especially users asking for new features are probably willing to test these features before they are officially released.

That’s what everybody wants, but it’s difficult to achieve. You need mature, documented code and common goals. It’s a huge investment to make significant contributions as you need to get very familiar with the code base.

Well, just like Nextcloud was created out of frustration, these plus versions emerged because the original apps were broken, unmaintained and new ideas were turned down. People fought against the forking and warned about the waste of effort, but if the developer feels he’s better off doing his own thing, then nothing can stop him.
On the plus side, it got things moving with the original apps and after all the server components have been removed, things are on a better path as they’re lighter and easier to maintain.

For testing, I started this:

But the biggest problem I’m facing per example is that end users don’t test well enough. They will test their use-case, but some other scenario might break.

I tested a bit in the past but it was mostly related to my use case because detailed information about new features or reworked code were missing. This improved a bit, the testpilot-client was a great idea to enable testing besides a productive version. Testing running setups even by cloning (run a copy in a different subfolder) is difficult because the data-folder cannot be changed. So you really must want to test to pass all these hurdles.

Yep, but app devs can’t set up test pilots, they don’t have enough time to deliver new features as it is :wink:

@jan created a team for documentation and I think this team should also create nextclouds quality characteristics.

1 Like

I think this important. Everyone can give it a try - and then you have the official/recommended/rating-stars

Without this we would only have the non-working “music” app e.g. and not the “mp3 player” with a completely different aproach.

And at the end if you dont like it

  • make it better on your own
  • pay soneone to do it
  • “advertise” to find devs

At the end its open-source but still a comercial company who has to pay the devs - and they habe to set prios

Where is that team’s resources? (Couldn’t find it on GitHub.)

@jan what do you think about that idea, that the documentation team is creating a quality document all app developers should work with?

There isn’t much work to do:

https://doc.owncloud.org/server/9.0/developer_manual/app/publishing.html#approved

You can force the use of the AppFramework as this makes it less likely that the app will not easily break. It also provides some basic security features.

You could reject any app using private PHP APIs unless the dev proves there is no alternative.

It still doesn’t guarantee that the dev won’t leave it all behind 3 months later or that it will be possible to collaboarate on an approved app.

Well, it seems not a lot of contributors read this documentation. I don’t know anything about Owncloud/Nextcloud app development, the framework and the owncloud app store application, but I ask myself how to push poeple being more “aligned”? Maybe automated, simple checks before publishing an app (no matter the stage “official, approved, experimental”) could be a compromise between bothersome requirements and doable guidelines.

Starting very basic, isn’t it possible to check if the app info.xml was maintained correctly and use it to be displayed as online app page? Next simple step could be to to check if the app was correctly packaged (I mention this because there was a lot of creative packaging and naming around).

And of course remaining faithful to the levels of app staging being transparent even to the user installing apps in appstore. At first sight, it may seem at bit restrictive for a community project, but I bet it will improve the app store for us all in the end. As long as everyone is allowed to upload experimental apps!

3 Likes

That’s the plan for the new app store: Uploading apps will be sending a download URL to the server. The server will then download the app and parse the info.xml. At a later point we can also verify the signature if code signing is used.