neutralinojs / gsoc2024

Google Summer of Code 2024 ideas - Neutralinojs
70 stars 20 forks source link
google-summer-of-code gsoc neutralinojs

GSoC 2024 - Neutralinojs

Google Summer of Code 2024 ideas and guidelines - Neutralinojs

What is GSoC?

GSoC (Google Summer of Code) is an international program that motivates developers to contribute to open-source projects. Google awards stipends for contributors who successfully complete the GSoC program. GSoc contributors typically work on open-source development tasks under the guidance of organization mentors. Read more details about GSoC from the official website.

How to become a GSoC contributor?

Anyone (including beginners and students) who is older than 18 can become a contributor with the GSoC 2024 program. Check more details about contributor eligibility from this link.

Follow these steps to get started with GSoC 2024 as a contributor:

How to start writing a project proposal?

What is the project proposal template?

Please create your GSoC proposal according to the following outline:

GSoC 2024 project ideas

We have listed down some crucial tasks below for contributing. But, feel free to discuss your own ideas with us via Discord or email (neutralinojs[AT]gmail.com). You can contribute Neutralinojs framework, CLI, client library and templates.

Thank you for contributing to open-source 🎉

1. Neutralinojs Builder: a community project to generate Neutralino app packages

Neutralinojs CLI generates platform-specific binaries for Linux, macOS, and Windows with a platform-independent resource file. Right now, Neutralinojs application developers need to use various tools to generate application installers (i.e.,: AppImage, NSIS) for each operating system. However, we have no plans to add application installer generation support to the official CLI to keep the CLI implementation minimal and less platform-dependent. Therefore, the Neutralinojs community has initiated a project called "Neutralinojs Builder" to generate application installers. The Neutralinojs builder project is still a POC and experimental, so the idea is to finalize the project based on the suggested technical specification finalized by the framework developers.

Skills required: Node.js, Neutralinojs, Application bundling on operating systems

Difficulty rating: Medium

Project size: ~350h

Mentors: Shalitha Suranga, Athif Shaffy, and Sainath Rao

Suggested technical decisions

# Installing the plugin
neu plugins --add neutralinojs-builder

# neu builder <target> <arch>
neu builder nsis --x64 # NSIS setup for Windows x64
neu builder deb --ia32 # Debian package for GNU/Linux ia32
neu builder appimage --x64 # AppImage for GNU/Linux x64
neu builder deb # GNU/Linux Debian packages for all supported CPU architectures

# Use configuration from neutralino.config.json
neu builder

# Removing the plugin
neu plugins --remove neutralinojs-builder
"cli": {
  "builder": {
    "linux": {
      "targets": [
        {
          "target": "deb",
          "arch": [
            "x64",
            "ia32",
            "armhf"
          ]
        }
      ]
    },
    "win": {
      "targets": [
        {
          "target": "nsis",
          "arch": [
            "x64",
            "ia32"
          ]
        }
      ]
    }
  }
}

2. Make Neutralinojs compatible with older Windows versions

Issue: https://github.com/neutralinojs/neutralinojs/issues/486

Neutralinojs is tested on Windows 10 and 11, but it is not well-tested with previous Windows versions. The goal of this idea is to update Neutralinojs framework source, build scripts, and DevOps workflow to officially support older Windows versions.

Skills required: Windows API, DevOps, and Configuration

Difficulty rating: Medium

Project size: ~350h

Mentors: Shalitha Suranga, Athif Shaffy, and Sainath Rao

Suggested technical decisions

None -- cause needs to be indentified first

3. NodeNeutralino: a community project to explain Neutralinojs custom backends

The goal is to create a sample wrapper project to guide developers to use a Node.js backend for a Neutralinojs app with the extension API. This project will use Neutralinojs via Node.js child process API and communicate with the Neutralinojs extension API. The NodeNeutralino project's goal is to show developers how to create Neutralinojs API bindings for any language. Using the NodeNeutralino project idea, developers can create GoNeutralino, RustNeutralino, PyNeutralino, etc. i.e., PyNeutralino exposes app.window.show()-like Neutralinojs functions in Python.

Skills required: Node.js and Neutralinojs

Difficulty rating: Easy

Project size: ~175h

Mentors: Shalitha Suranga, Athif Shaffy, and Sainath Rao

Suggested technical decisions

Example NodeNeutralino app code:

const { NeutralinoApp } = require('node-neutralino');

// Accepts all configuration options available in Neutralino.window.create
// Don't manipulate the config file -- use internal CLI arguments instead. (If we update the config, NodeNeutralino will fail to work properly after 'neu build')
const app = new NeutralinoApp({
              url: '/resources', 
              modes: {
                window: {
                  width: 500,
                  height: 500
                }
              }
             });

app.init(); // Initializes the app instance

// Every Neutralino.window API function is available except window.create and draggable regions API
app.window.setFullScreen();
app.window.hide();
app.window.show();

// All other Neutralino APIs are also available
app.storage.setData('testKey', 'testValue');
app.debug.log('Hello');
app.filesystem.createDirectory('TestDir');

// Neutralino.app functions are available directly via the app instance
app.broadcast('testEvent');
app.exit();

4. Fix os.setTray function problem for older macOS versions

Issue: https://github.com/neutralinojs/neutralinojs/issues/615

The os.setTray function fails on macOS Catalina and some other versions. The goal of this task to debug the Neutralinojs macOS binary on different macOS versions and apply a generic solution.

Skills required: Cocoa API and Debugging

Difficulty rating: Medium

Project size: ~350h

Mentors: Shalitha Suranga, Athif Shaffy, and Sainath Rao

Suggested technical decisions

5. C++/JavaScript integration test system enhancements

Issue: https://github.com/neutralinojs/neutralinojs/issues/706

Neutralinojs project has a integration test suite for testing both C++ and JavaScript code at once. Currently, Neutralinojs integration tests covers minimal tests to detect possible function breakdowns. The goal of this task is to write a complete test suite covering all aspects of Neutralinojs APIs and global variables. Also, we expect to run the test suite on Windows CI instance too.

Skills required: Neutralinojs, Unit/Integration testing, Node.js and GitHub Actions

Difficulty rating: Medium

Project size: ~350h

Mentors: Shalitha Suranga, Athif Shaffy, and Sainath Rao

Suggested technical decisions

Contributing

We really appreciate your code contributions. Please read this contribution guide before sending a pull request. Thank you for your contributions.

Contributors

Past programs

Image created with contrib.rocks.