From OpenSCADAWiki
Jump to: navigation, search

On this page you can get the "To Do" list and pool tasks of the project. "To Do" list is not connected to the time ranks, but it is structured by subsystems. "To Do" list and pool are provided to represent the general development picture, and to post notes for the developers' examination. The developers can append, apply and note tasks for themselves.

1 Documentation

2 Site of the project

  • (+) Select a new OpenSCADA Wiki engine from WackoWiki 5.4 or MediaWiki. In the main criterions:
    • 10*[10,5] compatibility or simplicity for the original Wiki content migration — the procedure "wacko2media" into OpenSCADA was created to simplify the migration for most syntax specific of the WackoWiki;
    • 9*[0,10] multilanguage from box;
    • 8*[0,10] UTF-8;
    • 9*[8,10] big page's content;
    • 9*[10,10] subpages including;
    • 5*[3,5] correct searching;
    • 4*[2,5] correct the syntax highlight for source texts;
    • 4*[2,10] allow template/skeleton pages for their include as IFRAME into TYPO3, test on FAQ and also for OpenSCADA generated pages.
    • 4*[3,5] easy for print-ready documentation generation from Wiki, see to different tools: export through LaTEX, asciidoc, pandoc (mostly broken for MediaWiki tables), DocBook; seems better way here is export to HTML and whether present it as off-line documentations or convert it to PDF;
    • Summary[305,505]: then in formal the migration to MediaWiki was started!
  • Wiki-resource:
    • (+) make the Wiki-structure clean to use for the online documentation call from OpenSCADA and the offline documentation generation;
    • (*) migrate current OpenSCADA Wiki materials to the selected new WikiEngine, move languages to /en, /uk, /ru and etc.;
    • merge user accounts on the main-site (TYPO3) and Wiki (MediaWiki).
    • (9) prepare a script for the off-line documentation of OpenSCADA source tree automatic generation/obtaining/updating from the Wiki.
  • (9) Redraw the project logotype.
  • Prepare a funding button on the main page for link to:
  • (*) Prepare a donate button, mostly from PayPal but it isn't available for Ukraine yet. Now there was prepared a donate button from WebMoney, but only Russian.
  • (9) Update and refresh the project gallery.
  • Use OpenSCADA Web-functions for complex and management pages at the main site: fund and tasks control, works and solutions pool for implement by the participants.

3 Testing/optimization and fixing

  • UI.{Vision,WebVision}: The primitive "ElFigure" full revision. There needs checking for align of the coordinates. Performance optimization. Revise events processing. Fix known bugs:
- (9) The edit mode is broken at any project execution in runtime.
- Mirroring lack and it appending in the full features is difficult but the code's original style is bad.
- The copy buffer clearing after selected items copy, impossible for the copy repeat.
- Fix for selecting upper figure's point instead lower one selection on the point moving try.
- Flaws between adjacent inundations, often for not orthogonal angles.

4 System generic

  • Work out for developing, using, integration to solutions, concept of the support of the OpenSCADA project. Expand the community targeting for implementation control of:
    • tasks: tasks pool, fund and fundraising; developers register, ranks for participate into the tasks.
    • solutions: register a task of the solution implementation (by consumer), set demands to the task and performer, set the price limit; each performer propose self price; consumer select a performer. Commission from the order price to the project is 10%.
  • Prepare and form achievements into the firmwares and builds for "ICP DAS" LinPac (LP) to a product.
  • Adapt OpenSCADA parts directly to IPv6.
  • Adapt to the software platform Android:
+ purchase a modern internet tablet with Android;
+ read a book about Android NDK, using of Android NDK and Crystalx-NDK;
+ compiling for tests, education and execution;
+ initially (minimum) build and execute OpenSCADA for console (without GUI): PCRE, OpenSCADA Core, builtin modules: Transport.Sockets, Protocol.SelfSystem, DAQ.JavaLikeCalc, Special.FLibMath;
+ make the performance tests for Soft and Hard float;
+ compile for all OpenSCADA key modules to include/builtin them into the core;
+ compile for needed external libraries: OpenSSL, SQLite, GD [expat,libpng,jpeg,fontconfig,freetype], intl, iconv;
+ rebuild all already built parts into the original Ndk (outward the standalone one);
+ build Qt5: in the default configuration, with the early built libraries;
+ initial build OpenSCADA with Qt5;
+ build and observe an example of Qt5 as a Java package (APK);
+ adapt OpenSCADA to Qt5 on Android and build as a Java package (APK); get the program's locale from Java environment and set it to environment LANG;
+ the Java package (APK) resolve for different data files placing and fill in by: OpenSCADA icon and main images, configuration files, files of translation of the interface, files of DB and other of the libraries and models;
+ OpenSCADA main functions related to Qt restore and fix: Qt5 builds with soft-float but hard-float causes the mostly problems; two branches were created, based on CrystaX NDK r10 (from ABI 19) and Original Ndk r13 (from ABI 21); default interface style was set to "fusion";
- Some Android specific expandings of the project OpenSCADA:
  • update Asus Nexux7 to Android 5 or more and check for the build on original NDKr13 and for ABI 21 and more.
  • work out for possibility of deploy in separated packages: "core" (with all binaries, data and means for user's projects creation); "pre-installed" projects and models (with the project or model data and using all libraries and data from the "core" package);
  • make some redesign for main page of UI.QTStarter but the tittle image is too small for big resolutions of screens;
  • expand the module UI.QTStarter for the OpenSCADA projects management function;
  • add for using QtWebView for last Qt5 and at QtWebKit miss.
  • expand for the module [../Doc/System DAQ.System] by the Android sensors.
  • Adapt to the software platform MS Windows®:
+ adapt to modules linking directly with OpenSCADA core library, for DLL restrictions;
- build OpenSCADA initially for the MS Windows environment.
  • Dynamic text values translation and the static one unification:
+ create the conception;
+ create the translations manager;
+ implement the dynamic messages translation;
+ make the procedures translation controlled by an option;
+ make dynamic of the static text messages from gettext;
- allow the table "Tr" appending by the function tr() calls for not multi-language mode also;
- check for changing of original of the translation and write empty values to its translations;
- copy translations at the object copy.
  • Develop a mechanism for object's data removing from previous DB after the data copy to some other DB.
  • (+) XMLNode: append for symbols validation checking, for UTF-8 mostly, but there are possible problems into text fields of UI.WebCfgD and other ones for near to binary bytes of the stream.

5 Subsystem DB

  • (9) Expand the description page for access to DB by the native user API, primarily for extValue().
  • (9) Create a DB module for ODBC:
+ Main functions implementation for generic SQL requests, testing for: SQLite, MySQL, PostgreSQL, FireBird.
- Specific DBMS properties: quotes for names and values (there are generic and standard ones), ...
- OpenSCADA internal DB's layer function fieldStruct() implementation for generic SQL dialects and DBMS specific.
- OpenSCADA internal DB's layer functions fieldSeek(), fieldGet(), fieldDel() implementation for generic SQL dialects and DBMS specific.
- OpenSCADA internal DB's layer functions fieldDel() implementation for generic SQL dialects and DBMS specific.
- Generic tests passing for: SQLite(there are some problems into allowed connectors), MySQL, PostgreSQL, FireBird.
- A ODBC connector of DBMS Oracle testing.
  • (+) Create a DB module for OpenLDAP.
  • Create a gate module to other OpenSCADA station's DBs.

6 Subsystem "Transports"

  • Implement for an agent of the SNMP protocol. Examples are into: NUT.
  • Create a transport for ØMQ.
  • Create a gate module to other transports of the OpenSCADA stations.

7 Subsystem "Protocols of the transports"

7.1 HTTP

  • (+) Adapt to include and built-in to TYPO3, WackoWiki and other pages for allow build control interfaces by OpenSCADA.
  • (+) Implement for user's interface dynamic translation by selected user language.

8 Subsystem "Data acquisition" (DAQ)

+ Test for the library libiec60850.
+ Write self MMS implementation, mostly for a mode without sessions on ABB-800, replace libiec60850 fully.
- Add for sessions support optionally.
- Implement same IEC-60850 and test with "libiec60850".
  • Make for using attribute's "values" to scale for maximum and minimum into sources by FIFO mostly, and providing the values to archive by the engineer measure units.


  • Make support for asynchronous and group writing, mostly for I87x.

8.2 Comedi

  • Append for working with FIFO, by board Diamond Systems DMM-32X-AT.

8.3 Siemens

  • Review for protocols MPI and SPI into single master, check for possibility of their direct using through pure RS-232/485.

8.4 OPC-UA

  • Separate the "EndPoint object of the input part to types "Discovery" and "Data".
  • Append an input transport automatic creation and its pre-configuration from properties of the EndPoint object.
  • Reread the OPC-UA specification and set implementing to it.
  • (9) Append the authentication support to the input protocol part.
  • (+) Implement chunks for big requests.
  • Implement and process of the "Publish" request-service into the client part.
  • Append support for the history services for the server part, see and test against UAExpert negotiation.
  • Append support for the history services for the client part.
  • Add the transport HTTP/SOAP.

8.5 System

  • Append for system memory consumption per process.
  • (9) Append for Android sensors.

9 Subsystem "Archives"

  • Move for the critical section locking from the object TValBuf to its heir to allow the global lock into group operations.
  • Create a gate module to archives of other OpenSCADA stations.

10 Subsystem "Special"

11 Subsystem "User interfaces"

11.1 QTStarter

  • (9) Expand to implement the project management functions, mostly to omit a "dialog" program lack and for Android.
  • (9) Create for projects list into the system (pre-installed) and the user's folder for the projects selection by work folder changing to the one of the project. Then a project for pure starting/managing can provide only the module UI.QTStarter.
  • (9) Implement for managing operations of the project: add, remove, rename.
  • (9) Implement for language selection of the selected project.
  • (9) Implement for a manager of sub-projects to their starting into different processes but with the ones storing and managing into the single configuration file of the project, for high reliable configurations.
  • (9) Implement for a manager of the background, daemon processes.

11.2 WebVision

  • Expand the view "Button" of the primitive "FormEl" for the extended modes.
  • Expand the view "Table" of the primitive "FormEl" for user sorting by the selected column.
  • Append an user-accessed general panel with functions: The project documents call, Export, Print, Alarm statuses, User control-change, Style control-change.
  • ElFigure,Diagram: enable or make the anti aliasing, for the library GD.
  • Implement the primitives "Diagram", "ElFigure" into the tag "canvas" and/or "SVG".
  • Append checking for the connection and its lost detection with a dialog to this issue indication and some doings.
  • (+) Implement for user's interface dynamic translation by selected user language.

11.3 VCAEngine

  • Append for image files edition user API for raster (PNG, JPEG, GIF), by LibGD2, and vector (SVG).
+ Append images loading and saving their changes into the session table from user procedure, allow to edit for SVG (XML).
- Implement for main functions of the GD object (into Special.FLibSYS).

11.4 VCAEngine, Vision

  • Move requests to the VCA Engine for asynchronous for RunTime and Development modes. For RunTime use a dialog with "Retry now" and for Development one use a way like to UI.QtCfg.
  • Implement for the view "Table" of the primitive "FormEl".
+ Implement for the generic display mode.
+ Implement for the edition mode of the contents of the cells.
- Implement for run-time management for rows and columns.
  • Make for pages list into the project tab to ordered for hand-fix — to allow for switch in controlled order.
  • Implement for background execution of the edited pages into the development mode — further for visual diagram forming jointly BlockCalc and DAQ-sources at all.

11.5 VCAEngine, Vision, WebVision

  • Append for the user-space global menu by the project-specific properties.
  • Implement of primitive "Diagram" and some other forming into the primitive "Document" as an image on file system and allow their embedding to the document. For now you can manually use the SVG graphics to build this sort images.
  • (+) Append of messages history browsing to the project "Archive" of the VCA library.
  • Develop the "Function" primitive.
  • Develop the "Link" primitive.
  • Implement for dynamic frames developing by placing the shapes of the BlockCalc blocks and the DAQ-sources at all and the related objects creation into OpenSCADA objects model.

11.6 WebCfgD

  • Set context of the table fields limited for too big data.

11.7 QtCfg

  • Append to the tree part for the tabs and the tab "Chosen" for procedures, like import, or other fast access.
(9) — will be useful and can be implemented into the forthcoming release 0.9LTS