Easyeditor request classic confinement

To make the review of your request easier, please use the following template to provide all the required details and also include any other information that may be relevant.


  • name: Easyeditor

  • description: Easyeditor is a robust Markdown editor designed for developers and writers.

    It mimics a full Integrated Development Environment (IDE) experience for

    Markdown projects, featuring real-time preview, HTML/PDF export, and

    deep integration with version control systems.

    Key features include:

    • Real-time Markdown preview

    • Full Git integration (stage, commit, push)

    • Opening and editing files from arbitrary system locations

    • Export functionality to HTML, PDF, and TXT

    • SSTP Encryption support

    • Cloud Integration (Google Drive)

    • uses classic confinement because it’s a Tauri-based application

    requiring WebKitGTK 4.1 with full system access for file operations.

  • snapcraft: Easyeditor/snap/snapcraft.yaml at main Ā· gcclinux/Easyeditor Ā· GitHub

  • upstream: GitHub - gcclinux/Easyeditor: Easyeditor is an easy markdown editor that allows you to write MarkDown (MD) and preview it in real-time. You can save, load .md files and export to PDF

  • upstream-relation: Owner / Developer

  • supported-category: IDE

  • reasoning: Easyeditor acts as a general-purpose text editor and IDE for Markdown.

    It requires classic confinement to function correctly for the following reasons:

    1. Arbitrary File Access: As a general-purpose editor, users expect to open

     and save files located anywhere on the specific system structure (e.g., /opt,
    
     /var, secondary drives), not just within the user's home directory.
    

    2. Host Tool Integration: The application integrates with the user’s

     existing environment, requiring access to global Git configurations,
    
     SSH keys (for pushing to remotes), and GPG keys located on the host system.
    

    3. Technical Requirements: This is a Tauri-based application requiring

     WebKitGTK 4.1 with full system access for file operations and correct 
    
     rendering behavior which strictly confined environments often restrict.
    

I understand that strict confinement is generally preferred over classic.

I’ve tried the existing interfaces to make the snap to work under strict confinement.

Note that snappy-debug can be used to identify possible required interfaces. See https://snapcraft.io/docs/debug-snaps for more information.

This request has been added to the queue for review by the @reviewers team.

Not a reviewer, however, I can’t help leaving some feedback regarding this application:

I don’t normally categorize Markdown editors as IDEs:

An integrated development environment (IDE) is software that provides a relatively comprehensive set of features for software development. An IDE is intended to enhance productivity by providing development features with a consistent user experience as opposed to using separate tools, such as vi, GDB, GCC, and make.

At a minimum, an IDE typically supports source-code editing, source control, build automation, and debugging. An IDE may include support for integrating tools such as a compiler, runtime environment or version control system, but sometimes such tools are bundled with the IDE.

– Quoted from Integrated development environment - Wikipedia by Wikipedia contributors, CC-BY-SA 4.0 International

but feel free to prove me wrong.

The first half of this statement makes little sense as neither ā€œTauri-basedā€ nor ā€œWebKitGTKā€ is related to arbitrary file access.

As one who frequently do Markdown editing I rarely need to edit files outside my home directory.

Secondary drives are already covered by the removable-media interface.

As for access to other paths this falls under the ā€œunsupportedā€ category of classic confinement applications:

Unsupported

  • access to arbitrary files on the system because the application isn’t designed with confinement in mind (if a desktop application, use portals or xdg-open)

– Quoted from Process for reviewing classic confinement snaps - store-requests - snapcraft.io by Jamie Strandboge

So, unless you can convince the reviewers this application is indeed a full-fledged IDE this is a no-go.

These can be covered using the personal-files and system-files interfaces. I agree there are specific use cases where they won’t work, though(like certain configurations that do call host tools) but supporting these use-cases might not be enough for the justification of granting classic confinement on the Store.

The ssh-keys interface | Snapcraft documentation

The gpg-keys interface | Snapcraft documentation

Which rendering behavior? I believe such problems should be considered as a bug to the components that introduces the behavior instead.

Also if such behavior are due to the incorrect resource locating of these components, it can be solved via the usage of Layouts.

It appears that you have already published classic-confined snaps on your GitHub Releases page: Releases Ā· gcclinux/Easyeditor

(Great job, by the way.)

I would suggest sticking with that and implementing an update-checking mechanism so that the users can be informed of new releases.

I do not want to be rude, but @gcclinux is it anyway possible that the creation of your snapcraft manifest was influenced by LLMs? Because there is a pattern I am seeing lately, and yours one actually fits to it.

Hey folks!

Regarding the request for classic confinement, is a sensitive matter and it is reserved for mature, well-known applications published by mature, well-known entities. As of today, I believe that easyeditor doesn’t meet this criteria because of the following reasons:

  • The project seems to be very fresh, according to the upstream repository

  • The projects seems to have little/none community around according to upstream repository (contributors, issues, PRs, etc.)

  • I could not find evidences that the project has a strong enough user base currently

Considering the factors presented above, I think easyeditor should not get classic confinement as of now.

I think @Lin-Buo-Ren gave you extremely good suggestions (thanks for that ^^). I would go in the direction of a confined snap in the store (which should fit most users) and maybe a classic snap distributed via github releases for these few users that really want to edit Markdown files outside their home directory

1 Like

Thank you all for your feedback, I personally do not want to use classic confident either but I spent days trying to get tauri to work with personal-files and system-files it is not only about saving files but the main issue is tauri requiring WebKitGTK 4.1 with full system access for file operations.

I have tried to include WebKitGTK inside the snap but does not work either, I was using electron before but package was 250MB in side and now with Tauri only 8MB in size so i am sticking with tauri.

If anyone fancy trying to make a snap working with strict confinement I would love to see that, you will be my personal Hero :joy:

Otherwise I will continuo uploading packages to github as I do and overtime remove un-used / downloaded packages and still to what people use the most.

Many Thanks Again.

Classic confinement does not change the fact that you need to ship all dependencies inside the snap, even a classic snap has to work without installing extra bits on the host … so you will still have to bundle WebkitGTK even then …

FYI: The gnome runtime snap does ship WebKitGTK:

$ find /snap/gnome-46-2404/current/usr/lib/ -iname '*webkit*'
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/girepository-1.0/WebKit2-4.1.typelib
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/girepository-1.0/WebKit2WebExtension-4.1.typelib
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/libwebkit2gtk-4.1.so.0.17.12
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/webkit2gtk-4.1
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/webkit2gtk-4.1/WebKitGPUProcess
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/webkit2gtk-4.1/WebKitNetworkProcess
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/webkit2gtk-4.1/WebKitWebProcess
/snap/gnome-46-2404/current/usr/lib/x86_64-linux-gnu/webkit2gtk-4.1/injected-bundle/libwebkit2gtkinjectedbundle.so

You should be able to make use of it (as long as the build tool supports it) via the gnome extension.

1 Like

I think it’s necessary to warn that there’s a chance you might encounter the same problem I saw with Minigalaxy and Hytale, where webkit2gtk isn’t found after a ā€œsnap refreshā€.

This prevented those apps from opening.

I demonstrated the situation here if you want to understand:

1 Like

I already tried that too and while the tauri frame opens my app still doesn’t and after several days trying decided to ask for classic although still be very happy if anyone manages to do it and share the snapcraft.yml with me ,:rofl: