Nextcloud app development

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.

Thx for the info. Not visible to “outsiders” though, we get “404”. :frowning:

A while back I started playing around with the Rasberry Pi and Owncloud on Nginx + SQLite.

Sweet., relays on cronjobs, motion sensors, bash and pythons scripts all over. It will make more sense to rather use a framework so it’s easier to maintain. But you know, my first framework I learned was Symfony 1.4… Currently I am using Lavavel 5 for many of my projects at work. I need an app to interface with my Pi and Kodi out of (own|next)cloud. I can code this!

Boy was I surprised. The documentation is very cryptic, examples are scares and unusable, what should have taken me about 2 weeks to code has now been dragged out to a few months. I really have lost interest in attempting it, not having the relevant info to my disposal or decent examples. I am attempting to setup a many-to-many table structure in my app and just thinking about the experience I have had to get to what I have build… nah, I’ll rather spend my free time with my girls than reading and trying to figure out stuff for 2-3 hours on end before even starting to code.

Do understand, I use owncloud, have 2 instances with Rasberry Pi’s monitoring and managing remote device and I am very exited to support nextcloud, but really, the apps, the ORM, the experience, it has been not a pleasant trip to date.

[quote=“meijer.wynand, post:22, topic:468”]
Boy was I surprised. The documentation is very cryptic, examples are scares and unusable, what should have taken me about 2 weeks to code has now been dragged out to a few months.[/quote]

I completely agree, although this has improved a lot, at least in terms of APIs and working examples. Anything prior to 9 and which involved files and sharing was a real pain.

For DB stuff, look at how News and Activity do it.

@meijer.wynand documentation has been neglected since 7 so there are a lot of outdated examples. The only thing which is a bit more up to date is the tutorial

I would propose a balanced approach that rests the power to judge app suitability in the user:

  • The app store should be as open as possible, even for low-quality apps - otherwise you will be embroiled in hair-splitting over what is ‘proper’ documentation etc.

  • The app installation UI should give relevant information, eg. as badges/checkboxes: Does the documentation - maybe separately for end-users and developers - confirm to a set standard? Is it unit-tested? Is it localised (and for where)? Maybe even metrics relating to the source and development process (how many active contributors, how long to react to bug reports…).