Repository: nextcloud/appstore

Issue:
At least a single resource for support or contact should be required
This is simply asking us for trouble. No repo. No website. Nothing. The app was provided only over an archive on Google Drive (https://github.com/nextcloud/app-certificate-requests/pull/52) ... this is not offending developers, google drive or anything 😅 But - you know what I mean I hope 😢 

<img width="919" alt="bildschirmfoto 2017-03-01 um 11 44 38" src="https://cloud.githubusercontent.com/assets/19711361/23456641/8c1a9b1c-fe74-11e6-9894-e0fec0f622e7.png">
At least a single resource for support or contact should be required
This is simply asking us for trouble. No repo. No website. Nothing. The app was provided only over an archive on Google Drive (https://github.com/nextcloud/app-certificate-requests/pull/52) ... this is not offending developers, google drive or anything 😅 But - you know what I mean I hope 😢 

<img width="919" alt="bildschirmfoto 2017-03-01 um 11 44 38" src="https://cloud.githubusercontent.com/assets/19711361/23456641/8c1a9b1c-fe74-11e6-9894-e0fec0f622e7.png">


Discussion:
Ressources should not be empty if there are none, that's one thing that immediately jumps out.

What things are under Ressources? Links to documentation and homepages, so that's nothing important that should be absolutely required IMHO. Apps can be so easy to install and use that they simply don't require any documentation. 

Another thing that is probably more important is an issue tracker. Our current default for that is to just send people to the forums if no issue tracker is provided (check the discussion part on https://apps.nextcloud.com/apps/activitylog)
> What things are under Ressources? Links to documentation and homepages, so that's nothing important that should be absolutely required IMHO. Apps can be so easy to install and use that they simply don't require any documentation.

Yes... but a an app without repository and developer contact details 😕 

> Another thing that is probably more important is an issue tracker. Our current default for that is to just send people to the forums if no issue tracker is provided (check the discussion part on https://apps.nextcloud.com/apps/activitylog)

Well... this may work 😉 
Yeah, I'm undecided if we absolutely want/need information for issue trackers. Would like to hear more opinions on this :)

@MorrisJobke @ChristophWurst @LukasReschke @nickvergessen @adsworth 
I would say "fine by me", maybe show it as an info to the uploader, that website and issue tracker are missing and that those are good to have, for people reporting bugs.
You could probably argue: if you do not want to provide support, then keep the app to yourself and dont upload it for others to use. However if you upload it for others to use, we want the experience to be good so you should care about bug reports (or at least collect them somewhere so others can fix them)
> You could probably argue: if you do not want to provide support, then keep the app to yourself and dont upload it for others to use. However if you upload it for others to use, we want the experience to be good so you should care about bug reports (or at least collect them somewhere so others can fix them)

Isn't the comment feature of the App Store enough for communication with the author? I would think so. If the author doesn't provide anything this is fine. At least there are comments below the app itself in the App Store, where feedback can be given. And if the app is that bad, it will get a bad rating.
The store was specifically designed to avoid comments and just go for something like ratings/reviews: you can post a review once for an app that's it. Everything else leads to bug reports or feature requests like on the old app store.

So if you don't add anything people will get redirected to the forums right now
Ressources should not be empty if there are none, that's one thing that immediately jumps out.

What things are under Ressources? Links to documentation and homepages, so that's nothing important that should be absolutely required IMHO. Apps can be so easy to install and use that they simply don't require any documentation. 

Another thing that is probably more important is an issue tracker. Our current default for that is to just send people to the forums if no issue tracker is provided (check the discussion part on https://apps.nextcloud.com/apps/activitylog)
> What things are under Ressources? Links to documentation and homepages, so that's nothing important that should be absolutely required IMHO. Apps can be so easy to install and use that they simply don't require any documentation.

Yes... but a an app without repository and developer contact details 😕 

> Another thing that is probably more important is an issue tracker. Our current default for that is to just send people to the forums if no issue tracker is provided (check the discussion part on https://apps.nextcloud.com/apps/activitylog)

Well... this may work 😉 
Yeah, I'm undecided if we absolutely want/need information for issue trackers. Would like to hear more opinions on this :)

@MorrisJobke @ChristophWurst @LukasReschke @nickvergessen @adsworth 
I would say "fine by me", maybe show it as an info to the uploader, that website and issue tracker are missing and that those are good to have, for people reporting bugs.
You could probably argue: if you do not want to provide support, then keep the app to yourself and dont upload it for others to use. However if you upload it for others to use, we want the experience to be good so you should care about bug reports (or at least collect them somewhere so others can fix them)
> You could probably argue: if you do not want to provide support, then keep the app to yourself and dont upload it for others to use. However if you upload it for others to use, we want the experience to be good so you should care about bug reports (or at least collect them somewhere so others can fix them)

Isn't the comment feature of the App Store enough for communication with the author? I would think so. If the author doesn't provide anything this is fine. At least there are comments below the app itself in the App Store, where feedback can be given. And if the app is that bad, it will get a bad rating.
The store was specifically designed to avoid comments and just go for something like ratings/reviews: you can post a review once for an app that's it. Everything else leads to bug reports or feature requests like on the old app store.

So if you don't add anything people will get redirected to the forums right now

Resolving patch:
diff --git a/nextcloudappstore/core/scaffolding/archive.py b/nextcloudappstore/core/scaffolding/archive.py
--- a/nextcloudappstore/core/scaffolding/archive.py
+++ b/nextcloudappstore/core/scaffolding/archive.py
@@ -23,6 +23,7 @@ def build_files(args: Dict[str, str]) -> Dict[str, str]:
         'author_name': args['author_name'],
         'author_mail': args['author_email'],
         'author_homepage': args['author_homepage'],
+        'issue_tracker': args['issue_tracker'],
         'categories': args['categories'],
         'nextcloud_version': platform
     }
diff --git a/nextcloudappstore/core/scaffolding/forms.py b/nextcloudappstore/core/scaffolding/forms.py
--- a/nextcloudappstore/core/scaffolding/forms.py
+++ b/nextcloudappstore/core/scaffolding/forms.py
@@ -36,6 +36,8 @@ class AppScaffoldingForm(Form):
     author_name = CharField(max_length=80, label=_('Author\'s full name'))
     author_email = EmailField(label=_('Author\'s e-mail'))
     author_homepage = URLField(label=_('Author\'s homepage'), required=False)
+    issue_tracker = URLField(label=_('Issue tracker URL'), required=True,
+                             help_text=_('Bug reports and feature requests'))
     categories = MultipleChoiceField(required=True, label=_('Categories'),
                                      choices=lazy(get_categories, list),
                                      help_text=_('Hold down CTRL and click to '


Test patch:
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/11.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/11.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/11.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/11.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <nextcloud min-version="11" max-version="11"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.1" max-version="9.1"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10invalid.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10invalid.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10invalid.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/9and10invalid.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <nextcloud min-version="10" max-version="10"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/badcommand.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/badcommand.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/badcommand.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/badcommand.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
         <command>bad command</command>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/broken-xml.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/broken-xml.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/broken-xml.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/broken-xml.xml
@@ -7,6 +7,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies
         <owncloud min-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping.xml
@@ -8,6 +8,7 @@
     <author>Bernhard Posselt</author>
     <category>productivity</category>
     <category>tool</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_game.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_game.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_game.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_game.xml
@@ -7,6 +7,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>game</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_tool.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_tool.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_tool.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/category_mapping_tool.xml
@@ -7,6 +7,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>other</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/digits.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/digits.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/digits.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/digits.xml
@@ -7,6 +7,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/entities.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/entities.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/entities.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/entities.xml
@@ -11,6 +11,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid-elements.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid-elements.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid-elements.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid-elements.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/invalid.xml
@@ -7,6 +7,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="x9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/minimal.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/minimal.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/minimal.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/minimal.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/nextcloud.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/nextcloud.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/nextcloud.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/nextcloud.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <nextcloud min-version="10" max-version="11"/>
         <owncloud min-version="9.0" max-version="9.1"/>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_description.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_description.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_description.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_description.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_name.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_name.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_name.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_name.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_summary.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_summary.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_summary.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/no_en_summary.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/prerelease.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/prerelease.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/prerelease.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/prerelease.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/repair-and-jobs.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/repair-and-jobs.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/repair-and-jobs.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/repair-and-jobs.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.0" max-version="9.0"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/data/infoxmls/transform.xml b/nextcloudappstore/core/api/v1/tests/data/infoxmls/transform.xml
--- a/nextcloudappstore/core/api/v1/tests/data/infoxmls/transform.xml
+++ b/nextcloudappstore/core/api/v1/tests/data/infoxmls/transform.xml
@@ -8,6 +8,7 @@
     <licence>agpl</licence>
     <author>Bernhard Posselt</author>
     <category>multimedia</category>
+    <bugs>https://github.com/nextcloud/news/issues</bugs>
     <dependencies>
         <owncloud min-version="9.1" max-version="9.2"/>
     </dependencies>
diff --git a/nextcloudappstore/core/api/v1/tests/test_parser.py b/nextcloudappstore/core/api/v1/tests/test_parser.py
--- a/nextcloudappstore/core/api/v1/tests/test_parser.py
+++ b/nextcloudappstore/core/api/v1/tests/test_parser.py
@@ -37,7 +37,7 @@ def test_parse_minimal(self):
             'developer_docs': None,
             'user_docs': None,
             'website': None,
-            'issue_tracker': None,
+            'issue_tracker': 'https://github.com/nextcloud/news/issues',
             'screenshots': [],
             'categories': [{'category': {'id': 'multimedia'}}],
             'release': {
diff --git a/nextcloudappstore/core/api/v1/tests/test_release_importer.py b/nextcloudappstore/core/api/v1/tests/test_release_importer.py
--- a/nextcloudappstore/core/api/v1/tests/test_release_importer.py
+++ b/nextcloudappstore/core/api/v1/tests/test_release_importer.py
@@ -35,7 +35,7 @@ def test_import_minimal(self):
         self.importer.import_data('app', result['app'], None)
         app = App.objects.get(pk='news')
         self._assert_all_empty(app, ['user_docs', 'admin_docs', 'website',
-                                     'developer_docs', 'issue_tracker'])
+                                     'developer_docs'])
         # l10n
         app.set_current_language('en')
         self.assertEqual('News', app.name)
@@ -51,6 +51,9 @@ def test_import_minimal(self):
         self.assertEqual(1, app.categories.count())
         self.assertEqual('multimedia', app.categories.all()[0].id)
 
+        self.assertEqual('https://github.com/nextcloud/news/issues',
+                         app.issue_tracker)
+
         self.assertEqual(0, app.screenshots.count())
         self.assertEqual(0, Screenshot.objects.count())
 
diff --git a/nextcloudappstore/core/scaffolding/tests/data/info.xml b/nextcloudappstore/core/scaffolding/tests/data/info.xml
--- a/nextcloudappstore/core/scaffolding/tests/data/info.xml
+++ b/nextcloudappstore/core/scaffolding/tests/data/info.xml
@@ -10,6 +10,7 @@
     <version>0.0.1</version>
     <namespace>TheApp</namespace>
     <category>tools</category>
+    <bugs>https://test.com</bugs>
     <dependencies>
         <owncloud min-version="9.2"/>
         <nextcloud min-version="11" max-version="11"/>
diff --git a/nextcloudappstore/core/scaffolding/tests/test_archive.py b/nextcloudappstore/core/scaffolding/tests/test_archive.py
--- a/nextcloudappstore/core/scaffolding/tests/test_archive.py
+++ b/nextcloudappstore/core/scaffolding/tests/test_archive.py
@@ -17,6 +17,7 @@ def setUp(self):
             'author_email': 'author email',
             'author_homepage': 'author homepage',
             'platform': '11',
+            'issue_tracker': 'https://test.com',
             'categories': ['tools'],
         }