Menu

Tree [b913e1] master v2.362 /
 History

HTTPS access


File Date Author Commit
 media_player 2025-06-24 Lilit Khechoyan Lilit Khechoyan [0fe077] Release 2.361
 nls_arm 2024-06-28 nune nune [36e193] Added Instigate Application Framework v2.356 ba...
 nls_en 2025-07-23 Lilit Lilit [f837b4] Release 2.362
 src 2025-07-23 Lilit Lilit [f837b4] Release 2.362
 tst 2025-05-26 Lilit Khechoyan Lilit Khechoyan [b1d250] - Updated Framework prerequisites installation ...
 utl 2025-07-29 Lilit Lilit [b913e1] - Deleted install_prerequisites.sh script which...
 xsd 2024-06-28 nune nune [36e193] Added Instigate Application Framework v2.356 ba...
 Changelog 2025-07-23 Lilit Lilit [f837b4] Release 2.362
 Copyright 2024-11-15 Nune Badalyan Nune Badalyan [021e64] - Added Copyright, LICENSE and WARRANTY files t...
 Doxyfile 2024-12-13 Lilit Khechoyan Lilit Khechoyan [62abbd] - Updated Doxyfile
 LICENSE 2024-11-15 Nune Badalyan Nune Badalyan [021e64] - Added Copyright, LICENSE and WARRANTY files t...
 README 2025-07-29 Lilit Lilit [b913e1] - Deleted install_prerequisites.sh script which...
 Release_notes.txt 2025-07-23 Lilit Lilit [f837b4] Release 2.362
 WARRANTY 2024-11-15 Nune Badalyan Nune Badalyan [021e64] - Added Copyright, LICENSE and WARRANTY files t...
 makefile 2025-07-23 Lilit Lilit [f837b4] Release 2.362
 user_guide.odt 2024-08-02 Nune Badalyan Nune Badalyan [fcb32d] - Added install scripts in utl directory
 nls 2024-06-28 nune nune [36e193] Added Instigate Application Framework v2.356 ba...

Read Me

Introduction

This is the README file of Instigate Application Framework Version 2.362 developed by Instigate Design CJSC.

CONTENTS
    1. Getting Started

    2. Prerequisites

    3. Compilation

    4. Installation

    5. Usage

    6. Troubleshooting

    7. Maintainers

    8. Future Scope


1. Getting Started

The main goal of Application Framework is to provide set of libraries
and tools to improve performance of R&D, QA, Applications, Tech Writers
and Managers teams working on a SW product. This was specifically created
to increase performance and competitiveness of Instigate Design CJSC in its
main business - Software and Hardware Design services and consulting.

Special tools and libraries are available for EDA tools in particular,
however the framework is far more general than a typical EDA-specific
application cockpits and databases. Examples of non-EDA SW that would
benefit from Framework equally well are:

    - Integrated Development Environments for programming languages,
      which include source level debuggers, profilers, etc.

    - Embedded applications for mobile devices, such as
      video/audio/photo players/viewers, e-mail/IM clients, etc.

    - General purpose applications such as file managers,
      Web Browsers, Word Processors, etc.

The main distinguishing factors of Instigate Application Framework from
other similar projects and systems are:

    - The Framework was designed based on real need at Instigate Design to
      develop very different types of applications for very different
      customers. Therefore it is based on real use-cases and
      user-stories, and not hypothetical problem statements and
      contemplation "in the vacuum" about what such Framework should do.

    - The Framework is fundamentally based on the embedded scripting
      language, which provides huge benefits such as: automatic
      support of basic database operations in both GUI and Command
      Line interface; automatic serialization (persistency) of
      in-memory data structures onto disk database; automatic
      generation of high-quality reference-manual for users of the
      application; automatic support of modern GUI features such as
      copy/cut/paste, undo/redo, drag'n'drop, and many others.

    - The level of abstraction from GUI Look & Feel details
      is unprecedented and allows to write same code and use it
      with GTK+ and in future other underlying toolkits.
      Similarly the level of abstraction from underlying scripting
      language allows to write same code and obtain application with
      TCL, Python, JS, Guile support and in the future also with other
      languages.
      Finally, level of abstraction from underlying persistence
      mechanisms allows to save/load the data in XML and TCL formats.

    - Cut/Copy/Paste, Undo/Redo, Drag'n'Drop are fully implemented.

    - Export documentation is available both for the application and
      the document being edited by the application (if applicable).

    - Weak notion of "error" and support of "permissive" operation
      is available

    - GUI dialogs are auto-generated, and support complex dynamic
      scenarios

    - Automatic Replay of actions is supported to create demo scenarios
      of the Application using scripts

    - Build system support with various types of packaging

    - 3 OS versions are supported (Ubuntu 22.04, CentOS7 and Bagrevand 12.*).

2. Prerequisites

For each OS corresponding script is supported to install prerequisites. They are
located at ./utl directory:
        - install_prerequisites_bagrevand.sh
        - install_prerequisites_ubuntu.sh
        - install_prerequisites_centos.sh (is not ready yet).

Please use appropriate install_prerequisites_<OS>.sh script when performing
upcoming instructions.

To install prerequisites please follow these steps:
    a) Run ./utl/install_prerequisites_<OS>.sh script to install all required
    native libraries and Instigate FOSS libraries on your environment.
    User can specify his/her own <install_prefix> path via '-p' or '--prefix'
    options.
    All tools/libraries will be installed at
    <install_prefix>/instigate-software' path.
    By default <install_prefix> will be '/opt/'.
    If default path is used you should run the script as a root user:
    sudo ./utl/install_prerequisites_<OS>.sh

    System tools and third party libraries will be installed at
    <install_prefix>/instigate-software/gnu_system path.
    Instigate FOSS libraries will be installed at
    <install_prefix>/instigate-software/os3/2.0 path.

    b) Create symbolic link in /tmp pointing to install directory:
    ln -s <install_prefix>/instigate-software /tmp/instigate-software

    The path to Instigate FOSS libraries should be specified to
    INSTIGATE_OS3_PATH env variable in the top level makefile:
    export INSTIGATE_OS3_PATH := /tmp/instigate-software/os3/2.0

    This value has been assigned in top level makefile by default.

    Note: You can create the symbolic link at a different path, but be sure
          to set INSTIGATE_OS3_PATH environment variable accordingly.

    export INSTIGATE_OS3_PATH := <your_path>/instigate-software/os3/2.0

    Note: If a symbolic link is created in the /tmp directory, it must be
          recreated after each system restart.

3. Compilation

ATTENTION!!!
If it is required to build the project only for 64 bit machine due to missing
gcc multi-lib support (32 and 64) update the following makefiles:
	- src/sockets/makefile
	- src/threads/makefile
	- src/vcd_core/makefile
by replacing
	'#include $(mkf_path)/lib_lib32_64.mk'
line with
	'#include $(mkf_path)/lib_lib64.mk' in the makefile

Otherwise the project will be built for both 32 and 64 bit machines.

Compile the package as follows:
    a) Configure build parameters by issuing 'make setup' command specifying:
	- release or debug build (default is debug):
          make setup build_type=<release|debug>
  	- static or dynamic linking (default is dynamic):
	  make setup link_type=<static|dynamic>
    	- enable using sdk:
	  make setup use_sdk=yes
          By default sdk_path is set to:
          /tmp/instigate-software/gnu_system/3.2/x86_64

          If you've created symbolic link elsewhere, specify it during
          'make setup' command as follows:

          make setup use_sdk=yes sdk_path=<your_path>/instigate-software/gnu_system/3.2/x86_64 build_type=release link_type=dynamic

        Note 1: all options should be specified during a single 'make setup'
	          command.
	Note 2: Based on link_type either static libraries (.a) or shared
              libraries (.so) will be built.

    b) Build the library using 'make' command.
        Multi-threaded build is supported, e.g. "make -j4" will run 4 parallel
	threads if you are running it on a quad-cpu computer.

Additional features:
    a) Run basic tests via 'make test' command.
       Test results will be available in 'test_results.txt' file and
	   'tst_results' directory.

    b) Generate documentation via the following commands:
    	- make user_docs
    	- make developer_docs
        The generated documentation will be available in the 'doc' directory.

    c) Cleanup results of previous build via 'make clean' command.

4. Installation

Use 'make install' command which will install the package under the
directory specified by the variable 'install_path'. The variable is
defined in the top level makefile and defaults to
$INSTIGATE_OS3_PATH/framework/<version>/<arch>_<build_type>

The value of 'install_path' variable should be used in the
applications which are using Instigate Application Framework
(see '5. Usage' section for details).

5. Usage

In order to build application against Application Framework you will need
to point to it from the makefile of your application using the variable
INSTIGATE_ENV_FRAMEWORK_ROOT.

Sample Application (media_payer) is provided as an example of Application
Framework usage within this package. You can move it outside the package and
use it as a standalone application.
Please follow user-guide.odt file for the details.

6. Troubleshooting

The framework has been developed to base on 80% principle, to cover
80% of the most common use-cases in GUI/UI design.

The next version is going to consider all the currently covered use-cases
as basis, and will provide more coherent and elegant solution to all.

The underlying GTK+ framework version is quite stable, but in addition
we are using the C++ wrapper (GtkMM) libraries, which are relatively less
stable.

7. Maintainer

Instigate Design CJSC
   e-mail: info@instigatedesign.com
   Phone: +374-60 510-710

8. Future Scope

a) Main goal: maximally merge Application Generator and Framework into one
        - this means that Framework classes should be defined in AppGen
        - the 100% fusion would result in something like Smalltalk
        - probably due to C++ being a compiled language that goal will not be
          reached, also because we want to remain non-intrusive
          in the case that user has own DB (not created with AppGen).
        - the 100% fused version is already being developed in parallel
          as part of Metax/Mani framework (https://instigate.academy).

b) Second major goal: complete interoperability between scripting languages
        - TCL should yield its prime role to unified C++ OO CRUD API
        - the C++ OO CRUD API should contain all major methods for
                traversing/modifying data hierarchy and invoking functions
                i.e. top() - get session, get()/set() - for properties,
                     create()/destroy() - for owned collections and
                     add()/remove() - for compositions,
                     call() - for methods and functions.
        - the same commands should be published in TCL/Python/JS/Scheme/etc
                and replace the vast amount of <type>_set_<property> and
                similar commands in the current framework.
        - it should be possible to also add methods written in e.g. Python,
                i.e. c++ should not be the only language to write functions
                or methods.
        - in case of 100% fusion: we should be also able to define classes
                in Python / JS / etc and have them fully interoperable with
                C++ and each other.


c) Third major milestone would be adding Metax ODM as back-end, which would
        allow to interoperate with Manifest framework, especially for
        apps generated using AppGenerator.

        - Currently DB is automatically saved in XML, we can add JSON support
          and instead of storing it in file-system, store in Metax

        - we further can extend FWK to make JSON schema a first class citizen
          in framework, equivalent in capabilities to classes manifested
          via C++ API.

        - 100% fusion would assume same as described in point (a) above.
Want the latest updates on software, tech news, and AI?
Get latest updates about software, tech news, and AI from SourceForge directly in your inbox once a month.