Friday, June 20, 2014

Towards an IDE Model for McCLIM (Draft 2)

Outline:

  • McCLIM
    • implements the Common Lisp Interface Manager (CLIM) within a free/open source software licensing model
    • available with an "adapter", formally a "graft" for a number of window systems and GUI platforms, including X11 (CLX) and Cairo UI (GTK Cairo) 
  • CLIM defines the class, application-frame
  • The class clim:application-frame may be extended to define a class, ide-frame
    • The class ide-frame may be defined such as to provide a convenient baseline for development of graphical IDE view elements
    • configuration parser  may be defined as associated with the class, ide-frame
  • IDE view elements may be defined in a manner reminiscent of graphical application interface elements as defined within popular IDE tools, such as:
    • Filesystem view
      • parameter: Root filesystem pathname (pathname directory)
      • parameter: Filesystem element filter function 
        • arg: filesystem pathname
        • return: boolean "display-p" value
    • File view
      • parameter: File pathname
      • associated concept: File view controller
        • define as a CLOS class, file-view-controller
        • dispatch on filesystem type, e.g. (defgeneric get-file-view (file controller))
        • initialize class and bind to *default-file-view-controller*
        • reference class of file view controller within IDE configuration data
    • Workspace view
      • Extend on workspace definitions created by Eclipse IDE
        • define parsers for workspace metadata as created by the Eclipse IDE 
        • include "check" for "workspace in use", preventing access to files within a "workspace in use", to minimize concurrency conflicts during file editing
      • Workspace URI, index, and structure -- CORBA (TO DO: IDL Interfaces)
    • SCCM views
      • SCCM local source tree view, and SCCM repository view
        • dispatch SCCM view selection per type of SCCM system in use within a root SCCM directory
        • incorporate with an interface (FFI, shell commands, or Lisp) onto each supported SCCM model (cf. Emacs VC Mode)
        • Observe that a local source tree for an SCCM system such as Git would be, simultaneously, a local source tree and an SCCM repository 
        • SCCM repository URI and index system -- CORBA (TO DO: IDL Interfaces)
    • Toolchain views
      • Reminiscent of Eclipse IDE perspective definitions (???) but focused on discrete classes of toolchain elements
      • Toolchain category: GCC
      • Tooclhain category: Lisp interpreter
      • ...
  • To do: Prototype sometime after defining a CLIM adapter i.e. "graft" and/or CLIM widget layer onto CommonQt (?)
    • Requirement: Suitable HCI responsiveness
    • Alternate consideration: Native XLib FFI interface (CFFI)
      • Implement: X11 SHM interfaces
      • Limitation: Further complexity in CLIM HCI model on Microsoft Windows platforms
        • The Microsoft Windows Explorer Desktop Shell is not X11R6
        • cf. XMing and/or Cygwin
      • Limitation: Applicability of Shared Memory models in Common Lisp applications
        • Objects referencing shared memory
        • Shared memory references should remain immutable (?)
    • Alterate consideration: Use GTK Cairo interface on Microsoft Windows Platforms
      • GTK Cairo integration for mobile OSes?
        • Firefox OS (?)