+
+ Taskrambler
+ ++ + Welcome to taskrambler, the multi user task organization + and management tool. If you ever felt working together + is difficult and I really don't know whats going on at + the moment this tool might be helpful. +
+ ++ +
What is taskrambler
+ +What will it be
+ ++ The plan is to build a multi user task + management system inspired by + + taskwarrior. + Users may log in and manage the tasks they have to do. + Priorize them, assign them to projects, track the time + spend on a given task and so on. + Users also can configure who would be able to see what + task and users with special roles, like managers will + be able to see all tasks of their team, etc. + It will be possible to create reports about what work was + done etc. +
+ ++ Additionally this will serve as a ticket system. + Tasks may be assigned to users and all the things + possible with a ticket system will be possible here too. + So this will combine a personal task management tool with a + ticket system. Thus providing a getting things done tool + that will improve the productivity of all persons working + on a project. +
+ +What is it right now.
+ ++ Right now this is a HTTP server. It's written from + scratch in C and serves as the user interface provider for + taskrambler. +
+ ++ It delivers static assets placed within the project + to webbrowsers. In fact the pages you read right now are + delivered by taskrambler. +
+ +What is it not
+ ++ It is not another web server and it is not a + web application as u might be used to. It will not run under + any given web server. +
+ +History
+ ++ About two year ago I stepped across the + C10k + problem. At that time, and in fact still right now, I don't + feel experienced enough to face this problem. But anyway, + it made me curious. Curious if I would be able to write an + HTTP server by my own. So I started work on this. +
+ ++ Well, there are enough web servers available + right now, even the C10k problem has brought up some really + interesting exemplars. So I decided not to build another + multi purpose HTTP server application but try another thing. + I wanted to build an application with a user interface + provided via browser. But what kind of application. +
+ ++ At the time I started this I was working for + bigpoint, which is one of the worlds biggest browser + game providers. So the first answer was obviously to build + a game. But soon I realized that it needs much to build + a game from scratch. You need a fascinating storyboard, + well ballancing and game design and so on. So I dropped this + idea again. +
+ ++ Approximately at the same time I started working + with + + taskwarrior which I found a really useful tool. + I thought what about making something like this but for + multiple users. It is pretty clear to you what you need for + this and it would be cool to have something like this... + and with some luck there are others who might be interested in + such a thing too. +
+ ++ From the first day on the idea was to build + this completely in C. This primary decision for this was + that I really like the language and it had been a very long + time since I last had the opportunity to do something in that + language. Maybe another reason was that I had the hope to + compete with some of the other C10k webservers. And well, + taskrambler does not perform to bad at all. I did not + choose C++ also I like some of the object oriented + concepts because as most other OOP languages I think of + it as bloated with stuff I never need. Please don"t flame + on this, its only my opinion. +
+ ++ There are three things I really like in OOP, + objects and their definition via classes, interfaces + and inheritance. Why? Because if you ask me the whole topic + is about reusability and maintanability. + Obviously a well designed class is reusable. What makes + it well defined? It implements an interface an reacts in + a sane way on it. Well and inheritance is "sometimes" a good + way to prevent duplicate code. +
+ ++ Some time ago I had read a book called + + Object oriented programming with ANSI-C from + Axel-Tobias Schreiner. It has some really interesting + concepts in it but goes a step to for for my taste with + creating an own code preprocessor and other things. Anyway + this was the base of a class like code framework which + consists mostly of preprocessor code and some C code lines, + as well as a code convention. + This gives me the possibility to implement a well defined + interface on various objects. I can extend and inject + classes. All objects have a constructor and a destructor and + if needed a clone constructor. + Finishing this was the first building block of taskrambler. +
+ ++ The next goal was a working HTTP server + implementation. I created a lot of classes, rewrote then + dropped them again and thought about other solutions. + At a given point I was really disappointed because on heave + load the servers droped connection and I was unable to + find out why. At that point I stopped working on this for + over a year. But now I started again added some new cool + code and think that the connection wasn"t been dropped by + taskrambler but by the kernel. Shortly before I loose + connection I found a kernel log entry that says that + syn flood protection was been activated. +
+ ++ Right now this is an HTTP server that is able + to handle cookies, speeks SSL and implements the subset + of the HTTP protocol that I need. It performs not to bad + but others should mesure this, I have no time for this. + I know a lot of places where optimization is still possible. +
+
+