{"action":"created","issue":{"url":"https://api.github.com/repos/solus-project/budgie-desktop/issues/313","repository_url":"https://api.github.com/repos/solus-project/budgie-desktop","labels_url":"https://api.github.com/repos/solus-project/budgie-desktop/issues/313/labels{/name}","comments_url":"https://api.github.com/repos/solus-project/budgie-desktop/issues/313/comments","events_url":"https://api.github.com/repos/solus-project/budgie-desktop/issues/313/events","html_url":"https://github.com/solus-project/budgie-desktop/issues/313","id":125791529,"number":313,"title":"Avoid extinction through GNOME Dependency","user":{"login":"ikeydoherty","id":164489,"avatar_url":"https://avatars.githubusercontent.com/u/164489?v=3","gravatar_id":"","url":"https://api.github.com/users/ikeydoherty","html_url":"https://github.com/ikeydoherty","followers_url":"https://api.github.com/users/ikeydoherty/followers","following_url":"https://api.github.com/users/ikeydoherty/following{/other_user}","gists_url":"https://api.github.com/users/ikeydoherty/gists{/gist_id}","starred_url":"https://api.github.com/users/ikeydoherty/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/ikeydoherty/subscriptions","organizations_url":"https://api.github.com/users/ikeydoherty/orgs","repos_url":"https://api.github.com/users/ikeydoherty/repos","events_url":"https://api.github.com/users/ikeydoherty/events{/privacy}","received_events_url":"https://api.github.com/users/ikeydoherty/received_events","type":"User","site_admin":false},"labels":[{"url":"https://api.github.com/repos/solus-project/budgie-desktop/labels/approved","name":"approved","color":"009800"}],"state":"closed","locked":false,"assignee":null,"assignees":[],"milestone":null,"comments":2,"created_at":"2016-01-10T01:03:31Z","updated_at":"2016-08-29T07:53:29Z","closed_at":"2016-07-05T22:03:43Z","body":"Currently Budgie focuses on tight GNOME integration, but approaches it in such a fashion that will undoubtedly lead to the extinction of the project. Whilst integrating into the GNOME Stack is assuredly good, relying on the GNOME stack *components* is just silly.\r\n\r\nReasoning: Many of the components we use and need for desktop functionality are also components needed for GNOME Shell functionality.\r\n\r\nTL;DR: These components are specifically for GNOME now. We need more cross-desktop building blocks.\r\n\r\nExtremely High Risk Components:\r\n-----------------------------------------------\r\n\r\nThe use of the following components require extreme hacks, workarounds or ugliness to accomplish. They should be extensible to the desktop in question, and modular where appropriate. We should not just *assume* they will be using, for example, `org.gnome.*` GSettings keys. Eventually a full Budgie session would be able to run side by side with a GNOME Session, and not conflict or alter one another's settings.\r\n\r\n**GNOME Settings Daemon** - far too tightly integrated into GNOME's system and *explicitly* requires the org.gnome.Shell interfaces. Without the severe butchery we see in `budgie-wm`, integration is a no-go. Replace this with a cross-desktop `libsettings-daemon` in C.\r\n\r\n**GNOME Control Center** - Again, tightly integrated for the GNOME Shell Experience. Once upon a time this was modular and open to extension, however it reflects the state of the rest of the stack in being completely targeted to the use of GNOME Shell Desktop Experience only. Again, replace the commonality, perhaps liaise here with elementaryOS to provide a core library to be configured to the use of each desktop. They've done excellent work with Switchboard. Perhaps a `libsettings-center`\r\n\r\n**GNOME Session** - Somewhat obvious, really. A simpler and more extendible API could be provided here to enable use on multiple platforms and desktops, and again, dropping the extreme dependency on `org.gnome.Shell` interfaces. Advise, `libdesktopsession`, and allow for both Wayland and X11 functionality.\r\n\r\n**GDM** - Alright, so it's _just_ a login manager. However the reality is that in order to _use_ GDM, you must also have GNOME Shell. For a downstream desktop this is indeed unacceptable, not to mention that GDM is *running* GNOME Shell on the login screen. In Solus alone this adds an enormous amount of overhead to a single user system. Drop it, and use LightDM. For 2.0 we'll need Wayland support, so we'll start working with the LightDM people towards Wayland goals (let's see if they're responsive to this goal)\r\n\r\n\r\nMedium, deprecation risks:\r\n-------------------------------------\r\n\r\n**gnome-menus** - Ancient by anyone's reckoning. Simply using GDesktopAppInfo is sufficient in replacing this. Do the categories work ourselves, if required we can make a submodule to account for this and translations. \r\n\r\n**Vala** - All evidence suggests that no work is happening on the compiler front in Vala, and GNOME is showing a tendency today towards the use of JavaScript and Python for primary app development. While there is no *immediate* evidence Vala is about to kick the bucket, let's not be stupid and just deprecate it's use in the *core implementation* of Budgie (We can still enable this for extensions, s'all good.).\r\n\r\nWhile the rationale for Vala deprecation may seem strong, let us not forget that 2 years ago we figured integrating all of this into the GNOME stack in this way was a Good Thing™. Life won't let you down if you're expecting a reminder on how stupid you can be.\r\n\r\nLong Term Thoughts\r\n-----------------------------\r\n\r\n**libmutter** - This isn't actually *as bad* as the other components, and Jasper has proven to be very helpful. However, with the 2.0 goals of Wayland only for Solus, we may indeed look further afield to find implementations better suited to an agnostic approach than libmutter, or indeed roll our own if needed (probably not)\r\n\r\nImplementation Status\r\n--------------------------------\r\n\r\n- [ ] Replace GNOME Settings Daemon\r\n- [ ] Replace GNOME Control Center\r\n- [ ] Replace GNOME Session (Again)\r\n- [ ] Replace GDM\r\n- [ ] Drop use of libgnome-menus\r\n- [ ] Remove Vala from the *core implementation*\r\n- [ ] Breathe easily once more.\r\n- [ ] libmutter re-evaluation (Long term)\r\n\r\n<bountysource-plugin>\r\n---\r\nWant to back this issue? **[Post a bounty on it!](https://www.bountysource.com/issues/29738393-avoid-extinction-through-gnome-dependency?utm_campaign=plugin&utm_content=tracker%2F593746&utm_medium=issues&utm_source=github)** We accept bounties via [Bountysource](https://www.bountysource.com/?utm_campaign=plugin&utm_content=tracker%2F593746&utm_medium=issues&utm_source=github).\r\n</bountysource-plugin>"},"comment":{"url":"https://api.github.com/repos/solus-project/budgie-desktop/issues/comments/243056494","html_url":"https://github.com/solus-project/budgie-desktop/issues/313#issuecomment-243056494","issue_url":"https://api.github.com/repos/solus-project/budgie-desktop/issues/313","id":243056494,"user":{"login":"nazar-pc","id":928965,"avatar_url":"https://avatars.githubusercontent.com/u/928965?v=3","gravatar_id":"","url":"https://api.github.com/users/nazar-pc","html_url":"https://github.com/nazar-pc","followers_url":"https://api.github.com/users/nazar-pc/followers","following_url":"https://api.github.com/users/nazar-pc/following{/other_user}","gists_url":"https://api.github.com/users/nazar-pc/gists{/gist_id}","starred_url":"https://api.github.com/users/nazar-pc/starred{/owner}{/repo}","subscriptions_url":"https://api.github.com/users/nazar-pc/subscriptions","organizations_url":"https://api.github.com/users/nazar-pc/orgs","repos_url":"https://api.github.com/users/nazar-pc/repos","events_url":"https://api.github.com/users/nazar-pc/events{/privacy}","received_events_url":"https://api.github.com/users/nazar-pc/received_events","type":"User","site_admin":false},"created_at":"2016-08-29T07:53:29Z","updated_at":"2016-08-29T07:53:29Z","body":"I just want to add that I really appreciate that you're at least thinking about this!\r\n\r\nMy use case is not Solus OS and not even Budgie Desktop in general. I'm crafting own small custom session for own use (Compiz+Unity Settings Daemon+Plank+Budgie panel right now) based on Ubuntu. It is extremely painful for me (as I'm web developer, not working on DEs) to bring together what I want because of GNOME3 components being incredibly tightly coupled into pieces that shouldn't be together (like Mutter handling hotkeys). It is impossible to use G-S-D hardly depends on Mutter, while I want Compiz (thankfully, U-S-D despite own weaknesses works autonomously). Wingpanel from Pantheon (Elementary OS) depends on Gala (Mutter fork). Budgie panel depends on budgie-wn (Mutter fork I believe?) albeit it partially works and is still useful. Literally, the only 2 components I have literally no problems are: Compiz and Plank.\r\n\r\nIf you make your components relatively independent (Elementary OS work towards this already), I'd be happy user of your components and will support project in different ways to ensure it matures and enriches far into the future."}}
{"actor":{"display_login":"nazar-pc"}}