{"action":"closed","issue":{"url":"https://api.github.com/repos/owncloud/phoenix/issues/146","repository_url":"https://api.github.com/repos/owncloud/phoenix","labels_url":"https://api.github.com/repos/owncloud/phoenix/issues/146/labels{/name}","comments_url":"https://api.github.com/repos/owncloud/phoenix/issues/146/comments","events_url":"https://api.github.com/repos/owncloud/phoenix/issues/146/events","html_url":"https://github.com/owncloud/phoenix/issues/146","id":329067454,"node_id":"MDU6SXNzdWUzMjkwNjc0NTQ=","number":146,"title":"One Vue Instance to rule them all","user":{"login":"felixheidecke","id":12717530,"node_id":"MDQ6VXNlcjEyNzE3NTMw","avatar_url":"https://avatars0.githubusercontent.com/u/12717530?v=4","gravatar_id":"","url":"https://api.github.com/users/felixheidecke","html_url":"https://github.com/felixheidecke","followers_url":"https://api.github.com/users/felixheidecke/followers","following_url":"https://api.github.com/users/felixheidecke/following{/other_user}","gists_url":"https://api.github.com/users/felixheidecke/gists{/gist_id}","starred_url":"https://api.github.com/users/felixheidecke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixheidecke/subscriptions","organizations_url":"https://api.github.com/users/felixheidecke/orgs","repos_url":"https://api.github.com/users/felixheidecke/repos","events_url":"https://api.github.com/users/felixheidecke/events{/privacy}","received_events_url":"https://api.github.com/users/felixheidecke/received_events","type":"User","site_admin":false},"labels":[{"id":839285919,"node_id":"MDU6TGFiZWw4MzkyODU5MTk=","url":"https://api.github.com/repos/owncloud/phoenix/labels/enhancement","name":"enhancement","color":"a2eeef","default":true},{"id":921417380,"node_id":"MDU6TGFiZWw5MjE0MTczODA=","url":"https://api.github.com/repos/owncloud/phoenix/labels/requirement","name":"requirement","color":"ea7987","default":false}],"state":"closed","locked":false,"assignee":{"login":"felixheidecke","id":12717530,"node_id":"MDQ6VXNlcjEyNzE3NTMw","avatar_url":"https://avatars0.githubusercontent.com/u/12717530?v=4","gravatar_id":"","url":"https://api.github.com/users/felixheidecke","html_url":"https://github.com/felixheidecke","followers_url":"https://api.github.com/users/felixheidecke/followers","following_url":"https://api.github.com/users/felixheidecke/following{/other_user}","gists_url":"https://api.github.com/users/felixheidecke/gists{/gist_id}","starred_url":"https://api.github.com/users/felixheidecke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixheidecke/subscriptions","organizations_url":"https://api.github.com/users/felixheidecke/orgs","repos_url":"https://api.github.com/users/felixheidecke/repos","events_url":"https://api.github.com/users/felixheidecke/events{/privacy}","received_events_url":"https://api.github.com/users/felixheidecke/received_events","type":"User","site_admin":false},"assignees":[{"login":"felixheidecke","id":12717530,"node_id":"MDQ6VXNlcjEyNzE3NTMw","avatar_url":"https://avatars0.githubusercontent.com/u/12717530?v=4","gravatar_id":"","url":"https://api.github.com/users/felixheidecke","html_url":"https://github.com/felixheidecke","followers_url":"https://api.github.com/users/felixheidecke/followers","following_url":"https://api.github.com/users/felixheidecke/following{/other_user}","gists_url":"https://api.github.com/users/felixheidecke/gists{/gist_id}","starred_url":"https://api.github.com/users/felixheidecke/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/felixheidecke/subscriptions","organizations_url":"https://api.github.com/users/felixheidecke/orgs","repos_url":"https://api.github.com/users/felixheidecke/repos","events_url":"https://api.github.com/users/felixheidecke/events{/privacy}","received_events_url":"https://api.github.com/users/felixheidecke/received_events","type":"User","site_admin":false}],"milestone":{"url":"https://api.github.com/repos/owncloud/phoenix/milestones/1","html_url":"https://github.com/owncloud/phoenix/milestone/1","labels_url":"https://api.github.com/repos/owncloud/phoenix/milestones/1/labels","id":3187868,"node_id":"MDk6TWlsZXN0b25lMzE4Nzg2OA==","number":1,"title":"development","description":null,"creator":{"login":"DeepDiver1975","id":1005065,"node_id":"MDQ6VXNlcjEwMDUwNjU=","avatar_url":"https://avatars2.githubusercontent.com/u/1005065?v=4","gravatar_id":"","url":"https://api.github.com/users/DeepDiver1975","html_url":"https://github.com/DeepDiver1975","followers_url":"https://api.github.com/users/DeepDiver1975/followers","following_url":"https://api.github.com/users/DeepDiver1975/following{/other_user}","gists_url":"https://api.github.com/users/DeepDiver1975/gists{/gist_id}","starred_url":"https://api.github.com/users/DeepDiver1975/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/DeepDiver1975/subscriptions","organizations_url":"https://api.github.com/users/DeepDiver1975/orgs","repos_url":"https://api.github.com/users/DeepDiver1975/repos","events_url":"https://api.github.com/users/DeepDiver1975/events{/privacy}","received_events_url":"https://api.github.com/users/DeepDiver1975/received_events","type":"User","site_admin":false},"open_issues":1,"closed_issues":11,"state":"open","created_at":"2018-03-14T16:30:27Z","updated_at":"2018-07-24T12:03:56Z","due_on":null,"closed_at":null},"comments":6,"created_at":"2018-06-04T13:58:16Z","updated_at":"2018-07-24T12:03:56Z","closed_at":"2018-07-24T12:03:56Z","author_association":"CONTRIBUTOR","body":"The current state of Frontend/Phoenix application development is being questioned in the following:\r\n\r\n## Separate Instances - They dance alone\r\n[Sting - They Dance Alone](https://youtu.be/MS_bN5ECJTI)\r\n\r\nAs of now, Phoenix Apps are standalone instances of whatever JS technology the developer decides on. Communication between apps and to Phoenix happens via APIs _(OC.event)_ restricting apps NOT to know **all the data**, but instead receiving and requesting on a need-to-know basis.\r\n\r\nE.g.: Apps that extend the files-app sidebar receive data about files/folders currently being selected. More data can be requested using the js-owncloud-client if needed.\r\n\r\nStructural changes do not affect applications as long as the API stays the same, the latter can also live alongside a newer API until it reaches EOL.\r\n\r\n### Pros:\r\n\r\n- You are free to use and write whatever you feel comfortable with as long as you follow the extension and API guidelines.\r\n- you can determine what plugins can and can't do. Yes, there is a way around that but it's cumbersome and unstable.\r\n- You can easily port your existing app over to Phoenix since \"few\" changes are necessary to run your app.\r\n\r\n### Cons:\r\n\r\n- You will have to worry about offline-functionality for yourself as well as PWA support.\r\n- You also have to create your own web pack config which can be a hassle if you are doing it for the first (and even 2nd and 3rd) time.\r\n- Accessing *all the things* is hard to achieve if the necessary APIs don't exist.\r\n\r\n## Single Instance - Let's Stay Together\r\n[Al Green - Let's Stay Together](https://youtu.be/XXx6RDzR6eM)\r\n\r\nPhoenix already is a running Vue instance that can easily be extended in certain places by registering a new Vue Component.\r\nStore and Router are at your disposal and can be extended, thus having r/w access to everything everywhere. Databinding works in the global context making all the apps reactive to changes by default.\r\n\r\n\r\n### Pros:\r\n\r\n- A unified structure makes it easy for others to understand your app and extend an manipulate it in any possible way. It's the land of the free indeed!\r\n- App bundles are smaller since you don't have to pack Vue and other frameworks do not apply anyways.\r\n- You can keep certain data (kind of) private if you don't write it to the global store.\r\n\r\n### Cons:\r\n\r\n- You better learn Vue.js or else you can't play with us.\r\n- A Vue.js bug got fixed or feature was added in v2.5.16 but OC.Vue is still @ v2.4.11? Bad luck buddy!\r\n- Files_App decided to rename `filesList` to `fileList`? Your (and probably 20 other) app(s) are likely to break in the next Files_App release.\r\n\r\n# What now?\r\n\r\nThe trend is leaning towards the unified approach as the pros outweigh the cons. The smallest changes have great effects, but professional deprecation management and RC releases give 3rd parties time to adapt.\r\n\r\nReviewing Apps by the OC Staff is easy since the structure and technology is known in-house.\r\n\r\nCheck out this demo of a [unified Vue instance](https://github.com/felixheidecke/oc-unified-vue-instance)."}}
{"actor":{"display_login":"PVince81"}}