diff --git a/modules/classic_ui/images/apps/market/login-step-1.png b/modules/classic_ui/images/apps/market/login-step-1.png deleted file mode 100644 index f9f21b4e8..000000000 Binary files a/modules/classic_ui/images/apps/market/login-step-1.png and /dev/null differ diff --git a/modules/classic_ui/images/apps/market/login-step-2.png b/modules/classic_ui/images/apps/market/login-step-2.png deleted file mode 100644 index a7f2213f0..000000000 Binary files a/modules/classic_ui/images/apps/market/login-step-2.png and /dev/null differ diff --git a/modules/classic_ui/images/apps/market/login-step-3.png b/modules/classic_ui/images/apps/market/login-step-3.png deleted file mode 100644 index f5e0d64db..000000000 Binary files a/modules/classic_ui/images/apps/market/login-step-3.png and /dev/null differ diff --git a/modules/classic_ui/images/apps/market/login-step-4.png b/modules/classic_ui/images/apps/market/login-step-4.png deleted file mode 100644 index b8be1b3c4..000000000 Binary files a/modules/classic_ui/images/apps/market/login-step-4.png and /dev/null differ diff --git a/modules/classic_ui/images/apps/market/market-app.png b/modules/classic_ui/images/apps/market/market-app.png new file mode 100644 index 000000000..0b97bdb1d Binary files /dev/null and b/modules/classic_ui/images/apps/market/market-app.png differ diff --git a/modules/classic_ui/pages/apps/market.adoc b/modules/classic_ui/pages/apps/market.adoc index 7788dc6c2..744957479 100644 --- a/modules/classic_ui/pages/apps/market.adoc +++ b/modules/classic_ui/pages/apps/market.adoc @@ -2,27 +2,26 @@ :keywords: ownCloud Marketplace, ownCloud Market, apps :description: Here you will find out all you need to know about working with ownCloud's Market app. -== Log in to the Marketplace From the Market App +== Browse and Install Apps From the Market App -{description} To log in to {oc-marketplace-url}[the ownCloud Marketplace] from the Market app, open the Market app by clicking on the Market app icon in the top-level ownCloud navigation menu, which you can see above. +{description} The Market app lets you browse the {oc-marketplace-url}[ownCloud Marketplace] +and install apps directly from your running ownCloud instance. Open it by clicking the +Market app icon in the top-level ownCloud navigation menu. image:apps/market/top-level-navigation-bar-highlighting-the-market-app.png[The Market app in the ownCloud top-level navigation menu] -Once on the Market app, click btn:[LOGIN], located at the bottom of the left-hand side navigation menu. +The marketplace catalog is public, so there is no account to create and nothing to log +in to — the Market app reads the catalog directly. Browse or search the available apps, +click an app to view its details, and click btn:[Install] to download, install, and +enable it. -image:apps/market/login-step-1.png[Log in to the Marketplace from the Market App, step 1] +image:apps/market/market-app.png[The Market app showing the ownCloud Marketplace catalog] -You are next asked to grant the Market app access to your Marketplace account. -Enter your Marketplace username and password and click btn:[LOGIN]. +Use the categories in the left-hand navigation to filter the catalog, or the search box +to find an app by name. -image:apps/market/login-step-2.png[Log in to the Marketplace from the Market App, step 2] - -Next, confirm your request to grant the Market app access to your Marketplace account. -To give this confirmation, click btn:[GRANT ACCESS]. - -image:apps/market/login-step-3.png[Log in to the Marketplace from the Market App, step 3] - -Once you've done this, you are redirected back to the Market app in your ownCloud installation. -The original "_LOGIN_" button is now greyed out and labelled "_LOGGED IN_". - -image:apps/market/login-step-4.png[Log in to the Marketplace from the Market App, step 4] +NOTE: If your ownCloud instance runs in a protected environment (DMZ) without internet +access, the Market app cannot reach the marketplace. In that case, download apps manually +from the {oc-marketplace-url}[ownCloud Marketplace] and install them by hand. See +xref:admin_manual:installation/apps/apps_management_installation.adoc[Installing and +Managing Apps]. diff --git a/modules/developer_manual/images/app/app-tile-enterprise.jpg b/modules/developer_manual/images/app/app-tile-enterprise.jpg deleted file mode 100644 index 4b554b62e..000000000 Binary files a/modules/developer_manual/images/app/app-tile-enterprise.jpg and /dev/null differ diff --git a/modules/developer_manual/images/app/app-tile-verified.jpg b/modules/developer_manual/images/app/app-tile-verified.jpg deleted file mode 100644 index 23a787470..000000000 Binary files a/modules/developer_manual/images/app/app-tile-verified.jpg and /dev/null differ diff --git a/modules/developer_manual/images/app/marketplace-home.png b/modules/developer_manual/images/app/marketplace-home.png new file mode 100644 index 000000000..8dd2f6671 Binary files /dev/null and b/modules/developer_manual/images/app/marketplace-home.png differ diff --git a/modules/developer_manual/pages/app/advanced/code_signing.adoc b/modules/developer_manual/pages/app/advanced/code_signing.adoc index d5a69abf0..198b7f17d 100644 --- a/modules/developer_manual/pages/app/advanced/code_signing.adoc +++ b/modules/developer_manual/pages/app/advanced/code_signing.adoc @@ -191,8 +191,8 @@ certificate's public key and that the certificate `CN` equals the app identifier ==== Any change to the app after signing invalidates the signature, so remove any -files you do not want to ship *before* signing, then re-sign. After signing, the -app can be uploaded to the {oc-marketplace-url}/[ownCloud Marketplace] — see +files you do not want to ship *before* signing, then re-sign. After signing, package +the app and submit it to the {oc-marketplace-url}/[ownCloud Marketplace] — see xref:developer_manual:app/fundamentals/publishing.adoc[Publishing in the ownCloud Marketplace]. diff --git a/modules/developer_manual/pages/app/fundamentals/info.adoc b/modules/developer_manual/pages/app/fundamentals/info.adoc index 71d8642db..c517d3adf 100644 --- a/modules/developer_manual/pages/app/fundamentals/info.adoc +++ b/modules/developer_manual/pages/app/fundamentals/info.adoc @@ -63,8 +63,10 @@ would be tried under `Myapp`. == category -The ownCloud Marketplace category where you want to publish the application. -The following categories are available: +The ownCloud Marketplace category where you want to publish the application. +You can list more than one `` element. Category values are matched +case-insensitively, and any value outside the supported set is dropped during +validation. The following categories are supported: [width="52%",cols="50%,50%",options="header",] |================ @@ -80,8 +82,8 @@ The following categories are available: | Customization | customization -| External plugins -| external-plugins +| Files +| files | Games | games @@ -92,6 +94,9 @@ The following categories are available: | Multimedia | multimedia +| PIM +| pim + | Productivity | productivity @@ -105,14 +110,11 @@ The following categories are available: | tools |================ -[IMPORTANT] +[IMPORTANT] ==== -For publishing themes the category tag must be present — _but empty_ — as in the example below. - -[source,xml] ----- - ----- +Every app — themes included — must declare at least one supported category. A release +whose categories are all outside the supported set is rejected during validation. For +themes, use `customization`. ==== == summary diff --git a/modules/developer_manual/pages/app/fundamentals/market_app.adoc b/modules/developer_manual/pages/app/fundamentals/market_app.adoc index f9d11d938..3238128b7 100644 --- a/modules/developer_manual/pages/app/fundamentals/market_app.adoc +++ b/modules/developer_manual/pages/app/fundamentals/market_app.adoc @@ -1,20 +1,18 @@ = Market App -Since ownCloud X (10.0.0) every ownCloud instance gets shipped with the -market app. This app makes it easy to manage your applications out of -the box. To connect your market app with the ownCloud Marketplace: +Since ownCloud X (10.0.0) every ownCloud instance ships with the market app. This app +makes it easy to manage your applications out of the box: you can install, update, and +remove apps directly from your running ownCloud instance. -* Get you API key under `My Account` -* Inside the market app go to menu:Settings[] -* Paste your API key and click on btn:[Save] - -You are now able to maintain any app in -`downloads/installations/updates` from your ownCloud installation directly. +The market app reads the {oc-marketplace-url}[ownCloud Marketplace] catalog directly +over its public API. The catalog is a static, public resource, so there is no account to +create and no API key to configure — open the market app and you can browse and install +available apps right away. == ownCloud Instances in Protected Environments (DMZ) -To use the market app your ownCloud instance must have an internet -connection. If your instance is running in a protected environment (DMZ -or similar) you cannot use the market app. You need to upload the apps -manually in this case. Every app can be downloaded manually from the -marketplace. +To use the market app your ownCloud instance must have an internet connection. If your +instance is running in a protected environment (DMZ or similar) and cannot reach the +marketplace, you cannot use the market app to install apps automatically. In this case, +download each app manually from the marketplace and install it by hand. Every app can be +downloaded manually from the {oc-marketplace-url}[ownCloud Marketplace]. diff --git a/modules/developer_manual/pages/app/fundamentals/publishing.adoc b/modules/developer_manual/pages/app/fundamentals/publishing.adoc index fc8db6de2..0caf6099d 100644 --- a/modules/developer_manual/pages/app/fundamentals/publishing.adoc +++ b/modules/developer_manual/pages/app/fundamentals/publishing.adoc @@ -1,333 +1,278 @@ = Publishing in the ownCloud Marketplace +:toc: right +:marketplace-repo-url: https://github.com/owncloud/marketplace +:description: The ownCloud Marketplace is a Git-based catalog. You publish an app by opening a pull request that adds your app's package to the repository. == The ownCloud Marketplace -With the ownCloud marketplace, introduced in 2017, we offer a flexible -and easy way to publish your apps and extend your ownCloud. In addition -every ownCloud gets shipped with the new market app which makes it -possible to manage apps directly out of your running ownCloud instance. -Connected with the ownCloud marketplace it mirrors your marketplace -account and provides an easy way to install and update apps. +{description} -The process of publishing apps aims to be: +The {oc-marketplace-url}[ownCloud Marketplace] is a *backend-free catalog*: there is +no server, no database, and no upload form. The Git repository at +{marketplace-repo-url}[owncloud/marketplace] is the single source of truth. +Continuous integration validates every submission, and once a pull request is merged +the catalog, its JSON API, and the website are regenerated and deployed automatically. -* Secure -* Transparent -* Welcoming -* Fair -* Easy to maintain +image:app/marketplace-home.png[The ownCloud Marketplace catalog] -Apps in the store are divided into three levels of trust: +Every ownCloud instance ships with the xref:app/fundamentals/market_app.adoc[Market app], +which reads this public catalog and lets administrators install and update apps directly +from a running ownCloud instance. -* Official -* Approved -* Experimental - -With each level come requirements and a position in the store. - -[IMPORTANT] +[NOTE] ==== -Apps uploaded to the Marketplace must carry a valid code signature. Starting with -ownCloud 11, app signing is mandatory: an unsigned or invalidly-signed -app is blocked on install, update, or enable. Sign your app with `ocsign` before -uploading — see xref:developer_manual:app/advanced/code_signing.adoc[Code Signing]. +This page describes publishing *ownCloud Classic apps*. The same marketplace also hosts +ownCloud Infinite Scale (oCIS) web extensions, which follow a separate submission +process documented in the {marketplace-repo-url}/blob/main/CONTRIBUTING.md[marketplace +repository]. ==== -=== Official - -Official apps are developed by and within the ownCloud community and its -https://github.com/owncloud[Github] repository and offer functionality -central to ownCloud. They are ready for serious use and can be -considered a part of ownCloud. - -Requirements: - -* Developed in the ownCloud GitHub repo. -* Minimum of 2 active maintainers and contributions from others. -* Security audited and design reviewed. -* App is at least six months old and has seen regular releases. -* Follows app guidelines. -* Supports the same platforms and technologies mentioned in the release -notes of the ownCloud version this app is made for. - -ownCloud Marketplace: +== Before You Publish: Sign Your App -* Available in Apps page in a separate category. -* Sorted first in all overviews, `Official` tag. -* Shown as featured on https://owncloud.com, etc. -* Major releases optionally featured in the news section on https://owncloud.com -owncloud-announce list. -* New versions/updates approved by at least one other person. +Starting with ownCloud 11, app code signing is mandatory: an unsigned or +invalidly-signed app is blocked when it is installed, updated, or enabled on the +server. Sign your app with `ocsign` before you package it — otherwise it will not run +on ownCloud 11 and later, regardless of how it is distributed. -Official apps include those that are part of the release tarball. We’d -like to keep the tarball minimal, so most official apps are not part of -the standard installation. +See xref:developer_manual:app/advanced/code_signing.adoc[Code Signing] for the full +signing procedure. -=== Approved - -Approved apps are developed by trusted developers and have passed a -cursory security check. They are actively maintained in an open code -repository, and their maintainers deem them to be stable for casual to -normal use. - -Requirements: - -* Code is developed in an open and version-managed code repository, -ideally GitHub, with git. But other VCS’ and hosting options are also OK. -* Minimum of one active developer/maintainer. -* Minimum 5 ratings, average score 60/100 or better. -* App is at least three months old. -* Follows app guidelines. -* The developer is trusted. -* App is subject to unannounced security audits. -* Has defined requirements and dependencies (like what browsers, -databases, PHP versions and so on are supported). +[IMPORTANT] +==== +Any change to the app after signing invalidates the signature. Remove any files you do +not want to ship *before* signing, then package the signed app into the +`package.tar.gz` you submit. +==== -*Developer trust*: The developer(s) is/are known in the community; -he/she has/have been active for a while, have met others at events -and/or worked with others in various areas. +== Package Your App -*Security audits*: in practice, this means that at least some of the -code of this developer has been audited; either through another app by -the same developer or with an earlier version of the app. And that the -attitude of the developer towards these audits has been positive. +The `package.tar.gz` is a gzip-compressed tarball with a *single top-level directory +named after your app id*, containing only the files needed to run the app in +production: -ownCloud Marketplace: +[source] +---- +package.tar.gz +└── / + ├── appinfo/ + │ ├── info.xml + │ └── signature.json # written by ocsign + ├── lib/ + ├── templates/ + ├── css/ + ├── js/ + └── … # only runtime files +---- -* Visible in ownCloud Marketplace by default -* Sorted above experimental apps -* Search results sorted by ratings -* Developer can directly push new versions to the store -* Warning shows for security/stability risks +Ship *only* the code and assets the app needs at runtime. Leave development and +tooling files out of the tarball, for example: -=== Experimental +* `tests/` and test fixtures +* `composer.json`, `composer.lock`, and `vendor-bin/` +* `.github/`, CI config, and Git metadata (`.git/`, `.gitignore`) +* linter and static-analysis config (`.php-cs-fixer.dist.php`, `phpcs.xml`, +`phpstan.neon`, `.phan/`) +* contributor docs such as `CODE_OF_CONDUCT.md` and `agents.md` -Apps which have not been checked at all for security and/or are new, -known to be unstable or under heavy development. +The order matters, because signing covers exactly the files present at signing time: -Requirements: +. Assemble a clean copy of the app that contains only the runtime files (install +production dependencies with `composer install --no-dev` if your app uses Composer). +. Sign that copy with `ocsign` — this writes `appinfo/signature.json` into it (see +xref:developer_manual:app/advanced/code_signing.adoc[Code Signing]). +. Create the tarball from the parent directory so the app id is the top-level entry: ++ +[source,console] +---- +tar -czf package.tar.gz -C build/dist +---- -* No malicious intent found from this developer at any time -* 0 confirmed security problems -* Less than three unconfirmed `security flags' -* Rating over 20/100 +TIP: The xref:attachment$/core/Makefile.example[example `Makefile`] shipped with the +developer manual automates this: its `dist` target runs `composer install --no-dev`, +copies only the runtime source directories into `build/dist//`, and produces the +tarball with the layout shown above. -ownCloud Marketplace: +== The Submission Workflow -* Show up in Apps page provided user has enabled `allow installation of -experimental apps` in the settings. -* Warning about security and stability risks is shown for app -* Sorted below all others. +Publishing an app is a single pull request that adds one file to the marketplace +repository: -== App Categories +[source] +---- +apps//releases//package.tar.gz +---- -The following categories are available for apps to be filed under: +* `` must exactly match the `` element in your app's `appinfo/info.xml`. +* `` must exactly match the `` element in the same `info.xml`. -* Automation -* Collaboration -* Customization -* External plugins -* Games -* Integration -* Multimedia -* Productivity -* Security -* Storage -* Tools +All app metadata — name, summary, description, category, author, license, screenshots, +and dependencies — is read from the `appinfo/info.xml` *inside* the tarball. There is +no form to fill in. See xref:app/fundamentals/info.adoc[Application Metadata] for the +complete list of `info.xml` fields. -To make your app available under one of these categories, please make -sure to user the proper tag in your `info.xml`: +Optionally, add a changelog next to the package: -[source,xml] +[source] ---- -security +apps//releases//CHANGELOG.md ---- -Note: For publishing themes, this tag must be present but empty. +To publish, follow these steps: -[source,xml] +. Fork {marketplace-repo-url}[owncloud/marketplace] and create a branch. +. Add your signed `package.tar.gz` at the path above. App tarballs are stored via +https://git-lfs.com/[Git LFS]. +. Commit with your commits *PGP/GPG signed* and carrying a DCO `Signed-off-by` line: ++ +[source,console] ---- - +git commit -s -S -m "Publish " ---- +. Open a pull request. Use the repository's pull request template and complete the +checklist for an *app* submission. +. CI validates the submission (see below). A maintainer reviews and merges it. +. On merge to `main`, the catalog, API, and website are regenerated and deployed +automatically. Your app then appears in the marketplace and in the Market app. -== App Tags +=== What CI Validates -Besides these categories apps can have different tags: +The validation workflow checks that: -* Enterprise -* Verified -* Trusted +* the path components `` and `` match the `` and `` in +`info.xml`; +* the `info.xml` is schema-valid; +* every commit carries a DCO `Signed-off-by` line *and* a valid PGP/GPG signature; +* at least one `` is one of the xref:_app_categories[supported categories] +(unsupported category values are dropped; a release is rejected only when *none* of its +categories are supported); +* the release is *new* — see immutability below. -=== Enterprise +=== Releases Are Immutable -Apps with the `Enterprise` tag are official ownCloud enterprise apps. -These can only be uploaded by ownCloud itself and represent ownCloud -Enterprise Edition features. +Once a release is merged, its `package.tar.gz` can never be modified or deleted. To ship +a fix or a new build, submit a *new version* with a new `` directory. There is +no concept of overwriting or replacing a published release. -.ownCloud "Enterprise" tag -image:app/app-tile-enterprise.jpg[The ownCloud 'Enterprise' Tag] +== App Categories -=== Verified +Assign your app to one or more categories with the `` element in `info.xml`: -To get the `verified` label on your app, you must request a review. We -then will look into your app and check if it meets the ownCloud app -development guidelines (see below). The advantages of verified apps are -that: +[source,xml] +---- +security +---- -* they are labeled with `verified` badge. -* they are available in apps page in separate category. -* only verified apps can be displayed in the `featured` area. -* major releases optionally featured in the news section on https://owncloud.com +The following categories are supported: -.ownCloud "Verified" tag -image:app/app-tile-verified.jpg[ownCloud 'Verified' tag] +* automation +* collaboration +* customization +* files +* games +* integration +* multimedia +* pim +* productivity +* security +* storage +* tools -=== Trusted +Category values are matched case-insensitively. Any `` value outside this set +is dropped during validation; if none of an app's categories are supported, the release +is rejected. -If your app reaches a rating level of 4 or higher based on 40 ratings or -more it automatically gets the badge `trusted`. It represents a -community oriented level of quality which makes it more attractive to -other users. The advantages of trusted apps are that: +NOTE: For a complete reference of the `` element and the other `info.xml` +fields, see xref:app/fundamentals/info.adoc[Application Metadata]. -* they are labeled with `trusted` badge. -* the user can filter by trusted apps. +== Publisher Page (Optional) -== App Review Process +Publishers can have an opt-in public page at `{oc-marketplace-url}/publishers/` +that lists their apps together with a logo, description, website link, and aggregate +download statistics. To set one up, open a pull request that adds a publisher directory +to the marketplace repository: -To request an app review go to menu:Account[My Products > Edit app] and click on the -button btn:[Request review]. Usually, it takes 3-5 -work days to review your app. You will be notified about the result. +[source] +---- +publishers// +├── publisher.json # publisher metadata +└── logo.png # optional logo (PNG/JPEG/WebP) +---- -If it is successful, your app will get the `verified` badge. Please be -aware of when uploading a new release to a verified app, you need to -request a new review for the new release. To keep your verified badge, -request the review before setting your new release to `published`. +The `` is the URL segment of the page and must equal the folder name. A page is +generated only when `publisher.json` sets `enabled: true`. Every app id you claim in +`publisher.json` must exist in the catalog and must not already be claimed by another +publisher. See the {marketplace-repo-url}/blob/main/CONTRIBUTING.md[contributing guide] +for the full field reference. == App Guidelines -The following are the guidelines your app should follow to provide a -high quality. +The following guidelines help ensure your app is high quality and safe for users. === Legal and Security -* Apps can not use `ownCloud` in their name -* Irregular and unannounced security audits of all apps can and will take place. -* If any indication of malicious intent or bad faith is found the -developer(s) in question can count on a minimum two-year ban from any ownCloud infrastructure. -* Malicious intent includes deliberate spying on users by leaking user -data to a third party system or adding a back door (like a hard coded -user account) to ownCloud. An unintentional security bug that gets fixed -in time won’t be considered bad faith. -* Apps do not violate any laws; it has to comply with copyright- and trademark law. -* App authors have to respond timely to security concerns and not make +* Apps can not use `ownCloud` in their name. +* Irregular and unannounced security audits of apps can and will take place. +* If any indication of malicious intent or bad faith is found, the developer(s) in +question can count on a minimum two-year ban from any ownCloud infrastructure. +* Malicious intent includes deliberate spying on users by leaking user data to a +third-party system or adding a back door (like a hard-coded user account) to ownCloud. +An unintentional security bug that gets fixed in time won't be considered bad faith. +* Apps do not violate any laws; they have to comply with copyright and trademark law. +* App authors have to respond in a timely manner to security concerns and not make ownCloud more vulnerable to attack. -Distributing malicious or illegal applications can have legal -consequences including, but not limited to ownCloud or affected users -taking legal action. +Distributing malicious or illegal applications can have legal consequences including, +but not limited to, ownCloud or affected users taking legal action. === Technical -* Apps can only use the public ownCloud API -* At time of the release of an app, it can only be configured to be -compatible with the latest ownCloud release +1 -* Apps should not cause ownCloud to break, consume excessive memory or slow ownCloud down -* Apps should not hamper functionality of ownCloud unless that is explicitly the goal of the app +* Apps can only use the public ownCloud API. +* At the time of the release of an app, it can only be configured to be compatible with +the latest ownCloud release +1. +* Apps should not cause ownCloud to break, consume excessive memory, or slow ownCloud +down. +* Apps should not hamper the functionality of ownCloud unless that is explicitly the +goal of the app. === Providing Information -When uploading an app, it should provide a professional and informative -look and feel. To do so, please consider the following three points: - -* The title of your app can be up to 50 characters. Provide a unique -name, which makes it easy for users to identify the product. Do not -include your developer and/or company name in the title. -* The summary of your app can be up to 90 characters. Provide a short -description. This will be displayed below the product titles. -* The description of your app can be up to 4000 characters and supports -Markdown formatting. It should, ideally, provide all the necessary -information about your app — especially information necessary to -convince the user to download, use, and buy your app. So, don’t get lost -in technical details. Explain in simple, yet precise, steps what the -user will get. When writing, focus on the benefits your app offers. +The metadata in your `info.xml` should provide a professional and informative look and +feel. Consider the following: + +* The *title* (``) of your app can be up to 50 characters. Provide a unique name +that makes it easy for users to identify the product. Do not include your developer +and/or company name in the title. +* The *summary* of your app can be up to 90 characters. Provide a short description. +This is displayed below the product titles. +* The *description* of your app can be up to 4000 characters and supports Markdown +formatting. It should ideally provide all the necessary information about your app — +especially the information necessary to convince the user to download and use it. Don't +get lost in technical details. Explain in simple, yet precise, steps what the user will +get, focusing on the benefits your app offers. === Images * Provide meaningful images to your users. -* For best results, images should be 1400px wide and should go with a -rough aspect ratio of 2:1 -* The first image provided in your apps info.xml will be used as the -preview image and is displayed in the top area of your marketplace app -page. +* For best results, images should be 1400px wide and use a rough aspect ratio of 2:1. +* The first image provided in your app's `info.xml` is used as the preview image and is +displayed in the top area of your marketplace app page. === Respect the Users -* Apps have to follow design and HTML/CSS layout guidelines -* Apps correctly clean up after themselves on uninstall and correctly -handle up- and downgrades -* Apps communicate their intended purpose and active features, including -features introduced through updates. -* Apps respect the users’ choices and do not make unexpected changes, or -limit users’ ability to revert them. For example, they do not remove -other apps or disable settings. -* Apps must respect user privacy. If user data is sent anywhere, this -must be explained and be kept to a minimum for the functioning of an -app. Use proper security measures when needed. +* Apps have to follow design and HTML/CSS layout guidelines. +* Apps correctly clean up after themselves on uninstall and correctly handle upgrades +and downgrades. +* Apps communicate their intended purpose and active features, including features +introduced through updates. +* Apps respect the users' choices and do not make unexpected changes, or limit users' +ability to revert them. For example, they do not remove other apps or disable settings. +* Apps must respect user privacy. If user data is sent anywhere, this must be explained +and be kept to the minimum required for the functioning of the app. Use proper security +measures when needed. == Disclaimer -ownCloud reserves the right to block and/or delete any uploaded app -which does not comply with the ownCloud quality standards. Additionally, -we reserve the right to ban publishers who attempt to upload malicious -code. This does not depend on whether it happens intentionally or not. - -== Available Products Tags - -.Available Product Tags -[cols="15%,85%",options="header"] -|=== -| Tag | Description - -| id -| A unique id. URL of your app will be based on this. - -| name -| The name/title of your app; Max. 50 characters; Provide a concise name so users can identify your app easily; Do not include your developers/company name. - -| summary -| Provide a short description (max. 90 chars). This gets displayed below the product title and on the product tiles; mandatory since ownCloud Classic 10.0.0. - -| description -| Max. 4000 characters; Provide all necessary, detailed information about the product. This should contain all user relevant information. Don’t get lost in technical details, focus on the benefits the product offers; Also, use markdown to layout your description. - -| license -a| At the moment following license are available: - -- https://en.wikipedia.org/wiki/Open_Content_License[OCL] -- https://owncloud.com/licenses/owncloud-commercial/[ownCloud Commercial License] -+ -NOTE: This is for ownCloud Enterprise Apps *only* -- https://en.wikipedia.org/wiki/Affero_General_Public_License[AGPL] -- https://en.wikipedia.org/wiki/MIT_License[MIT License]. - -NOTE: To overwrite a release (using the same version number) it must be in state `planned`. -Once published, you cannot replace a release. - -| category -| The category you want to publish your app in; For all available categories see above. - -| screenshot -| Image URL; insert multiple tags if you want to include multiple images; Note: marketplace will store images in its own file system. You do not need to provide the images on you own hosted area after the upload. - -| dependencies -a| Min and max version of ownCloud platform your app works with. For example: -[source,xml] ----- - - - ----- - -NOTE: For a complete list of tags see: xref:app/fundamentals/info.adoc[]. -|=== - +ownCloud reserves the right to block and/or delete any app which does not comply with +the ownCloud quality standards. Additionally, we reserve the right to ban publishers who +attempt to publish malicious code. This does not depend on whether it happens +intentionally or not. diff --git a/modules/developer_manual/pages/app/introduction.adoc b/modules/developer_manual/pages/app/introduction.adoc index fc00fa770..968b00429 100644 --- a/modules/developer_manual/pages/app/introduction.adoc +++ b/modules/developer_manual/pages/app/introduction.adoc @@ -25,3 +25,6 @@ there isn’t an application in the already does what you need. If there is, we strongly encourage you to contribute to existing applications before investing the time to develop your own. + +.The ownCloud Marketplace catalog +image::app/marketplace-home.png[The ownCloud Marketplace catalog] diff --git a/modules/developer_manual/pages/bugtracker/index.adoc b/modules/developer_manual/pages/bugtracker/index.adoc index b720e9ec4..889daa618 100644 --- a/modules/developer_manual/pages/bugtracker/index.adoc +++ b/modules/developer_manual/pages/bugtracker/index.adoc @@ -14,9 +14,11 @@ https://github.com/owncloud/ios/issues[iOS repository] https://github.com/owncloud/android/issues[Android repository] * If the issue with with an ownCloud app, report it to where that app is developed -* If the issue is with a Marketplace app, report it to the -https://github.com/owncloud/marketplace-issues[Marketplace issue -tracker] +* If the issue is with an app you found on the Marketplace, report it to where that +app is developed (its `repository`/`bugs` link in the app's `info.xml`) +* If the issue is with the Marketplace itself — a listing, a submission, or the +catalog — report it to the +https://github.com/owncloud/marketplace/issues[Marketplace repository] * If the app is listed in our https://github.com/owncloud[main github repository] report it to the correct sub repository * If the app is listed in the