Skip to content

GSoC 2015 Proposal: syslog ng for Python (maxvt)

Max T edited this page Mar 27, 2015 · 1 revision

Introduction

Python is used widely in system administration and is easy to learn. Having connectors to Python implementing parts of the message processing pipeline makes it easier for users to customize their logging setup in exactly the way they want, without the security issues and crashes often accompanying straight-C development.

Deliverables

  1. A Python library with classes offering APIs for:
    • sources
    • parsers
    • filters
    • rewrite rules
    • template functions
  2. Tests
  3. Documentation, with examples

Implementation

It looks like wrapping the C API with something like SWIG and then creating a Pythonic class-based interface that hides the C API would be the cleanest solution. Since API discussion can take time, I would propose rough APIs for discussion before the actual implementation is done. It would be good to identify any early users that would be interested in test-driving the work as it progresses, as the best way to check if a new API makes sense is to subject it to actual use.

The five required APIs will be sorted by priority, with the goal of working on one part until completion as long as the work is not blocked. In this way, even if project runs out of time, there will be some complete functionality that is independently usable, instead of a partially finished whole.

Timeline

  • May - reading the source, porting the C API using SWIG, initial Python API drafts. Working on 1st-priority component.
  • June - work on 2nd and 3rd-priority component.
  • July - work on 4th component. Vacation.
  • August - Work on lowest priority component. One week of slack time.

This figures out to approx. 2 weeks per component. This doesn't sound too loose given that it should include testing and documentation.

This also means that anyone who's interested in commenting on the Python API as it takes shape should be ready to promptly review a new API every two weeks, with tight iteration loops.

About me

My name is Max Timchenko and I'm a masters student in Computer Engineering at Boston University.

I am an experienced software engineer taking a break from the industry to learn something new and to get a graduate degree while doing so. I have done big projects, but not in Python. I have used Python a lot for smaller tasks, and currently am using Python 3 for my research.

I have used SWIG in the past, with Perl. I have proposed and maintained developer-facing APIs, usually in C (often "C++ influenced").

My availability would be around 30 hours per week. I am working on my thesis until June and have a two-week vacation planned in July, with lower availability (but I do not plan to completely stop working). I will be moving towards the end of June, which will cause a brief interruption in work and in reachability--until the Internet is set up :-)

Why this project?

  • I want to do a sizeable project in Python
  • I am currently using syslog in my research, as a non-power user, and would be interested in studying the nitty-gritty
  • Connecting between languages is awesome (ask me about a game I started writing intended for iOS, with core game logic in portable C++ and AI planned to be implemented in Lua)
  • Having a contribution to a well known open source project to show off is great for potential employers

Questions to mentors

  • Python 3, Python 2, or both? Supporting only 3 allows using nifty idioms and language features, but there are still users who prefer to speak 2. Constrained platforms may not have enough resources to run both.
  • Priorities among different components
  • Viability of one-component-at-a-time approach
Clone this wiki locally