Skip to content

GSoC2018 Idea & Project list

utsav krishnan edited this page Feb 16, 2018 · 16 revisions

Table of contents

  1. Guidelines

    1. Hosting, license and other bits of information
    2. Adding a new idea
    3. Submitting a proposal
  2. Ideas

    1. Crypto parser
    2. Queue interface
    3. Http batch sending
    4. Administration/Operations improvements
    5. ODBC destination driver
    6. ElasticSearch destination: native (C) REST API

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 is not 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 Gitter.

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 Gitter, and code hosted on GitHub, where the main repository is. Depending on the proposal, students will be asked to fork syslog-ng.

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 your proposal, create a new Wiki page for it, as described in the GSoC 2018 Proposals document. Do not forget to also record your proposal on the Google Summer of Code page by posting a link to the previously created Wiki page.


Ideas

Crypto parser

Brief description

With syslog-ng it is possible to make different type of manipulation on part of the log message, even apply hash function to hide the original information. But the hash function is a not reversible function. The goal of this project is to create a plugin that makes it possible to encrypt or decrypt part of the log message.

Proposed by: Kokan

Mentor: Kokan (co-mentor: Budai Laszlo)

Difficulty: Easy-Medium

Deliverables of the project:

  • A new module that gives the above functionality

Desirable skills:

  • Familiarity with cryptography (but not required)
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)

What the student will learn:

  • Cryptography in practice
  • How to write a module in syslog-ng
  • Basic Bison & Flex skills, an introduction into writing parsers and grammars.

Queue interface

Brief description

The syslog-ng has a queue for destinations, that has a current implementation as disk queue. The aim of this project that through the implementation of an alternative to the disk queue also an interface should be determined.

Proposed by: Kokan

Mentor: Kokan (co-mentor: Laszlo Budai)

Difficulty: Medium

Deliverables of the project:

  • A plugin that implements an alternative destination queue
  • An interface for the destination queue

Desirable skills:

  • Familiarity with queueing techniques (AMQP, etc...)
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)

What the student will learn:

  • How to implement a syslog-ng module
  • How to avoid message loss with saving into database
  • How syslog-ng destination queue works

Http batch sending

Brief description

There are destinations - such as Splunk - that are capable of recieving multiple messages per http request, but both of the syslog-ng http destination solution (libcurl and Java) is now limited to one message per request. The task of this project would be to imporve the libcurl based http destination with batch sending.

Proposed by: Balazs Scheidler

Mentor: Kokan (co-mentor: Laszlo Budai)

Difficulty: Medium

Deliverables of the project:

  • Batch sending options for the http destination
  • Possible way to implement batch sending for other threaded destinations

Desirable skills:

  • Knowledge about Http protocol
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended)

What the student will learn:

  • Working with threaded C
  • Using libcurl library
  • Working with an existing, well-established software project

Administration/Operations Improvements

Brief description

While there are many features one could implement for syslog-ng, there is one area which could use some love, and a pair of caring hands: administration and operations. The goal of this project is to make it easier to administer and operate syslog-ng, by implementing features, or tools to help with this. This may include such things as adding support for OpenBSD's sendsyslog() to the system() source, or making it possible to (optionally) auto-reload the configuration when it changed on disk, or storing the unparsed configuration in memory, and allowing the administrator to dump it. There may well be many more ways in which syslog-ng could become even easier, and friendlier towards people who run it.

Proposed by: Gergely Nagy

Mentor: Laszlo Budai (co-mentor: Kokan)

Difficulty: Easy-Medium

Deliverables of the project:

  • Support for OpenBSD's sendsyslog() in the system() source.
  • Optional configuration auto-reloading.
  • Storing the configuration in memory, with a way to dump it (via syslog-ng-ctl, for example).
  • Tools to compare the running configuration, and the one on disk.

Desirable skills:

  • Some experience in operating syslog-ng, or similar software.
  • Basic understanding of system administration and maintenance.
  • Familiarity with the C language (deep knowledge not required, but C coding experience is strongly recommended).

What the student will learn:

  • Working with an existing, well-established software project.
  • Running and maintaining syslog-ng as an administrator.
  • Face challenges related to reloading a running daemon's configuration: failure cases, how to handle them, etc.
  • Working with system administrators, writing features and tools that make their job easier. In short, writing software that is easy to run.

ODBC destination driver

Brief description

The goal is to connect to database servers that are directly not supported by syslog-ng. Not only the traditional SQL databases have ODBC drivers, some of the BigData players also have.

Part of the task is to provide a detailed performance measurement.

Tasks:

  • implement ODBC destination driver
  • performance measurement (ODBC vs. libdbi)
  • Debian packaging of the new driver

Proposed by: Laszlo Budai

Mentor: Laszlo Budai ( co-mentor: Furiel, Kokan )

Difficulty: Easy-Medium

Deliverables of the project:

  • Support a wider range of databases
  • Eliminate libdbi-dependency

Desirable skills:

  • Familiarity with syslog-ng
  • Familiarity with C
  • Basic familiarity with ODBC

What the student will learn:

  • how to implement a syslog-ng destination driver
  • how to use SQL destinations in syslog-ng
  • ODBC, unixodbc

ElasticSearch destination: native(C) REST API

Brief description

The goal is to support delivery of log messages to ElasticSearch without depending on Java.

Tasks:

  • implement a REST ElasticSearch client in C (libcurl based)
  • implement the native Elastic destination driver
  • Debian packaging of the destination driver

Proposed by: Laszlo Budai

Mentor: Laszlo Budai (co-mentor: Kokan)

Difficulty: medium

Deliverables of the project:

  • Make it easier to log collectors to deliver messages directly into ElasticSearch
  • Develop a REST client library for ElasticSearch

Desirable skills:

  • Familiarity with syslog-ng
  • Familiarity with C
  • Basic familiarity with ElasticSearch REST API

What the student will learn:

  • how to implement a REST client in the C programming language
  • how to implement a syslog-ng destination driver
  • ElasticSearch REST API
Clone this wiki locally