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

I propose to build AppImage and drop support of rpm and debs #1805

Open
knopki opened this issue Jun 11, 2019 · 1 comment
Open

I propose to build AppImage and drop support of rpm and debs #1805

knopki opened this issue Jun 11, 2019 · 1 comment

Comments

@knopki
Copy link
Member

knopki commented Jun 11, 2019

Currently, we build rpms and debs for Linux. And this is broken in so many way:

  • it's not normal when rpm and deb packaging on the developer side, this should be done in distributions by maintainers but it's almost impossible to include electron application into the popular linux distributions
  • updates can be shipped only by creating repositories with all that huge pain with building, signing, forcing user to add repositories configuration to their systems
  • rpm and deb targets are not first class citizens of electron-builder
  • we can't create file/url associations (see previous paragraph)
  • desktop entry for program are broken and can't be fixed because of electron-builder:
    • spaces in the path - breaks some utilities
    • path in the quotes - breaks more utilities (hello i3 users)
    • %U as argument just make program unusable on Mate/KDE
    • %U as argument force file paths in url style (file://...) - we doesn't support this

All these problems are likely to never be fixed.

Better alternatives: flatpak and snap. This should seize all major distributions. Also, build and host on flathub.org and snapcraft.io marketplaces -> more users. But, electron-builder can't do flatpak (required to use another build procedure). snap is also not easy peasy. So, flatpak and snap look more like a bright future.

Not perfect at all but realistic and practical solution is AppImage. It's like 'portable' one-file univarsal version with some integration with the system.
Pros:

  • should be more understandable by users (it's just click-and-run file!)
  • we can enable updates for linux that are consistent with win and mac
  • user rights are sufficient for installing and upgrading
  • all problems with desktop entry file are gone (created on first run with user want integration)
  • mime types created for all xod file types
  • file associations created and just works
    Cons:
  • needs much testing
  • require some transition period
  • (may be) require changes in CI/CD
  • (may be) require some changes of releases endpoint
  • require changes in site's download page

For testing purpose I changed root package.json with this build section:

  "build": {
    "appId": "io.xod.ide",
    "productName": "XOD IDE",
    "buildDependenciesFromSource": true,
    "extraResources": [
      {
        "from": "arduino-cli",
        "to": "arduino-cli"
      },
      {
        "from": "arduino-cli.exe",
        "to": "arduino-cli.exe"
      },
      {
        "from": "src-babel/workspace",
        "to": "workspace"
      }
    ],
    "linux": {
      "executableName": "xod-ide",
      "target": "AppImage",
      "category": "Development"
    },
    "appImage": {
      "artifactName": "xod-ide-${version}.${arch}.AppImage"
    },
    "mac": {
      "target": [
        "zip",
        "dmg"
      ],
      "category": "public.app-category.developer-tools"
    },
    "win": {
      "publisherName": [
        "AMPERKA, OOO",
        "Amperka, OOO"
      ],
      "target": [
        "nsis"
      ]
    },
    "nsis": {
      "oneClick": false,
      "perMachine": false
    },
    "fileAssociations": [
      {
        "ext": "xod",
        "name": "XOD Project Manifest",
        "description": "XOD Project Manifest",
        "mimeType": "application/x-xod-project"
      },
      {
        "ext": "xodp",
        "name": "XOD Patch",
        "description": "XOD Patch",
        "mimeType": "application/x-xod-patch"
      },
      {
        "ext": "xodball",
        "name": "XOD Packed Project",
        "description": "XOD Packed Project",
        "mimeType": "application/x-xod-xodball"
      }
    ],
    "publish": [
      {
        "provider": "generic",
        "url": "https://releases.xod.io/releases/latest",
        "channel": "latest"
      }
    ]
  }
@madmedix
Copy link

madmedix commented Jul 8, 2020

Sorry for the year-late comment; +1 for the AppImage.

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

No branches or pull requests

2 participants