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 · 22 comments
Open

Collaboration vs fork #66

clefebvre opened this issue Aug 7, 2020 · 22 comments

Comments

@clefebvre
Copy link
Contributor

@clefebvre 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

@clefebvre clefebvre commented Aug 17, 2020

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

@clefebvre clefebvre commented Aug 17, 2020

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

@clefebvre clefebvre commented Aug 17, 2020

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

@clefebvre clefebvre commented Aug 17, 2020

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

@clefebvre clefebvre commented Aug 17, 2020

I'll add support for favicongrabber also.

@PizzaLovingNerd
Copy link
Contributor

@PizzaLovingNerd 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

@clefebvre clefebvre commented Aug 19, 2020

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

@PizzaLovingNerd PizzaLovingNerd commented Aug 20, 2020

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

@clefebvre clefebvre commented Aug 20, 2020

I'm sure there'll be bugs :)

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

@tiotrom
Copy link

@tiotrom 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

@clefebvre clefebvre commented Aug 31, 2020

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

@PizzaLovingNerd PizzaLovingNerd commented Sep 1, 2020

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

@clefebvre clefebvre commented Sep 2, 2020

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

@clefebvre clefebvre commented Sep 2, 2020

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

@PizzaLovingNerd
Copy link
Contributor

@PizzaLovingNerd 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 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

@PizzaLovingNerd PizzaLovingNerd commented Sep 3, 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?

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

@tiotrom
Copy link

@tiotrom 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 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.

@feren
Copy link

@feren feren commented Sep 5, 2020

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

@s1-ranjan s1-ranjan commented Sep 19, 2020

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

@clefebvre
Copy link
Contributor Author

@clefebvre clefebvre commented Sep 28, 2020

@s1-ranjan it's in.

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

Successfully merging a pull request may close this issue.

None yet
5 participants
You can’t perform that action at this time.