Skip to content
New issue

Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.

By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.

Already on GitHub? Sign in to your account

Collaboration vs fork #66

Open
clefebvre opened this issue Aug 7, 2020 · 27 comments
Open

Collaboration vs fork #66

clefebvre opened this issue Aug 7, 2020 · 27 comments

Comments

@clefebvre
Copy link
Contributor

clefebvre commented Aug 7, 2020

Hi @VinDSL,

Congratulations on this tool. It's a fantastic idea. I couldn't find your contact details and I'm not really sure who else to get in touch with. Maybe we can gith-poke people here if needed.

We'd like to add a Web-app manager like ICE in the next version of Linux Mint. After taking ICE for a ride I find it to work well but there's so many changes I'd like to implement, I'm not sure how to go ahead with this.

I'd like to get in touch with you and the other devs so we can discuss the changes and see how to proceed:

  • If you're happy with the changes we could simply implement them in ICE.
  • If you're happy with some of the changes we could make them optional (via a gsettings override for instance so different distributions could ship with the same ICE but with different default settings).
  • If you don't like the changes but you'd like us to collaborate on the core, we could help separate the UI-tool from the utility functions (so we'd each have our own web-app tool but they'd use the same ICE backend scripts and all on which we'd collaborate).
  • Or we could fork it all simply and keep in touch and send you patches when relevant.

Here are some of the changes I'd like to implement:

  • A completely new UI, more like window and less like a dialog, using stack switcher to move from a main screen that lists the entries to a create and/or edit screens, without buttons in the headerbar.
  • Preference for named icons and usage of XappIconChooser which allows to provide a set of recommended icons ootb. Getting the favicon is a great idea too, we'd keep that, but as an optional secondary option.
  • Hide browser choices for browsers which are not installed.
  • Hide SSB choice.
  • Hide menu category choice.

These changes could be made optional and have no impact at all. Even the new UI, could be an additional UI in addition to the existing one, and we could make the tool use one UI or another based on gsettings. We'd just need to separate UI and utility functions a little bit more first.

The changes below are important also, but they couldn't be made optional:

  • Launchpad-based translations (to ensure the tool is translated in all major languages and fast, we can't ship it if it's not translated, we'd take over this aspect either temporarily for the tool to reach a good level of translation or permanently.).
  • Generic name in the application menu (something like "Web apps" or "Web Applications Manager" rather than ICE). We'd still have "ICE" and a link to here in an about dialog.

If you'd prefer a collaboration on the core but not go ahead with the UI changes we could do the following:

  • We'd make PRs to split ice into two packages "ice" and "ice-common".
  • Your UI frontend would go into "ice". Utility functions, scripts etc... would go in "ice-common".
  • We'd work with you here on the common part.
  • We'd develop our own UI frontend with its own translations and ship with ice-common.

Let me know your thoughts about all of this.

@clefebvre
Copy link
Contributor Author

Hi @VinDSL and @PizzaLovingNerd,

I got an email from @VinDSL telling me you were interested in working with us on this but I don't yet know how.

On our side we got things moving a bit. I started working on the UI first since this was completely separate from ICE. I then worked on the backend and I approached this as a rewrite but I kept it as close as ICE as possible.

I also completely separated the UI from the backend.

And I made the backend 100% compatible with ICE (it reads ICE files, it writes files ICE can read).

https://github.com/linuxmint/webapp-manager/blob/master/usr/lib/webapp-manager/common.py#L77

The UI itself looks like this:

image

It defaults to showing the apps. Adding/editing switched the content to a dedicated page:

image

@clefebvre
Copy link
Contributor Author

The backend is very similar to yours. I simplified the code but the features are almost the same. There's one little difference though, it does not move icon files. We want to support both icon paths and icon names so I thought that should be the responsibility of the UI, not the backend.

@clefebvre
Copy link
Contributor Author

It's arguable of course... especially since both UIs are likely to handle favicons the same way (i.e. we're likely to want to move favicon downloads and processing into utility functions into the backend). I didn't work on this yet.

@clefebvre
Copy link
Contributor Author

I found a solution to the favicon problem, I delegate the choice to the user:

https://streamable.com/xa2bpa

It's slower (since we download all found icons) and it requires user intervention, but the user experience is nice thanks to the UI. I'll make it async and add a loading screen.

@clefebvre
Copy link
Contributor Author

I'll add support for favicongrabber also.

@PizzaLovingNerd
Copy link
Contributor

PizzaLovingNerd commented Aug 17, 2020

I love this new UI. I rewrote the UI recently, but I kept it mostly the same, I just made it more compact by taking away unnecessary labels and utilizing CSDs (although I know the Mint team isn't fond of CSDs).

I'm not the official maintainer, but I would love this in ICE. I also agree with the name change to make it more generic because ICE in the USA means Immigration and Customs Enforcement, and ICE in the USA is very controversial.

Just a wish for the future, one of the reasons I am contributing to Ice is because I wish to put it in my OS called borderOS, and in the future, I want to port borderOS to the PinePhone and Librem 5, so I am trying to make everything included in borderOS mobile friendly, and my new ICE design makes it mobile friendly, so I was hoping that you could keep the UI adaptive.

Also, I recently forked Ice into Glacier because I want to add a web app store to ICE, but it got rejected on the Peppermint forums for security reasons. So I'm going to maintain a fork with this feature so it's not part of mainline ICE, so please keep some wiggle room in the new UI for me to add this feature, although since this is a separate from mainline ICE, this is not a priority, just a wish from me ;). Here is a demo of my idea although this is not the final UI, I want to make the UI different, with a sidebar for all the categories instead of a notebook bar.

Also keep up the great work with Linux Mint, it's one of my favorite distributions and I would use it forever if Linux Mint GNOME existed. But Cinnamon is great, and I love the Mint Software Manager.

Cheers

  • PizzaLovingNerd

@clefebvre
Copy link
Contributor Author

Thanks @PizzaLovingNerd :)

We're not against CSD. We're careful when it comes to UI. We want to look modern but we don't want to confuse users. When CSD came out it was poorly supported by many WMs and some GNOME apps used it in ways that made their UI look drastically different than what people were used to. So for a while we kept away from it.

Fast forward a few years and people are used to it, symbolic icons are common, WM support is excellent and so CSD becomes something we can use, we just need to use it properly.

In the screenshots above we are using CSD. That's a CSD headerbar right there, with a burger menu. It's not very different than a GTK Titlebar with a menubar and so it integrates pretty well. If we were to add buttons within the headerbar (like the Add/Remove buttons in ICE) that would be pushing things a little too far though in my opinion. This is all very subjective of course.

I'm not sure about the webapp store. I'd agree with Peppermint on this, not because of security but because of commitment and maintenance. That would be a significant amount of code to maintain for something that's beyond the scope. We could easily add a button which launches it if it's present though? If you want to fork it also, the code is brand new so it should be easy to work with.

I'll continue to separate UI and backend too, and also favicon management.

@PizzaLovingNerd
Copy link
Contributor

What can I do to help the Mint edition of ice.

As for CSDs I love GNOME so I usually follow GNOME guidelines, although I'm willing to not do that when other projects don't want that.

@clefebvre
Copy link
Contributor Author

I'm sure there'll be bugs :)

I need a few more days to make it feature complete.

@tiotrom
Copy link

tiotrom commented Aug 30, 2020

Oh it will be fantastic to look more Gnomish and also have the ability to edit webapps. I wonder if it would be possible for these webapps to use the icons from the default system icon pack if they exist.

@clefebvre
Copy link
Contributor Author

Yes, the icons can be:

  • Selected by the user from the icon theme or a local file
  • Auto-guessed from the icon theme
  • Downloaded from favicons

The ability to edit webapps was added. For now you can only edit the menu aspects though (category, name, icon), not the URL or the profile/browser settings.

Collisions were fixed, you can have multiple launchers for the same website or the same name.

The ability to show a navbar for Firefox was also added.

@PizzaLovingNerd
Copy link
Contributor

Yes, the icons can be:

  • Selected by the user from the icon theme or a local file
  • Auto-guessed from the icon theme
  • Downloaded from favicons

The ability to edit webapps was added. For now you can only edit the menu aspects though (category, name, icon), not the URL or the profile/browser settings.

Collisions were fixed, you can have multiple launchers for the same website or the same name.

The ability to show a navbar for Firefox was also added.

Let me know when the base is finished. I want to add a feature to add extensions to each individual web app (if it's isolated).

@clefebvre
Copy link
Contributor Author

It's almost finished now.

I think we need to think about the scope of each project and how they interact with each others.

You mentioned you wanted to work on your own fork as well? Who will be the main dev behind ICE going forward?

Who's using which UI? Are we all migrating towards the same backend?

I can backport quite a lot of improvements towards ICE but I need to know which parts.

@clefebvre
Copy link
Contributor Author

@PizzaLovingNerd I forgot to ask, can you describe the extensions idea more in details?

@PizzaLovingNerd
Copy link
Contributor

PizzaLovingNerd commented Sep 2, 2020

My fork was just to add a web app store that Peppermint rejected, I would still contribute some code upstream, but the web app store will be exclusive to my fork.

I would love to port over the new mint UI to regular ice because it's great, whoever if the new UI is not adaptive to work on PureOS and some of the PinePhone OSes, than I'm going to maintain my own fork to bring that back.

As for my extension idea, when you select an app, it will detect the extensions installed in the web browser that your SSB uses, and it will allow you to copy them over to your isolated apps on a pure extension basis.

@tiotrom
Copy link

tiotrom commented Sep 2, 2020

As for my extension idea, when you select an app, it will detect the extensions installed in the web browser that your SSB uses, and it will allow you to copy them over to your isolated apps on a pure extension basis.

I think this would be a super useful feature to have!

but the web app store will be exclusive to my fork.

Can you give more details about the web app store?

@PizzaLovingNerd
Copy link
Contributor

As for my extension idea, when you select an app, it will detect the extensions installed in the web browser that your SSB uses, and it will allow you to copy them over to your isolated apps on a pure extension basis.

I think this would be a super useful feature to have!

but the web app store will be exclusive to my fork.

Can you give more details about the web app store?

This is a demo for the store.
https://www.youtube.com/watch?v=RCLY25s8n6E

@tiotrom
Copy link

tiotrom commented Sep 3, 2020

Looks very interesting indeed! Thanks!

From my tests Gnome Web handles webapps in a fantastic manner and maybe some of its features could be implemented in your versions.

  1. Super easy to add a webapp from the browser itself. Would be fantastic if you could also make a browser extension that simply takes teh URL of a website + its favicon and adds them to ICE so that users can simply click Apply and that's it. You add a website as a webapp.

  2. If that's implemented it is hardly any need for a webapp store since every website is an app that can be added with a click. These apps could be managed via the extension. In Gnome Web you add apps from Gnome Web, and remove them from the same place. Seems more intuitive.

  3. Many "webapps" are kinda charlatans. They want something from the user. Hardly any is free. They collect your data, put ads into your face, offer premium features, and such. Users are not aware of these. At least Gnome Web has an inbuilt adblocker and tracker blocker, so when you create a webapp with Gnome Web, at least you won't be bombarded by ads. Let's be honest, most people who may care about these webapps probably have a few extensions installed in their browser like UBlock or PrivacyBadger. I won't use most of these websites if it weren't for these privacy extensions. So, would be fantastic if what you are working on can implement UBlock and PrivacyBadger or as it was proposed before, to use the extensions from the main browser.

  4. Navigation and control. In Gnome Web you have back and forward buttons which is really useful. Yes you can enable in your recent versions same thing but it also showcases the tabs and you can edit the url and such. Meaning, it looks as if it is a new window in firefox.

This is how it looks with ICE + Navigation enabled
image
This is how it looks with Gnome Web
image

Speaking of control, in Gnome Web external links are opened in your default browser. In ICE they are in the same window. I tried to use ICE with our NextCloud Talk app but everytime someone posted a link and I clicked it, it opened in the same window and I could not go back, nor did I want to go back. I wanted to behave like an app and open the link in my browser.

I hope these will server as a good feedback! :)

@clefebvre
Copy link
Contributor Author

clefebvre commented Sep 3, 2020

@PizzaLovingNerd the UI should work in any distribution. It's an XApp project so it'll work everywhere. I added fixes and missing dependencies today.

Similar to Peppermint, I'd prefer not to have a store, but I'm interested in your extensions idea.

@dominichayesferen
Copy link

Y'know, I half wonder if we should maybe implement a CSS mod to these custom Firefox profiles, if that's even possible, to simplify the GUI a bit to be more suited for a WebApp...

@s1-ranjan
Copy link

@clefebvre I would request you to include Education in the category.

@clefebvre
Copy link
Contributor Author

@s1-ranjan it's in.

@mire000
Copy link

mire000 commented Nov 28, 2020

@clefebvre Please can you read my post here: https://forums.linuxmint.com/viewtopic.php?f=120&t=335672&p=1927903#p1927903 . You have problem with web-app icons on XFCE panel. They doesn't appear, instead you have firefox icon for all web apps. So you can't distinguish web apps from firefox..

I resolve this using portable firefox (Firefox Nightly). I can explain you how i did this, if you interested? Or maybe you can find some better way..

Also, can you add some more futures?

What i plan to add or i already added:

  1. From my script, you can select useragent (mobile or desktop) - some sites doesn't act well with desktop useragent. It's better to use ex. instagram with mobile useragent.

  2. I removed all options from right click menu in firefox trough "userChrome.css" , and left only navigation buttons, 'take a screenshoot', 'inspect element' and 'open in new window'. Users doesn't need all other options.

  3. I plan to add backup for installed web applications.

  4. Web Store is a good idea. Users should have ability to add urls in store, and then you must have some online antivirus that checks for fake or malicious web sites, to avoid security problems.. Also users can vote, if site is good or malicious. Everyone should be careful when they install apps from web store. You don't need to maintain that part of code much..

@dominichayesferen
Copy link

dominichayesferen commented Dec 4, 2020

@clefebvre @PizzaLovingNerd I've found something interesting in Firefox that you might want to exploit:

There's a value called browser.ssb.enabled over in about:config (disabled by default). Enable this (can be enabled via user.js), and then launch firefox -ssb https://example.com/ and you'll find that Firefox has just opened Example Domain in a window that looks just like Chromium-baseds' GUI-less windows.

Obviously you can use this for ANY URL, not just https://example.com/, but it's still an important find for ICE's main feature.

@dominichayesferen
Copy link

dominichayesferen commented Dec 4, 2020

On second thought, doesn't seem ready yet as it seems as if you CAN'T right-click in it. Still, something to experiment with for sure.

@Coeur-Noir
Copy link

Coeur-Noir commented Jan 10, 2021

@dominichayesferen yes, kind of limited #52

I can see firefox as flatpak is included.

( ooops, forget about this, it just seems to work → what about internet browsers as …snap ? I know the controversy but well people might use them. #47 )

@dominichayesferen
Copy link

@clefebvre @PizzaLovingNerd I've found something interesting in Firefox that you might want to exploit:

There's a value called browser.ssb.enabled over in about:config (disabled by default). Enable this (can be enabled via user.js), and then launch firefox -ssb https://example.com/ and you'll find that Firefox has just opened Example Domain in a window that looks just like Chromium-baseds' GUI-less windows.

Obviously you can use this for ANY URL, not just https://example.com/, but it's still an important find for ICE's main feature.

Well this sure as heck aged poorly.

Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

No branches or pull requests

7 participants