This site has been retired. For up to date information, see handbook.gnome.org or gitlab.gnome.org.


[Home] [TitleIndex] [WordIndex

Problem Description

While we are talking of GNOME OS and GNOME as a brand itself, we will need a good app story and for that we'll need a good developer story too. Currently we already have a nice set of libraries and with the help of GObject-introspection, we have bindings for them for many high-level languages. While high-level languages makes it very easy to make use of our platform to create new apps, it still needs:

1. A lot of typing and therefore in practice also a real keyboard.

2. Programming skills/knowledge.

It would be very nice to have a tool that allows user to program:

1. without having to type a single line of code

2. without learning any programming concepts or read any documentation/manual

Proposed Solution

Jigsaw puzzles is a concept most people are familiar with and a jigsaw puzzle piece can easily represent a 'function' and 'methods' in programming (inward 'ditch' would be an input argument and outward 'bump' an out argument). One thing that functional programming has taught us is that we can represent almost anything with functions and basic data types. In essence it is possible to create a visual programming tool that allows a user to create apps by putting jigsaw puzzle pieces together. Different data types could be represented by different colors so gradients could be used to visualize transformation of data by a function.

Conditions can be very easily represented as functions (just like in any functional programming language). Constants can be handled by a special pieces that has only one bump and a widget inside (text entry, spin button etc) to define the constant (yes yes, for strings we will have to type).

The user shall be exposed to an empty black board, onto which they will place pieces (as if they are solving a jigsaw puzzle). They will be able to slide open another view (lets call it 'selection view') to all available pieces and containers of pieces, where they can easily browse and select the piece of their choice. The pieces that will be available in the top level in selection view shall be the ones providing essential programming tools: conditions, constants etc. Also available on the same level shall be containers representing all introspectable libraries. Within those containers, shall be the API of these libraries exposed as jigsaw pieces.


2024-10-23 11:35