[AD] Focusing on priorities and the philosophy behind our constributions (was: malloc)

[ Thread Index | Date Index | More lists.liballeg.org/allegro-developers Archives ]


Haha, today I'm feeling funny, so let me interrupt this thread
(which at the moment seems to have ended with Peter posting the
malloc script).

First I'll make my typical soul-cutting one liners, then I'll try
to hug everybody who cares to return the hug.

On 2005-11-20, aj <aj@xxxxxxxxxx> wrote:
> >>i know the whole thing is going to get a design, and changes
> >>(as mentioned already), but is there any reason why we still
> >>cant change all the malloc's to _al_malloc() in the mean time ?
> >
> >It will be a waste of your time if we have to change it again
> >later.
> 
> I do not believe it is a waste of my time.

For some reason I consider anything done for free is a waste of
time. But there are still people with funny ideas, I see..

> I want to see it done.  It is very important for me.

That should have read "I want to see myself doing it".

> Without trying to sound to whingy, im not too impressed with the
> rate of development of allegro[...]

Certainly. At some point I calculated that all the patches I had
contributed during the last two years, if condensed in an 8-hour
a day job, would have taken just one week and a half.  Isn't that
frustrating and depressing?

Just imagine how much Allegro (or any other collaborative project)
would progress if you had somebody working on it and being paid.
How about your contributions AJ? How many man hours do they
represent?

> but i have been asking, requesting, trying, to have the powers
> that be listen to my needs for quite a long time now, and i dont
> seem to be making much progress,

Long ago somebody pointed out that with free software you only reach
how far you contribute.  If the only thing that you do is ask and
request, you are depending on other people's free time to do stuff.
Most of the time I don't do even what I promise myself I would be
doing. Unable to trust myself, I can't believe how you can have so
much faith in convincing other people by email.

> each time i have brought up this particular issue, i was told it
> would be done in the future, or no, that will have to wait until
> after 420 was released. [...]

Indeed. This is a simple matter of priorities. Look at Allegro's
todo.txt file.  There are plenty of things to investigate and fix
before worrying about memory alignment.

> [...] If allegro is a games library, then it needs to start
> targeting the types of CPUs that gamers have, and its not
> Pentium1's.  Im trying to develop SSE stuff, that may benefit
> allegro, might even drag it into this century.

On the other hand, people who are experiencing abnormal sound
failures with Allegro under windows are going to care less about
performance if they can't hear your game. Don't you agree?

Let me tell you that exactly what you are requesting is not important
to me at all. For me it is more important that in order for Allegro
to gain a wider audience it requires a nice manual which can be read
as far as possible as a book far away from the computer (like on
the bus/train) with a wealth of examples demonstrating the numerous
features Allegro has (which reminds me I should write an example
for ASSERT and TRACE). For this to succeed, the .pdf version of
the documentation is UTTER CRAP and completely fails for that goal.

In my opinion, three out of one hundred thousand programmers ARE
going to care about memory aligned blocks. The rest is going to
say things like "ugh, this library is so undocumented and the code
looks so ugly I don't want to touch it with a ten feet pole, even
if it promises the moon", or "hell, what good is this library's
performance if my users can't hear any sound out of my game under
windows?", or anything else related to that todo.txt file.

But whatever your priorities are, there is one thing which is
terribly sure: we, both allegro developers and users, are a niche
market nobody in the real world is caring about.  Show me an xbox
360 game depending on Allegro. Show me a PC game selling lots of
copies depending on Allegro. Show me a portable console game made
with Allegro.

Allegro is failing in all those markets. And Allegro fails in the
performance market too. AJ, you focus on something pretty irrelevant
to the fact that (as Thomas Harte points out, and is dead right)
Allegro doesn't support hardware acceleration in a way which can be
exploited easily by everybody on every possible hardware, and maybe
never will. Hardware acceleration which may speed up thousands of
times whatever you manage to improve with aligned memory (I don't
really care about this kind of stuff, so if memory alignment is in
fact more important than hardware acceleration, I apologise).

So what can you do? You can make the patch, submit it for approval,
and let somebody accept or reject it. If it is rejected, it will
be for a reason, BUT YOU HAVE A PATCH.  You can keep this patch
yourself and apply it if you really need. Allegro's source doesn't
change like Linux, so it's not hard to keep a few patches for
yourself. I've been doing this for about five years with some of
mine and I hear others like Vincent do the same (sometimes because
they simply forgot to send them here!).

The only thing I would like to ask you is to not contribute things
"for the sake of Allegro".  Allegro is dead. Allegro has always been
dead. The obscure fact that some thousands of developers continue
using it is just a little incoherence in an otherwise solid trend
that demonstrates games have to be 3d to appeal to the masses and
require million dollars budgets. Allegro users are freaks.

If you contribute for Allegro, do it for yourself and nobody else. If
you start thinking about Allegro being some kind of force/army
which has to crush some other invisible enemy, and your patch is
required for that goal, you are just nuts.

And this leads me to the philosophical question I want to make
everyone who cared enough to read up to here: why are you here?
Peter Wang, why are you doing work on the new_api_branch? Elias
Pschernig, why are you keeping on improving things and supporting
other people? Stepan Roh, why do you keep lurking and providing
your web page with different versions, source browser and other
stuff? Evert Glebbeek, what keeps you striving to correct bugs and
release new versions? Matthew Leverton, why do you keep some online
forums and provide binary packages and online manual for Allegro
users? To everybody else: what the hell are you doing here guys?

I am here, because I think Allegro is completely useless. I think
SDL is useless too, just as Clanlib and any other C/C++ based game
library, whether 2d or 3d. I believe writting C/C++ code is a waste
of time for games which not more than maybe hundred people are going
to play at all. You work so much with such a crappy language and then
the few only people who see your work may even say it's quite shit!

Developer time is expensive, so making such low profile games would
make sense in a language or environment where you don't have to keep
track of memory, where algorithms can be expressed in a clear way,
where the syntaxis is as close as possible to written language,
etc, etc. Basically, where programming is a pleasure rather than
a battle against the low level machine code.

So I picked working on pyallegro. For those who don't know,
pyallegro is a project umbrella for pythonic bindings for Allegro
(link from Allegro's link page), and I'm the only one left doing
some work on Alpy, whose version 0.1.2 compatible with Allegro
4.2.0 was released yesterday.

In fact, the reason I'm writting all this useless email is because
the proposed memory design that was referenced in the thread was
created by me, when I was precisely investigating how to make the
C version friendlier to higher level languages.

And that's the reason I'm still here. At some point in the
past I wanted to see myself writing a python game with Allegro
underneath. But then I realised that python libraries rely heavily
on having online documentation (something called docstrings).
This is really great. Instead of going somewhere else to fetch the
Allegro manual you can type commands in an interactive session and
get stuff done. Like this:

  $ python
  Python 2.3.3 (#2, May  1 2004, 06:12:12) 
  [GCC 3.3.3 (Debian 20040401)] on linux2
  Type "help", "copyright", "credits" or "license" for more information.
  >>> import alpy
  >>> print alpy.get_desktop_resolution.__doc__
  get_desktop_resolution() -> (int, int)
  
  Finds out the currently selected desktop resolution. You can use
  this information to avoid creating windows bigger than the current
  resolution.  This is especially important for some windowed drivers
  which are unable to create windows bigger than the desktop. Each
  parameter is a pointer to an integer where one dimension of the
  screen will be stored.
  
  Under some OSes, switching to a full screen graphics mode may
  automatically change the desktop resolution. You have, therefore,
  to call this function before setting any graphics mode in order to
  retrieve the real desktop resolution.
  
  Returns a two element tuple with the width and height. If this
  information is not available or does not apply, the tuple will
  contain negative values.
  >>> alpy.allegro_init()
  >>> alpy.get_desktop_resolution()
  (1024, 768)
  >>>

This is even easier if you use things like iPython with
autocompletion.  Since python users expect these things, I
realised that I needed to document Allegro C first, then adapt that
documentation to alpy (which I'm doing now). Otherwise, no matter
how good this binding of mine would be, nobody would ever care to
use it, as it would fail to behave like any other good python module.

Once that is done, I'll polish the Alpy package to be
friendlier. Then I'll correct some obvious bugs like strings
not being converted to utf8 and stuff like that. Finally, when
it's more ready I'll patch myself Allegro to use those custom
malloc/free/realloc thingies in order to make python and Allegro
both collaborate in memory management. If it's not accepted, I'll
fork it.  Then, world domination.

AJ, can you follow my sequence of thoughts? Just like you, I have a
final goal (custom memory management). But rather than doing only
that, I see that there are other things which need doing before.
And maybe that malloc thing of yours can be exploited today with
Peter's patch. But, is somebody other than you really going to care?

If you answer no, then please stop saying your contributions are
going to take Allegro to the next step or whatever. Because there
is no next step.  If you want to work in the cutting edge field
of library programming, I would recommend you to take a flight to
Microsoft's headquarters and request a programmer position for their
XNA development team.  IIRC they are working on providing the SDK
for Xbox2, Vista, and whatever else is going to come.  Wouldn't that
be better than doing something with little impact here?  Besides,
they would pay you, so even if they discarded some of your work,
it wouldn't have been a waste of time according to the first lines
I wrote in this email.

This is just killing me. Peter, is Microsoft paying you to develop
the next Allegro API?  Elias, you help other people because you
would like to be like Mother Teresa?  Stepan, you have a fetish
for keeping things around like a store manager? Evert, you do this
for the fame and women that throw themselves in your arms whenever
you step in a pub and mention you are THE dictator?  Mattew, you
have a mastermind plan of brainwashing people to create an army of
smelly coders (aka zombies) with the purpose of invading Portugal?

Tell me. Tell everybody. Why are you here? What keeps you here? What
is your plan?  Just stop developing and express yourself. We need
a hug. Lets make a group hug and explain why we are wasting time
here instead of enjoying some time with our families.




Mail converted by MHonArc 2.6.19+ http://listengine.tuxfamily.org/