Skip to content

GSoC2015 idea & project list

Nagy Gergő edited this page Mar 17, 2015 · 12 revisions

Table of contents

  1. Guidelines

  2. Hosting, license and other bits of information

  3. Adding a new idea

  4. Submitting a proposal

  5. Ideas

  6. Monitoring

    1. Project: Websocket for syslog-ng
    2. Project: syslog-ng server monitoring with mobile app
  7. Configuration

    1. Project: syslog-ng configuration editor using Qt
    2. Project: syslog-ng configuration editor web based
  8. Language binding

    1. Project: syslog-ng for java
    2. Project: syslog-ng for python
  9. Helping troubleshooting

    1. Project: Log Message flow visualization
    2. Project: Configuration visualization
  10. New tool

    1. Project: syslog-ng as a command line tool
  11. New destination

    1. Project: Riak destination

Guidelines

The ideas herein were contributed by the syslog-ng OSE community, by developers, users, and interested students. Some of them may be vague or incomplete. If you are a student and would like to apply to the Google Summer of Code, ask about any of these ideas either on the mailing list, or contact the person proposing it.

Being accepted as a Google Summer of Code (GSoC) student isn't an easy task, it is competitive. Research the desired topic in depth, and contact the mentor and the community. If you have a new idea and would like to add it to the list, talk to the community at large, and the developers too, to ensure that there will be a mentor for the project, if selected.

In case no specific contact is given for a particular idea, questions can be asked on the mailing list or on IRC.

Hosting, license and other bits of information

As required by the Google Summer of Code program, all contributions must be available under an open source license. In case of syslog-ng, we use two licenses: the GNU General Public License (GPL) and the GNU Lesser General Public License (LGPL), the outcome of the GSoC projects will need to use one of these licenses. Consult the mentor of the idea for details.

We also prefer to do development in the open, with communication happening on the mailing list or on IRC, and code hosted on GitHub, where the main repository is. Depending on the proposal, students will be asked to fork either syslog-ng itself, or the syslog-ng Incubator.

Adding a new idea

Before adding a new idea, consult the community and the mentors (see above), then follow the template set by other ideas: A title, a brief description, expected results, skills required, difficulty, and topics the student may learn. See the existing ideas below!

Submitting a proposal

To submit a proposal, please create a new Wiki page for it, as described here, and don't forget to record it on Melange too, with a link back to the created wiki page.


Ideas

Monitoring

Project: WebSocket for syslog-ng

Brief description

The goal of this project is to create a WebSocket destination, which can push log messages to a web server using the [WebSocket protocol] websocket:rfc. The secure connection should be configurable. This destination will be used for alerting by syslog-ng.

Proposed by: Laszlo Meszaros

Mentor: Laszlo Meszaros (co-mentor: Viktor Juhasz)

Difficulty: Easy-Medium

Deliverables of the project:

  • A sample webserver which is able to receive and handle messages coming from syslog-ng
  • A simple WebSocket destination to communicate with the sample webserver and to deliver messages.

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with the WebSocket protocol
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)
  • Prior knowledge of the syslog-ng code base is recommended, but not required.

What the student will learn:

  • Working with an existing, well-established software project
  • Simple, but efficient multi-threaded programming in C
  • WebSocket protocol knowledge
  • Basic Bison & Flex skills, an introduction into writing parsers and grammars.

Project: syslog-ng server monitoring with mobile app

Brief description

For syslog-ng administrators it is important to monitor the status of their managed servers from anywhere, at any time. A mobile application would be a perfect solution for this task. Administrators can track the status of their syslog-ng server using this mobile app. The syslog-ng application should open an SSL control socket and the mobile application (with appropriate certificate(s)) can communicate with it using this secure channel. The administrator could perform various actions, for example, reload syslog-ng, get statistics, and so on.

Proposed by: Zoltan Pallagi

Mentor: Zoltan Pallagi (co-mentor: Laszlo Budai)

Difficulty: Medium

Deliverables of the project:

  • Configurable secure control socket for syslog-ng
  • Android application which is able to communicate with the given syslog-ng servers and show statistics about syslog-ng.

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with development Android applications
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)
  • Familiarity with SSL communication.

What the student will learn:

  • Working with an existing, well-established software project
  • Developing Android applications, visualization of structured data
  • Developing secure communications using C and Java language on Linux and Android platforms.

Configuration

Project: syslog-ng configuration editor using Qt

Brief description

syslog-ng has a powerful configuration language. Powerful for administrators and sometimes difficult for users who are not familiar with it and have not read the documentation in detail.

The goal of this project is to provide a standalone graphical tool for creating syslog-ng configuration files using drag&drop technique. The tool should be written in C++ and use the Qt framework. Data model is provided.

Proposed by: Laszlo Budai

Mentor: Laszlo Budai (co-mentor Viktor Juhasz)

Difficulty: Medium

Deliverables of the project:

  • A user-friendly configuration creator tool for syslog-ng

Desirable skills:

  • UI design
  • C++
  • Qt
  • syslog-ng configuration file language

What the student will learn:

  • How to create complex but user friendly GUI application

Project: syslog-ng configuration editor web based

Brief description

syslog-ng has a powerful configuration language. Powerful for administrators and sometimes difficult for users who are not familiar with it, and have not read the documentation in detail.

The goal of this project is to provide a web based application for creating syslog-ng configuration files using drag&drop technique. The application should be written using an arbitrary web framework with javascript. Data model is provided.

Proposed by: Fried Zoltan

Mentor: Juhasz Viktor (co-mentor: Fried Zoltan)

Difficulty: Medium

Deliverables of the project:

  • A user-friendly configuration creator web based application.

Desirable skills:

  • UI design
  • JavaScript
  • web frameworks (e.g.: django)
  • syslog-ng configuration file language

What the student will learn:

  • How to create complex but user friendly web application

Language binding

syslog-ng has a message processing pipe-line built up from:

  • sources
  • parsers
  • filters
  • rewrite rules
  • template functions
  • destinations

Implementing a destination/rewrite rule/etc. using the C programming language can be painful and slow, especially for those who cannot code in C.

The goal of this project is to make it possible to implement elements of the message processing pipeline in other languages than C.

Project: syslog-ng for Java

Brief description

A Java destination is already available in the syslog-ng-incubator. The goal of this project is to extend this functionality, and make it possible to write filters, parsers, rewrite rules, template functions, and even sources in Java. To reach this goal there should be a connector for Java at every possible places in syslog-ng.

Proposed by: Viktor Juhasz

Mentor: Viktor Juhasz (co-mentor: Laszlo Budai)

Difficulty: Medium

Deliverables of the project:

  • Java connectors for syslog-ng filters, rewrite rules, parsers, template functions, sources
  • Simple examples on using each connector.

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with the Java language (deep knowledge not required, but Java coding experience is strongly recommended)
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)
  • Familiarity with JNI (Java Native Interface).

What the student will learn:

  • Working with an existing, well-established software project
  • Development in a cross language project using JNI
  • Get experience on how to extend a legacy code with other programming languages.

Project: syslog-ng for Python

Brief description

syslog-ng has a message processing pipeline built up from :

  • sources
  • parsers
  • filters
  • rewrite rules
  • template functions
  • destinations

Implementing a destination/rewrite rule/etc. using the C programming language can be painful and slow, especially for those who cannot code in C.

Supporting Python is extremely useful: it is one of the most widespread script languages. The goal of this project is to make it possible to implement elements of the message processing pipeline in Python. Implementing some examples will be required (these examples can be reimplementations of existing features).

Proposed by: Laszlo Budai

Mentor: Laszlo Budai (co-mentor Juhasz Viktor)

Difficulty: Medium

Deliverables of the project:

  • Python connectors for syslog-ng filters, rewrite rules, parsers, template functions, sources
  • Simple examples on using each connector.

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with the Python language
  • Familiarity with the C language
  • Familiarity with the topic of Python and C integration

What the student will learn:

  • How a message processing pipeline is built up.
  • How to export internal interfaces to other programming languages.
  • How to build a multi-language project

Helping troubleshooting

Project: Log Message flow visualization

Brief description

  • syslog-ng has a message-processing pipeline: sources, filters, destinations, etc... . What we do not have is a tool that shows what happens under the hood.

  • When a pipeline-element receives a message, it could log its state in a well-defined format. Those logs could be delivered to a standalone GUI application which then parses them and displays the whole pipeline: shows where the message is, shows queues, ACKs, etc...

  • The goal of this project is to create a standalone tool which can help to understand what happens (and when) with a message inside syslog-ng (it can be very useful for educational and/or debugging purposes).

Proposed by: Laszlo Budai

Mentor: Laszlo Budai (co-mentor Nagy Gergo)

Difficulty: Medium

Deliverables of the project:

  • New syslog-ng feature which can log the state of the message in the processing pipeline.
  • Common message format which can describe the internal state of syslog-ng.
  • An external tool that can visualize the internal state of syslog-ng by parsing that common format (online and offline).

Desirable skills:

  • Familiarity with how syslog-ng handles the messages (knowing what are the main elements of the processing pipeline is enough)
  • Familiarity with the C language
  • Experience in UI design (preferred GUI toolkit is Qt, but this is not mandatory)

What the student will learn:

  • How a log message is delivered to its destination within syslog-ng
  • What are the main elements when processing log messages
  • How to describe and visualize the internal state of an application

Project: Configuration visualization

Brief description

Creating a complicated configuration for syslog-ng, especially one that spans multiple configuration files and uses advanced features like blocks or junctions is no small task. Debugging them is even harder. The goal of this project is to write a tool that gives an overview of syslog-ng's configuration: a visual graph of how the different pieces are connected. This tool would consist of two parts: one embedded in syslog-ng that works on the instantiated internal structures of syslog-ng, and an external part that does the actual visualization.

Proposed by: Viktor Tusa

Mentor: Viktor Tusa (co-mentor: Ádám Mózes)

Difficulty: Medium

Deliverables of the project:

  • A new feature added to syslog-ng that can
    • observe the configuration in use, and
    • output enough information about the configuration that is required for a meaningful visualization.
  • An external tool that turns the raw information into something visible.

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)
  • Familiarity with (or willingness to learn) data structures in C and Glib (trees, hash maps, arrays, and so on)
  • Fundamental skills in graph theory, and theory of graph drawing
  • Prior knowledge of the syslog-ng code base is recommended, but not required

What the student will learn:

  • Working with an existing, well-established software project
  • How complex configuration is read and stored in syslog-ng
  • How to graphically display the complex internal state of an application

New tool

Project: syslog-ng as a command line tool

Brief description

There are situations when users need a tool which is able to transform log messages read from from stdin, write to stdout: no need to run as a daemon process, no need to collect messages (like several standard UNIX command-line tools).

This is an offline syslog-ng:

  • reads input from stdin (ie. stdin source)
  • writes output to stdout (ie. stdout destination)
  • can read the syslog-ng configuration file from command line

Proposed by: Balazs Scheidler

Mentor: Laszlo Budai (co-mentor: Balazs Scheidler )

Difficulty: Medium

Deliverables of the project:

  • Extending syslog-ng functionality to the command line world

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with the C language

What the student will learn:

  • How to implement a source in syslog-ng (stdin source)
  • How to create a command line tool from an application designed for being a server app.

New destination

Project: Riak destination

Brief description

Riak is a distributed database. It is a nice fit for scale-able, reliable and analyzable log storage, due to its integration with Solr and the built-in Map/Reduce capabilities.

Proposed by: Gergely Nagy

Mentor: Gergely Nagy (co-mentor: Viktor Tusa)

Difficulty: Easy-Medium

Deliverables of the project:

  • At first, a simple destination that places each log message in its own, unique key, under a configurable (template-able) bucket.
  • Later, added support for data types (most likely Sets), including batching.
  • Support for HTTP and/or Protocol Buffer APIs.
  • Riak Security (authentication & encryption) support.

Desirable skills:

  • Familiarity with syslog-ng on at least a strong user level
  • Familiarity with the C, Java or Python languages
  • Familiarity with key-value databases, not necessarily with Riak

What the student will learn:

  • How to implement a destination driver in the chosen language (Java and Python have limitations, but there is no official C driver for Riak - although libcurl could work).
  • How to model log data for a key-value stores
  • How to set up and configure Solr Schemas for log search
  • A bit of Erlang, to play with Riak Map/Reduce
  • How to work with REST APIs
Clone this wiki locally