<commit_before>TODO list
=========

Generic
-------
- [DONE] controller can be started without start of subprocesses
- SSL (optional) for protecting console-server channel
- core dump enabled launch/kill
- priority (order) in which programs are launched ...
- Unify sys.exit codes
     - 2 = configuration error

Windows
-------
- working on Windows (based on pyev / libev?)
- daemonizing is not available on Windows - provide Windows Service option instead

Console
-------
- ramonactl interface is compatible with init.d scripts (start/stop/restart/status/...)
- ramonactl is embeddable in custom python app + it is extendable to provide similar functionality as 'pan.sh':

```python
class MyConsoleApp(ramona.console_app):
	pass
	# Add 'unittest' option ...
	# Add 'floader' option ...
```

- recover (in running console) from situation when server is shutdown during run

Logging
-------
- (--log-level) command-line option
- log rotate
- log location is given as directory (or environment variable)

Configuration
-------------
- configuration is ConfigParser compatible [DONE]
- configuration files - app.conf & site.conf - describe differences, implement
- section in config to define environment variables
- environment variables expansion in configuration
- includes in config files

Watchdog
--------
- watchdog functionality (child process is signaling that is alive periodically)

Python specific
---------------
- native python program execution (using sys.executable)

HTTP frontend
-------------
- eventual HTTP frontend is subprocess using standard socket API to communicate with daemon<commit_msg>Adding new idea to TODO list.<commit_after>TODO list
=========

Generic
-------
- [DONE] controller can be started without start of subprocesses
- SSL (optional) for protecting console-server channel
- core dump enabled launch/kill
- priority (order) in which programs are launched ...
- Unify sys.exit codes
     - 2 = configuration error

Windows
-------
- working on Windows (based on pyev / libev?)
- daemonizing is not available on Windows - provide Windows Service option instead

Console
-------
- ramonactl interface is compatible with init.d scripts (start/stop/restart/status/...)
- ramonactl is embeddable in custom python app + it is extendable to provide similar functionality as 'pan.sh':

```python
class MyConsoleApp(ramona.console_app):
	pass
	# Add 'unittest' option ...
	# Add 'floader' option ...
```

- recover (in running console) from situation when server is shutdown during run

Logging
-------
- (--log-level) command-line option
- log rotate
- log location is given as directory (or environment variable)

Configuration
-------------
- configuration is ConfigParser compatible [DONE]
- configuration files - app.conf & site.conf - describe differences, implement
- section in config to define environment variables
- environment variables expansion in configuration
- includes in config files

Watchdog
--------
- watchdog functionality (child process is signaling that is alive periodically)

Python specific
---------------
- native python program execution (using sys.executable)

HTTP frontend
-------------
- eventual HTTP frontend is subprocess using standard socket API to communicate with daemon

Error reporting
---------------
- Scan output of the program for keywords (by default 'error', 'fatal', 'exception') and send email when such event occurs
{'fraction_non_alphanumeric': 0.11911764705882352, 'fraction_numerical': 0.000588235294117647, 'mean_word_length': 3.2996207332490517, 'pattern_counts': {'":': 0, '<': 3, '<?xml version=': 0, '>': 3, 'https://': 0, 'lorem ipsum': 0, 'www.': 0, 'xml': 0}, 'pii_count': 0, 'substrings_counts': 0, 'word_list_counts': {'cursed_substrings.json': 0, 'profanity_word_list.json': 0, 'sexual_word_list.json': 0, 'zh_pornsignals.json': 0}}
{'dir': 'git-commits-cleaned', 'id': '1594112', 'n_tokens_mistral': 841, 'n_tokens_neox': 819, 'n_words': 383}