User:Ian Clark/KISS/Rationale

From J Wiki
Jump to navigation Jump to search


GUI (Generalized User Interface) coding is an activity that gets easier with practice, but is never easy. It is a specialised skill, taking years to acquire, that expert J-ers do not naturally lean towards.

KISS stems from my opinion that it's not attractive for a GUI novice to build interfaces out of matchsticks, or to wrestle with a complex screen object such as a grid to get it to do what they want. Easy (if limited) customisation of a fully-functional tried-and tested top-end will quickly put a pretty face to a session-only J application. The end-user will see a professional looking Apple dashboard, with no obvious sign that the meat of the app is written in J.

Aim of the Project

The aim is to get the Apple App Store for OSX and iOS to accept a growing family of KISS faces, making it the buyer's responsibility to download J from for use out-of-the-box.

Offering a unified top-end is a questionable strategy. The more flexible the app the more complex it will be to customize. To this end it is better to offer a choice of "faces", each with its own special focus, e.g. business graphics, animated pictures, text, grids and lists.

It is hoped to restrict user customization to changing the text of the available labels and button-tops, picking icons to go into a toolbar, setting scalar parameters for obvious options and hiding unwanted controls. Customization may either be by editing an internal (text) file, or by calling JHS to supply identical data maintained or generated by J.

The disadvantage of the KISS approach is that a KISS app will run only on OS X and iOS devices – at least in the early days. But it is hoped eventually to port the face collection to Android.

What is KISS?

A KISS face (client) can be seen as a specialised browser which accesses a JHS server for the meat of the app, replacing the all-purpose internet browser that J normally expects. A KISS-based app thus has three parts:

  • a Cocoa-coded client (the "pretty face") that creates the dashboard window and connects with JHS as "localhost" to provide its content,
  • JHS, for use out-of-the-box as a 3rd-party "engine", but leaving it free for its original intended use.
  • a J script which defines the contents of a JHS-conforming partition having the name of the app, e.g. anna, pamela, datenow. Optionally this script will reside inside the (OS X) app itself, being shipped with the app. Alternatively the script can be distributed via Package Manager as a JAL addon.

The initial KISS collection will offer these "pretty faces":

  • Anna (text)
  • Tabitha (table or grid)
  • Pamela (labelled text fields and buttons)
  • Gertrude (gl2 graphics).

DateNow -- a proof-of-concept KISS app

DateNow is an ultra-simple sample app now available in beta. It is only intended as a proof-of-concept and doesn't do a useful task in itself. But the above range of "faces" will essentially consist of minor modifications to the debugged code.

Follow the DateNow link to download the Xcode project, plus a recently compiled version of the app.