Skip to content

GSoC2015 Proposal: syslog ng configuration editor using Qt (mamenyaka)

András Mamenyák edited this page Mar 25, 2015 · 1 revision

syslog-ng configuration editor using Qt

Abstract

At the heart of syslog-ng stands the configuration file, which controls how syslog-ng manages log messages. Be it a simple desktop computer, or multiple servers, understanding and writing configuration files is the most important step when deploying syslog-ng. This project aims to deliver an easy to use, but powerful standalone graphical tool, which can offer a simpler learning curve for new users, but also reduce the time required for administrators and power users to enable new devices with syslog-ng.

Project goals

The goal of this project is to provide a standalone graphical tool for creating syslog-ng configuration files. Requirements for the GUI tool:

  • it should be user friendly with drag&drop technique
  • easy to use for new users, valuable for administrators
  • written in C++ using the Qt framework
  • the setup of the GUI is controlled by a yaml file
  • the tool generates a syslog-ng config file

Implementation

The program will be implemented in C++11 using the Qt5 development framework. I will write the core C++ part in the KDevelop IDE, and design the GUI part in the Qt Creator IDE. Both the Qt5 development framework and the two IDEs used are licensed under the GNU GPL license and the LGPL license. To parse the yaml configuration file used to setup the GUI, I will include in my program the yaml-cpp parser library, which is licensed under the MIT license. The outcome of the project will be licensed under the GPL license and will include a graphical tool, it's documentation, and a user guide.

The program will have an interface with icons representing the main objects of the configuration file: sources, destinations, filters, etc. Different types of graphical shapes will represent the different types of objects. Each object will have a list of drivers or functions to choose from. A log statement can be created by dragging in the necessary component objects. From this, the program will be able to generate a valid config file. There will be many tooltips and descriptions guiding the user to better understand the configuration process.

I intend to follow the release early, release often software development philosophy and the concepts of the agile software development methods.

Timeline

  • in May

    • Read and study the documentation of the basic concepts of syslog-ng OSE and syslog-ng.conf configuration file
    • Get to know the syslog-ng development team, discuss ideas, receive feedback
    • Implement early throwaway prototypes for the tasks given by my mentor
  • in June

    • Create the design of the application based on the feedback received from the prototypes
    • Implement the core functions required to create basic configuration files
    • Begin working on the documentation and user guide
    • Test the early releases
  • in July

    • Make the design more user friendly
    • Expand the application's functionality and documentation
    • Improve and optimize the application based on users' feedback
    • Test the beta releases
  • in August

    • Finalize design, features, documentation, tests
    • Concentrate on fixing bugs, cleaning the code
    • Test the final release

About me

My name is András Mamenyák, I am an undergraduate student at the University of Debrecen studying Computer Science Engineering. My favorite programming language is C++. I've been involved with a number of projects at the university and I have developed several C++, Qt and CUDA applications. My proudest achievement is winning the first prize in the Sony and XDA Developers Tablet Z competition in 2013 with my Ubuntu Touch porting project. Currently I am writing my thesis on robocar emulator platform and also teaching a class in the "High level programming languages I." subject (C, C++, Qt) at the university. If everything goes well, I will receive my BSc diploma in the summer and after that I will continue my studies.

During this project I hope to learn a lot from my mentor and from the community, deepen my knowledge on complex OO programs and user friendly design and documentation.

Contact

Clone this wiki locally