1

Topic: The Bus Factor, 0.4.3 and the 30 minutes

As many are aware, the development of Teeworlds has been going very slowly lately. I've been very busy with my life and especially my work. During this time I've become aware of a concept called The Bus Factor. It tells you how many people that needs to be ran over by a bus for a project to be in deep trouble. Right now for Teeworlds, that is one, and that is me. This is not good at all.

As I've been busy (Teetow as well for that matter), chilly has stepped up and started to organize a 0.4.3 release with hot patches that exist around on the forum. He spoke to somerunce and datag who are coders that is integrating all of the patches and doing some work on the 0.4 branch of the code. No set date for this 0.4.3 release but is coming along nicely. This is a great for factor and I hope the will continue to help out code wise even after 0.4.3.

I'm gonna start taking at least 30 minutes each day, no exceptions, to do something on Teeworlds to make sure something happens each day with it. This can range from coding on 0.5.0, writing a journal entry, fixing something that is broken on the forum (like the forum mailer). It might not sound like much but you can get very far with 30 minutes and 30 minutes easily becomes 60 minutes that becomes 2 hours smile

Cheers!

2

Re: The Bus Factor, 0.4.3 and the 30 minutes

Great!

Looking forward to get those nasty bugs fixed and see Teeworlds to make progress!

And I'm sure gonna haunt ya if you miss your 30 minutes.. wink

Official Teeworlds map developer and community moderator
Administrator for the Teeworlds community Teesites

3

Re: The Bus Factor, 0.4.3 and the 30 minutes

I love you for your dedication, matricks. It's really great that you take time for Teeworlds, even though you have much to do that's probably more important. Not many have the capacity or will to take that step. It's really, really great.

Thank you, and let's hope you won't get hit by a bus. tongue

The proposition "I am the center" need never be uttered. It is the assumption upon which all certainty and all doubt turns.

4

Re: The Bus Factor, 0.4.3 and the 30 minutes

Happy news indeed my friend!

Me and Lappi still want to open the shirt-shop wink
And I'm working on a hq-tileset incl. doodads, that one can publish on 0.4.3 or 0.5 if you like it.

Antoine de Saint Exupéry: It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away.
Besides -  I am the gfx guy!

5 (edited by catpaw 2008-08-11 23:22:04)

Re: The Bus Factor, 0.4.3 and the 30 minutes

Well honestly I must say, this is the opensource project were development seems most distanced and remote than any other I've yet seen.

This is almost a 1-man project not only, because its only 1 man who is really capable and interested to do stuff, its also one becuase it seems to have problems to let others in. And No, "hey, start hanging around in IRC" does not cut it. There are people who really like just to code, and no hang around in IRC. See the forum structure for example. Is there are place called "Got a useful patch? Post it here for review." I can understand if you want a sourcecopy where a small group has ultimate control over, otherwise it can start to get very chaotic pretty fast, especially with low quality contributions. See the disucssion forum its called "Questions and discussions about upcoming features" not "Contribute to development here". You seem to some subconcious degree not wanting an open development model. So constrive suggestion. Do make an idea list as topics people could pick stuff from to do. Not in the docs, right in the forum as seperate topics, people can comment it, like when they start trying something. So you have less chance of doublework collisions. Create a place where people can send patches to, to be reviewed to be included into the standard source tree. And No, we don't need a stupid system to be designed. There are 1000ooo... opensource code management systems out there, one is sure good enough for teeworlds, it sufficides to have createn an own build system instead of a standard way. No need to create yet another management system. All you need is IF there is a patch there to take the 30 minutes to review that patch, and either take it, or comment it why it doesnt fit into the standard sourcetree, or give suggestions what the author should improve on it, but don't ever just ignore it. That would IMHO make far more senese than yet taking the 30 minutes to even grow deeper into the 1-man project thing. Thats BTW the way linux workeda long time, people send in patches, at first Linus reviews, later they had experts for various parts of the kernel.

Currently as I can see myself as coder, you feel the remoteness, and when you want to it, you start to do mods. Because there isn't much else, and again I know the standard answer here is go into IRC. IRC might have worked well in a small groupteam, where you might have known eachother very closely. But as also the coder audience grows, you really might want to use an asynchronous communication protocoll.

Just my 2 cents on how to spend the 30 minutes better, than "range from coding on 0.5.0, writing a journal entry, fixing something that is broken on the forum"

6

Re: The Bus Factor, 0.4.3 and the 30 minutes

catpaw, I've gone over this in my head several times for month that I had very little time, and yes, It's a problem that I've been very aware of. I'm gonna talk more about this and how we are going to address it. When I wrote that journal entry I prepared for about 3-4 more. I'm gonna talk more about our poor communications channels in the next journal entry and what we could do about it. You already named a few of em. More of this tomorrows 30 minutes smile

EDIT: btw, http://trac.teeworlds.com has existed for tickets and tasks that needs to be done for a long time.

7

Re: The Bus Factor, 0.4.3 and the 30 minutes

Dude.. stay away from buses, i like the game ^^

Seriously speaking i can't wait for that new version. It's a great achievement and major update. I just want to thank matricks,somerunce and especially datag for making this as soon as possible.Not to forget all the people who came up with the helpful improvements.(Of course thanking Landil too, for working his ass off for maps/tilesets wink)

And to comment on what catpaw said, i guess recruting skilled volunteer-coders is inevitable if you want to release 0.5 soon..

*** JUSTICE ALWAYS WINS ***

8 (edited by catpaw 2008-08-11 23:47:57)

Re: The Bus Factor, 0.4.3 and the 30 minutes

Captain: Well getting people on the show will not make stuff faster at first, because new people needs new learning, and new conflicts that have to be solved. It will certainly pay off in the long run however.

Matricks: I've written this, because I know your tendency instead of using an already existing tool to make your own tool for everything you need (this is not only bam, I've studied the source also). Like I joked once with another. "Oh just noticed teeworlds doesn't do truetype fonts.", "Do you think they will include truetype any soon", "Nah I think they more likely will develop a new font system - "teetype"." -- So just don't start creating a new "teeworlds community development system". Thats IMHO the last we'd need. Personally when it gets about opensource project management I'd study Linux/Linus Torvalds. The reason IMHO why his project is so sucessfull, because he combines in one person not only technical skills, but also good social skills. A combination which you see extremly seldom. Detailed differences start with using only one mailling for everything, while most other projects soon have more forums and subforums than people participating smile I'd push a nose on using "Git". I think its a real cool system, which should also do pretty well for the needs here. It works exceptionally well at merging in foreign patches, as well as having people control of their own "mod", while still syncing with the standard tree. And also people collaborating on yet non-standard development, until it gets accepted into the standard tree.

9

Re: The Bus Factor, 0.4.3 and the 30 minutes

catpaw: I've started to write bam a long time ago before teeworlds because I wasn't satisfied with the existing solutions (and yeah, I looked at many of em). Teeworlds just happens to be the first more public source that uses it.

What in the source code do you feel that I could have used existing tools/libraries for? I tend to use them where I see them fit like portaudio, glfw, zlib, pnglite and wavpack.

We won't change SCM system now. Subversion gives us what we need and git have some problems with windows (could however be fixed now).

10 (edited by catpaw 2008-08-12 14:39:13)

Re: The Bus Factor, 0.4.3 and the 30 minutes

I know all points have their rationals presented, I just don't really buy some..
* Instead of whole set of libraries SDL would work pretty well as a well-tested all-in-one solution. At least I think it would get rid of the crashes in linux when teeworlds loses focus. I know after it initialized the OpenGLs, it doesn't do a lot when you use openGL, but still it would make stuff easier IMHO.
* The license. I know you don't want to talk about it. And I've seen in Track you removed already that ominous point 4, which is a good thing. Now "the teeworlds license" should be GPL compatible. But on the otherhand from content it just has the same effects as the MIT/X11-license, just worded differently. So why not just pick a standard license? There are already several dozends available. I know you got it OSI-certified as OpenSource, but it still doesn't tell us with what other OpenSource licenses it is/was compatible and with what isn't. For coders who like to reassemble code into new stuff, and those who care a bit about legality, the license jungle is already a chaotic hell. Do we really need "yet another license", especially if there are "standard" licenses already to pick that do the job will (MIT/X11 e.g.). (and a license is a "tool" in the further sense)
* Map downloads, I know they are said to have been done rushed. But UDP transport for files? Just use additioally a TCP port of file transfers, and you get all the windowing and resending technology that took 2 decades of science to work out.
* src/engine/e_system ... while in some aspects it might make sense (like network), in others it just adds a new layer with zero gain. Function "mem_copy" etc. I fail to see the sense in it. Same about the io_* routines. Also the #if defined(CONF_FAMILY_*) defines are a bad idea IMHO, you should never test for the "config familiy", but test for specific the abilities being present or absent (the whole idea of autoconf).
* The gcc/glibc can already do pedantic heap checking. And they can do this really well. IMHO No need to recode it. (export MALLOC_CHECK_ = 1)
* I haven't done deep research on it, but I cannot believe there arent any good vector math libraries already available.
---
* Now apart from this: I still haven't really got the difference between the game and engine dirs. Also I don't really understand why all filenames are prefixed... its obvious what they already by the place they are.
* Functionsheaders. Functionsheaders. Functionsheaders. If you ever started to work with a foreign code, you will realize how much a function is worth. I don't need a full explanation for everything. But most times a simple 1-line that subsumizes what this function does can do real wonders. (So instead of coding new stuff first documenting existing might be a real worthy consideration)
* I have seen you started to rename headerfiles to hpp... Okay this is personal taste, I don't like it. IMHO you gain a lot if every c++-class constists of 2 files. One Header File, and one C file, and not mix class definitions/implementations of several classes into one files, because you feel they match under some systematic. Some say, OMyGosh you get soo many files that way... And? So what? At least you find everything very fast, when you don't know the code by hearth without constantly using "grep -r" like I was doing now. And as C classes start with a big letter (also a good design strategy to differentiate them on sight) you easily recognize c++ header files by the first big letter. But okay thats really more just personal tastee..

11 (edited by Somerunce 2008-08-12 15:57:32)

Re: The Bus Factor, 0.4.3 and the 30 minutes

Here are some answers from me and matricks.

catpaw wrote:

* Instead of whole set of libraries SDL would work pretty well as a well-tested all-in-one solution. At least I think it would get rid of the crashes in linux when teeworlds loses focus. I know after it initialized the OpenGLs, it doesn't do a lot when you use openGL, but still it would make stuff easier IMHO.

SDL is under GPL which matricks don't really like. Besides, it's very big for the little things Teeworlds uses.

catpaw wrote:

* The license. I know you don't want to talk about it. And I've seen in Track you removed already that ominous point 4, which is a good thing. Now "the teeworlds license" should be GPL compatible. But on the otherhand from content it just has the same effects as the MIT/X11-license, just worded differently. So why not just pick a standard license? There are already several dozends available. I know you got it OSI-certified as OpenSource, but it still doesn't tell us with what other OpenSource licenses it is/was compatible and with what isn't. For coders who like to reassemble code into new stuff, and those who care a bit about legality, the license jungle is already a chaotic hell. Do we really need "yet another license", especially if there are "standard" licenses already to pick that do the job will (MIT/X11 e.g.). (and a license is a "tool" in the further sense)

Yes, we need another license. matricks have spent a LONG time (like 3 months) on choosing a license for Teeworlds, including talk with an Ubuntu license expert (if I don't remember wrong). There are reasons why he didn't choose GPL. What's the problem with the current license?

catpaw wrote:

* Map downloads, I know they are said to have been done rushed. But UDP transport for files? Just use additioally a TCP port of file transfers, and you get all the windowing and resending technology that took 2 decades of science to work out.

The TCP thing matricks has though of, but it would be better if everything went through the same socket. That makes it easier to configure the firewall.

catpaw wrote:

* src/engine/e_system ... while in some aspects it might make sense (like network), in others it just adds a new layer with zero gain. Function "mem_copy" etc. I fail to see the sense in it. Same about the io_* routines. Also the #if defined(CONF_FAMILY_*) defines are a bad idea IMHO, you should never test for the "config familiy", but test for specific the abilities being present or absent (the whole idea of autoconf).

The reason for mem_copy and such functions is that on specific platforms you'll want to implement an own. The io-functions exist to clean up and fix the crap that happens on some systems when you forget the b-flag.

catpaw wrote:

* The gcc/glibc can already do pedantic heap checking. And they can do this really well. IMHO No need to recode it. (export MALLOC_CHECK_ = 1)

The reason for implementing this is to do heap checking on platforms that don't have gcc/glibc, for example Windows.

catpaw wrote:

* I haven't done deep research on it, but I cannot believe there arent any good vector math libraries already available.

Vector libraries often are too big for the little usage Teeworlds has. "It's stupid to kill flies with bazokas" to quote matricks.

catpaw wrote:

* Now apart from this: I still haven't really got the difference between the game and engine dirs. Also I don't really understand why all filenames are prefixed... its obvious what they already by the place they are.

The difference is that you can make a completely other game by changing the files in the game-dir and keeping the engine (simplified). The file prefix is really helpful when you for example read that it's the file gs_server.cpp you should look in. By using these letters anyone can find the file directly, and that makes working with multiple files much easier.

catpaw wrote:

* Functionsheaders. Functionsheaders. Functionsheaders. If you ever started to work with a foreign code, you will realize how much a function is worth. I don't need a full explanation for everything. But most times a simple 1-line that subsumizes what this function does can do real wonders. (So instead of coding new stuff first documenting existing might be a real worthy consideration)

Documentation is on its way. Since Teeworlds is in alpha state right now, it would be a waste of time to document everything, especially the network part, since it changes a lot from version to version. There already are a documentation in the trunk (for 0.5), feel free to check it out.

catpaw wrote:

* I have seen you started to rename headerfiles to hpp... Okay this is personal taste, I don't like it. IMHO you gain a lot if every c++-class constists of 2 files. One Header File, and one C file, and not mix class definitions/implementations of several classes into one files, because you feel they match under some systematic. Some say, OMyGosh you get soo many files that way... And? So what? At least you find everything very fast, when you don't know the code by hearth without constantly using "grep -r" like I was doing now. And as C classes start with a big letter (also a good design strategy to differentiate them on sight) you easily recognize c++ header files by the first big letter. But okay thats really more just personal tastee..

The reason of the renaming is that Teeworlds use both C and C++ files and that's a simple way of separating them.

Thanks for suggesting stuff and such, but please don't expect too much this early in the game's developing.
/Somerunce

12

Re: The Bus Factor, 0.4.3 and the 30 minutes

I would say the criticism of why we keep the code under strict scrutiny and the criticism of the code itself should cancel each other out. The codebase is still very much a work-in-progress, and while many of your points may be valid, I must urge patience. The major reason we still keep our code under "dictatorial rule" is because we're not done with even a third of the things we want to do, and there are still improvements to be made to all the areas you addressed.

We'll hopefully get some community development features off the docks pretty soon, which I hope can stimulate these kinds of conversations in a more constructive manner.

13 (edited by catpaw 2008-08-12 17:27:10)

Re: The Bus Factor, 0.4.3 and the 30 minutes

SDL is under GPL which matricks don't really like. Besides, it's very big for the little things Teeworlds uses.

I know about the GPL "issue", but technically speaking SDL would be the better choice IMHO. I mean the GPL doesn't hurt you, if you have a compatible license (that is all "free as in beer without omnimous restrictions)

Yes, we need another license. matricks have spent a LONG time (like 3 months) on choosing a license for Teeworlds, including talk with an Ubuntu license expert (if I don't remember wrong). There are reasons why he didn't choose GPL. What's the problem with the current license?

I didn't talk about GPL, I said X11/MIT, I don't see where the current (in SVN) "teeworlds license" is in effects any different than X11/MIT, except worded differently, and have to be rechecked with every other license out there if compatible or not. So why not use the standard license X11/MIT to keep the jungle a little smaller. Just because we were talking about using "standard tools".

The TCP thing matricks has though of, but it would be better if everything went through the same socket. That makes it easier to configure the firewall.

Its not so difficult to enable TCP and UDP of the same port number. Other games/applicatios have this too, some since decades (speaking e.g. of DNS). And it works.

The reason for mem_copy and such functions is that on specific platforms you'll want to implement an own.

No, on what system I would ever want to implement an own mem_copy routine? There are standards out there. And memcpy is a pretty strong standard, which machine/OS hasn't got that? Its part of the C standard!

The reason for implementing this is to do heap checking on platforms that don't have gcc/glibc, for example Windows.

Well windows has gcc/glibc available for it. Google for "gnuwin32"

Vector libraries often are too big for the little usage Teeworlds has. "It's stupid to kill flies with bazokas" to quote matricks.

Honestly no, The linker will either just pick out the routines used. So why not use a standard bazoka, if it does the job pretty well already?

The difference is that you can make a completely other game by changing the files in the game-dir and keeping the engine (simplified).

Yes, but at least as far as I've seen there are quite some teeworlds specific stuff in engine as well...

The file prefix is really helpful when you for example read that it's the file gs_server.cpp you should look in. By using these letters anyone can find the file directly, and that makes working with multiple files much easier.

Well wherre would you read this. How about reading you should look into the file game/server/server.cpp. Path and prefix is IMHO unnecessary duplication of data.

Documentation is on its way. Since Teeworlds is in alpha state right now, it would be a waste of time to document everything, especially the network part, since it changes a lot from version to version. There already are a documentation in the trunk (for 0.5), feel free to check it out.

As I've wrote, you don't need detailed documentations in every detail. But 1 little sentence per function is not thaaaat much a work, and would do wonders.

The reason of the renaming is that Teeworlds use both C and C++ files and that's a simple way of separating them.

As I explained, if you keep the naminig convention of header files being named after the classes, and classes having the first letter a capital letter, you can easily destinguish c from c++ headers.

14

Re: The Bus Factor, 0.4.3 and the 30 minutes

teetow wrote:

I would say the criticism of why we keep the code under strict scrutiny and the criticism of the code itself should cancel each other out. The codebase is still very much a work-in-progress, and while many of your points may be valid, I must urge patience. The major reason we still keep our code under "dictatorial rule" is because we're not done with even a third of the things we want to do, and there are still improvements to be made to all the areas you addressed.

We'll hopefully get some community development features off the docks pretty soon, which I hope can stimulate these kinds of conversations in a more constructive manner.

As said, nothing speaks against keeping strict control over your copy. But it shouldn't rule others out. Just stricly review what people send to you, but give them an option to send... Okies? Take a look at Linus Torvalds, he has strict control of his copy "the vanilla tree", but still there is a vivid and active developing community around it. So code under strict scrutiny and the criticism of the code does not cancel each other not.

15

Re: The Bus Factor, 0.4.3 and the 30 minutes

And again, there will be mechanics in place for that, not just until we can properly maintain that workflow. Nothing about collaboration is automatic, and the only thing worse than not accepting community patches is saying you do, but then not taking the time to review and implement them.

I believe we're more or less on the same page here.

16 (edited by catpaw 2008-08-12 17:51:34)

Re: The Bus Factor, 0.4.3 and the 30 minutes

teetow wrote:

And again, there will be mechanics in place for that, not just until we can properly maintain that workflow. Nothing about collaboration is automatic, and the only thing worse than not accepting community patches is saying you do, but then not taking the time to review and implement them.

I believe we're more or less on the same page here.

I think that was the opening discussion. What kind of system do you need where there isn't one suitable out there? And what kind of "workflow maintance" do you need to implent? yet another teeworlds sepecific thing, where a standard tool doesn't sufficide? Btw. AFAIK creative work and "workflow", usually that contradict each other.... And the opening suggestion. If you are going the invest 30 minutes a day, start investing them on reviewing patches...

17

Re: The Bus Factor, 0.4.3 and the 30 minutes

I really respect u catpaw for ur technical knowledge and im almost sure u want to help but maybe criticizing the people who do all their best to code the game we all love is not the best thing u could do. I see u mentioned a lot of things that can be improved but u could have done the same in a lot calmer way :>. Those people are working hard for our entertainment and even if they do some things wrong instead of putting them down try to help and show them the right path ( incase u know it ).

We will meet again when the flowers spread their glorious scent of victory and the birds sing us the melody of justice...

18

Re: The Bus Factor, 0.4.3 and the 30 minutes

wtf with developments forum? O_O

19

Re: The Bus Factor, 0.4.3 and the 30 minutes

Calm down, some re-organizing is being made, nothing to worry about, no explosions, I promise.. smile

Official Teeworlds map developer and community moderator
Administrator for the Teeworlds community Teesites

20

Re: The Bus Factor, 0.4.3 and the 30 minutes

lol i worried cause when i joined the site i saw General and New forum. And thought "wtf the new forum???" xDDD

21 (edited by catpaw 2008-08-12 20:04:51)

Re: The Bus Factor, 0.4.3 and the 30 minutes

I see the new forums and the rename topic description of the general development, nice work smile

22 (edited by Landil 2008-08-12 23:04:55)

Re: The Bus Factor, 0.4.3 and the 30 minutes

torch wrote:

I really respect u catpaw for ur technical knowledge and im almost sure u want to help but maybe criticizing the people who do all their best to code the game we all love is not the best thing u could do. I see u mentioned a lot of things that can be improved but u could have done the same in a lot calmer way :>. Those people are working hard for our entertainment and even if they do some things wrong instead of putting them down try to help and show them the right path ( incase u know it ).

Constructive critizism is the best thing which can happen. And a discussion is to get one step further. If all ppl just said yes, we still would be in the middleages. And writing posts in a forum in a not-native-language will sometimes sound more rude, than in your mother tongue.
btw: No one doubts that "those people" do work hard.

Antoine de Saint Exupéry: It seems that perfection is reached not when there is nothing left to add, but when there is nothing left to take away.
Besides -  I am the gfx guy!

23

Re: The Bus Factor, 0.4.3 and the 30 minutes

Nice to hear that! I hope you will make it easier to open up servers! That's bothering me for a while.

24

Re: The Bus Factor, 0.4.3 and the 30 minutes

Metalfreak wrote:

Nice to hear that! I hope you will make it easier to open up servers! That's bothering me for a while.

No i think we don't need a better system at the moment...
other thinks are more important!

ima charhgin ma lazerz!!1
SHOOP DA WHOOOOP!!!!!!11

25 (edited by .mYthOs.daM!en. 2008-08-26 18:28:40)

Re: The Bus Factor, 0.4.3 and the 30 minutes

;D i <3 this game nice to hear this quite nice news ;D i'm realy discomposed now that there is coming a new version of teewars wink gl and hf by improving teeworlds ... people who knows how to code the game are realy seldom ;D so do your best   [btw hi AMN]