Who’s the bastard ?

Update : I’m putting this update at the start so people can see it…

I’m tired of repeating the same thing over and over again, so I’ll make this clear once and for all : I *never* said that Alvaro is a bastard.. the title of this post is an answer to the hundreds of people who told *ME* that I’m a bastard for doing what I’ve done.

Secondly, we *never* stole anything from Alvaro, his work is still credited to him, he still appears as a developer and the founder, the only thing that we’ve done is to remove him from the “list of currently active developers” because he’s not active anymore (and hasn’t been for over 3 years). He abandoned aMSN, and I see no reason why he would have to be mad if aMSN ‘abandoned’ him in return.

He’s saying it was a “coup d’etat”, which is over-exagerating, it makes it feel like he was the most active developer, and then he gave me admin privileges and I kicked him out right away… no, that is not true, and he never said that himself (but people seem to understand it like that), he left aMSN years ago, and I’ve been managing aMSN for over 7 years now, while he’s been the project leader for maybe 2 years (he would need to confirm that, as I’m not sure when the roles switches from him to me).

The only thing I believe was a wrong doing was to not notify everyone of that cleanup that I did in the list of active developers, and for that, I already apologized, and I don’t know why he had to blog about this story and harm aMSN’s reputation (and mine specifically).

And here is a copy/paste of a discussion I had with Alvaro back in 2007 (3 years ago) after he was accidentally deleted from the list of active developers :

Álvaro : i don’t mind being removed
Álvaro : do what you want, really
KaKaRoTo : btw, you’re not in amsn project anymore
KaKaRoTo : you want me to add you ?
Álvaro : yes i know
Álvaro : i’m not doing anything right now
Álvaro : so i don’t see the point
Álvaro : if i want to code in amsn again, i can be readded then
KaKaRoTo : you’re back :p
Álvaro : thanks

And finally… We told Alvaro from the very beginning that if he wants to code for aMSN again and be active, he just needs to tell us and he’ll be immediately added back to the ‘list of active developers’ and have full SVN access. But he said that he doesn’t have time and doesn’t want to do anything. He’s welcome to join us anytime, he was never kicked, it was never a “coup d’etat”, it’s a simple matter of whether or not he’s an active developer now or if he’s not, and he currently isn’t.

I don’t know what more I need to say for people to actually understand what happened….

End of the update: Back to the original post…

Wow, what a shock…

This post is a reply to Alvaro’s blog post. To those who don’t read spanish, there’s always google translate..

Basically, what happened is that I did a cleanup round on every inactive developer a few months ago (almost a year ago) and Alvaro realized that only recently and asks why, to which I explained that inactive developers were removed, and since he was inactive for over 3 years, he also got removed from the team members, as I want to keep it minimal to reflect the real status of the project. He did not like it, and he requested he’d be added again. to which we ALL (admins) responded that it wasn’t justified and that he was being childish (because of how he kept answering), then we added him again as team members, but he then told us to remove him again … you can read the whole thread here.

Now, Alvaro decides to post on his blog (in spanish) and put it on meneame (digg-like equivalent for spanish people) in which he says that I’m a bastard who prepared a “coup d’etat” to exile him, and that we started insulting him and stating me specifically, he says it’s “no surprise coming from that person”, trying to make me look like a bastard…

So here’s my answer to Alvaro :

First, aMSN is aMSN, it’s not “Alvaro’s Messenger”. It was called like that back then, when you were alone in the project, then you said that it didn’t deserve the name because it wasn’t your work anymore, it was the work of everybody involved and it belonged to the community now, and so the name was changed to be only “aMSN” with no particular hidden meaning, that was maybe 5 or 6 years ago. So why do you now state in your blog the name as being “Alvaro’s messenger”? Oh, is it because you want to generate even more sympathy towards your cause (troll) ?

Then you decide to explain your version of what happened.. some kind of ‘summary’ , full of false advertisement towards you.. did I “stab you in the back” like you said? no, I’m sorry but that’s not true, when you’re inactive from a project for that long, it is expected that you’d get removed from it, that’s normal. Yes, I probably should have notified you (and the 30 other people who got removed), but it wouldn’t have changed anything. Also I remember quite clearly that you told me yourself (before these events) to just remove you from the project because you were inactive, and I told you that it wasn’t necessary, that I might do it later, but that you could stay (at that time). For your information, launchpad automatically removes membership status to inactive developers every 6 months.. the system does it, not the project leader.. I wonder if you’d be insulting the machine too if sourceforge worked the same way…

And no, all you got wasn’t just a bunch of insults and shouts, we tried to reason with you, but you just wouldn’t listen, you were just being your childish usual self, a real crybaby. If you take that as an insult (you will, since that’s all we said to you that you considered being ‘insults’), then too bad, it’s just the truth, not my fault if you don’t like the truth. But how can you say that it’s really not a surprise coming from me? what, you want to make me look like a universal bastard who just insults everybody with no reason? Did you decide to make this your personal vendetta against me? You should know that this decision (and those ‘insults’) were not mine alone, *everybody* said and agreed on the exact same thing, but I’m always the one in the front lines, because I’m the project leader right now.

The aMSN development isn’t closed, and like we all said a few times already : It doesn’t matter what you did in the past!!!! Do you think that Bill Clinton can just go and yell and post on his blog how the security at the white house refused to let him move in there, and how they didn’t let him authorize the launch of a nuclear missile? Even after he told them “how about my past contributions”? No, the world doesn’t work like that, we were quite polite towards you, we said that we respect your work, we acknowledge what you’ve done, but if you’re going to be inactive and not do a thing, then you have no reason to be part of the team… We said that if you give us a reason to add you to the team, if you were going to become active, then you’d get your status back, but you just wanted to have your name up there and not do anything.. nope, it doesn’t work like that. You have to respect democracy and what everybody thinks, and you have to respect the rules that were being used by the team since day 1 (your own rules).

After some more whining on your part, You were added again to the members list!! But then you denied that, and said that you didn’t want it, so I removed you again (this time telling you that I removed you).  So don’t come making us look like bastards here!! Why did you fail to mention you were re-added at your request ?

No, I don’t like your blog, I don’t like how you make us (and mainly me) look, and I don’t like how you deform reality, I don’t like how you say we stabbed you in the back, how you said that we’re not giving you credit for your past work, and I don’t like how you think you’re some kind of God or something, and that you are in your absolute right to ask us whatever you want after disappearing for 3 years! You could have been dead for 3 years for all we know, you weren’t giving any sign of life, and you still dare come and say that you were “active” for all that time?  You say that I did a “coup d’etat”? I’ve been project manager of aMSN for a lot longer than you were, your last commit was maybe 3 years ago, but your last real contributions as a project manager was 6 years ago, that’s more than the life of the whole project.

Your blog has just proven to us once more what we’ve been saying from the start… I won’t say it, but let our readers decide on how you acted…  You decide to post a story about what “we did to you”, giving your own story of what happened, completely manipulating the facts to suit your ego, and you post it in spanish and post it in meneame, as if you thought we don’t know how to use google translate… You try to catch all of the spanish people’s patriotism, making them think “one of our own got stabbed in the back”.. and all you did was send us a few people to our IRC channel, who come and insult us, bastards, motherfuckers, then leave the channel.. yep, that’s the way a “leader” acts…

If you want to fork aMSN and rename it back to “Alvaro’s messenger”, then have fun, go ahead, do it and good luck with that, the more users you take from us, the less support we’ll give to people who don’t know how to use a computer.. But like I told you before, and I’ll tell you again, you are more than welcome to join the aMSN team again, you just need to be active. If you do have time to spend on aMSN and work on it, and you have patches for us, then you will be added. If you don’t want to send us your precious patches, and want to act all high and mighty and fork aMSN, then do it, but it will be your own loss.

But let me tell you one thing… although people say “don’t feed the troll”, I don’t care, if you want to talk trash about me, then bring it on, you’re not the only one who has a blog in this world, and I can make people see the truth, where you try to deform it.

Good luck with your life, and I hope I won’t be hearing from your anymore.

Update: Alvaro commented on meneame saying that he uses amsn but only to connect (never chat) and uses pidgin.. he also says : “I do not need nor do I have time or inclination (increasingly less) to continue with the project AMSN.” And that’s the reason why he’s not part of the team, it’s because he’s not active and doesn’t plan to be. Like some other people said, the status and lifetime of an open source project is unrelated to the original founder of the project. And I believe that’s what people must understand. I don’t like people who just want to cause issues and get people’s attention just to feed their ego…

Update 2: I just want to make sure people understand that Alvaro is still listed as a developer/founder, he appears in the amsn website, he’s in the README, etc.. but all we did was remove him from the “list of currently active developers” (the sourceforge membership list) and that’s what he didn’t like.

The title of this blog post “Who’s the bastard?” isn’t meant as an insult to Alvaro, it is meant to answer all those hundreds (probably thousands in the next couple of days) of comments on meneame and on Alvaro’s blog who are treating *me* of a bastard, son of bitch, stupid, etc.. without knowing the facts.

Alvaro decided to be a troll and start a flame war and a vendetta against aMSN, and I don’t care, but I won’t sit by watching him insult us without giving the real truth to people.

KaKaRoTo

http://translate.google.com/translate?js=y&prev=_t&hl=en&ie=UTF-8&layout=1&eotf=1&u=http%3A%2F%2Fwww.bodegueros.net%2F2010%2F04%2Fcuidado-con-vuestros-proyectos-software.html&sl=auto&tl=en

Google Summer of Code Participation

Hello fellow developers and aMSN enthusiasts!

As some of you might know, this year again, we’d like to participate in the Google Summer of Code program. Unfortunately, we couldn’t get aMSN as an organization, but, just like previous years, we will be generously given a slot by the Tcl/Tk community who is acting once again as an umbrella organization.

What this means is that you still have until April 10th to submit an application for GSoC, and to do so, you should go the GSoC webapp and fill an application under the organization “Tcl/Tk Community” and submit your proposal for an aMSN related project.

You can get ideas on what we’d really like people to work on by having a look at our wiki.  Don’t forget you can submit your own ideas if you wish to, but make sure it’s something we’d like to see and that it’s worth working on for 2.5 months at 40 hours/week.

Make sure you read the User Guide and the FAQ that Google has put up and don’t forget that this is just like submitting an application for a job (there is 4500$USD involved..) so you need to make sure you convince us that you are the best person for the job. Quality over quantity, and only submit an application if you know you can do and finish the project on time.

I hope we can get good students this year who will help us improve aMSN.

Thanks.

libnice 0.0.11 Released

Hi,

Today, I’ve released a new version of libnice : 0.0.11.

This is an important milestone for libnice because this is the first version that has support for a reliable transport.

As I explained in my previous post, this version uses a TCP over UDP implementation that is compatible with libjingle’s pseudotcp (it’s actually a copy of it).

The change is very minimal, all you need to do is call nice_agent_new_reliable instead of nice_agent_new and libnice will take care of making your components reliable. You will also need to pay close attention to the return value of the nice_agent_send as well as the reliable-transport-writable signal. But everything else should stay the same.

If you’re interested in the TCPoUDP implementation, you can also use it directly in your application, outside of libnice, as it is now provided as its own class.

The documentation has now been updated, and you can read more about it here.

Let me know if you will be using this much requested feature!

aMSN 0.98.2 to be released without Audio/Video support

Hey,

We (the aMSN team) want to soon release aMSN version 0.98.2 because of the various issues we faced with 0.98.1 because Microsoft changed their protocols.. mainly the problem with the nickname changing to the email at every connection.

We also recently realized that the Audio/Video capability would need to be dropped because it just doesn’t work anymore unfortunately 🙁

Microsoft forced everyone to upgrade to the latest version of Windows Live Messenger : WLM 2009 which uses MSNP18 and has the ability to do Audio/Video calls through a tunneled SIP (P2P SIP messages, not using an external SIP server) and so, they realized that their SIP servers aren’t being used anymore, so they had this great idea of shutting down their servers… the result? aMSN can’t do Audio/Video calls because the SIP server refuses our connections.

Now we have two choices, either use MSNP18, or disable SIP calls completely. Obviously, we can’t move to MSNP18 at the moment, because MPOP support isn’t really ready yet, and because MSNP2PV2 hasn’t been implemented, so we had to remove the Audio/Video support in aMSN SVN for now, and only have it available for those who are brave enough to try out MSNP18.

We will soon release 0.98.2 as it is long overdue now, and we want to let people know why their A/V calls are not available to them anymore.

I hope everybody will understand why this is happening and we won’t get flooded by n00b questions everyday…

Some Braid designs…

Hi,

So.. I’ve been thinking *alot* about how to best design Braid if I wanted to have a proper time manipulation feature in the game that would ressemble Braid, but still avoid using up MBs of RAM per second… I think I’ve got something, and I’ll try to explain it!

First: do not store the position of every object in the world at every timestamp, instead, only store the events, and let the objects interpolate on the event’s timestamp, their current timestamp/state to know what their new status should be.

I also realized today that I do not need to keep every object of the world in memory, even after they disappear.. all I need to do is make the object’s creation/destruction events get registered in the ‘timeline’ and let the rewind/fast forward feature recreate objects as needed. I should probably have a unique name generated per object in order to know which event goes to what object (instead of linking the event to the object’s address).

I also realized that I’d need multiple timelines, dependent on each other.. so for example, we could have the “world” timeline for the world (for time independent objects), then the “current” timeline that could get rewinded/forwarded (for normal objects), we could also have a “player timeline” that would have its timestamp generated depending on the player’s position in the world (for Braid’s world 4), and a “shadow” timeline that would be used by ‘shadow’ objects for world 5, also probably a ‘timewarp’ timeline to emulate the time-warp feature of the ring, so it could translate the timestamp of other timelines depending on the object’s position relative to the ring..

These timelines would be linked to each other.. For example, imagine a time dependent key in world 4. The world would request the key to update its state (position/broken or not/being held or not, etc..) to the new timestamp X on timeline “world”, this will cause it to ask the “current” timeline for the ‘current’ timestamp at time X, which would translate to timestamp Y (depending on whether or not you rewinded or not), this would cause the timeline to ask the “player” timeline for the new timestamp associated with timestamp Y (in other words, where was the player located at timestamp Y), which would give us a timestamp of Z, now that’s where the key should be.. so the key tries to go into its new state at timestamp Z, it realizes that it was ‘hooked’ (being held) to another object “abc” (player or monster) at that timestamp, so it asks that object (the world actually, since the object could have been destroyed) to get the status of object “abc” at timestamp Z, which could again chain up multiple timestamps (depending on whether it was the player, a time independent monster, or a normal monster) until it gets the state of the object at that timestamp, at that point, it will be able to know the position of that object, and set its own position to the same position as that object (with an offset depending also on the direction of the object)!

Ouff, now that sounded complicated! And we didn’t even start adding a ‘maybe there was a time warping ring in the path of that object between now and timestamp Z..’ Either way it seems to fit so far, holding only events, destroying unneeded objects, and chaining timelines together with each timeline holding its own objects/events, seems to make sense so far.. we do get the correct behavior apparently, and with minimal memory usage…

Now I still have to get my brain into a stable enough state to figure out questions like “what happens if the user gets inside a time-independent platform?” or “what happens when you need to figure out the position of an object when a ring might be in the way?” or “how to interpolate correctly our new state when the requested timestamp is not the old timestamp +/- 1 time unit?”

I’ll start designing some uml diagrams soon to try and make it fit, then I’ll start coding the basic structure… Assuming I don’t see any flaws in the design…

If you have comments about this design, feel free to share! 🙂

See you soon!

KaKaRoTo

PS3 Hypervisor dumped!

Hi again,

Great news for PS3 owners, The PS3 Dev team from http://ps3news.com (of which I am now a member) has been able to dump the hypervisor’s executables in memory! This was done thanks to a kernel module that I wrote 🙂

My first experience with kernel programming was challenging, fun and very frustrating because of the lack of docs! But thanks to the open source nature of the kernel’s source code, I was able to understand how to properly use the read_proc of the create_proc_entry API, and was able to dump the memory of the hypervisor by giving full access to the memory through a /proc entry.

You can  download the source code of my kernel module from here. I’ve decided to release it under the LGPL license.

Read more about it on the ps3news forums.

p.s.: What this means is that we can now start reverse engineering the PS3’s hypervisor’s code in order to find an exploit or some way to trigger the ability to install custom firmware on the PS3. However, this does not mean that the PS3 is completely hacked.

This exploit was first discovered by George Hotz.

Enjoy! 🙂

New project!

Hi,

I’d just like to announce to everyone that I’ve decided to start working on a new project!

Seeing as I’ve loved the game Braid, I thought it would be nice to have an open source clone of the game! I should start working on that soon(-ish), and I hope I can actually see this project through…

Unfortunately, I don’t have much experience or interest in UI/OpenGL work, so I’ll start by designing and writing the low level classes that would allow a game to have the same time-based manipulation mechanic as Braid. And I hope that I’ll find someone willing to join the project and provide the UI/art part of the project!

I’ve contact Jonathan Blow, the author of Braid, and he said he’d be willing to help and provide me with the level file format  he used for the game, so we might be able to have this project working with the levels of the official game (assuming you bought the game and have its data files)!

That’s it, I’ll let you know more about how that goes! In the meantime, maybe someone (who played the game preferably) could come up with a nice name for the clone! 🙂

KaKaRoTo

Braid for linux!

Hello world!

I feel honored to say that I’ve recently been in contact with Jonathan Blow, the author of the awesome game Braid.

For those who don’ t know the game, it is an extremely challenging, fun, rewarding and original puzzle platformer which is so far the best game I’ve found on PSN.

I’ve asked Jonathan whether or not a Linux port of the game was in the works, since I’ve seen him hint at that in old posts on his blog (January 2007 and August 2008). I’m glad to say that he reported that a Linux port of the game was indeed being developed. To quote :

“[..] one is in progress but hasn’t quite been completed, but may eventually be released.”

He also said that the porting is about 95% complete, but I don’t know how much time it will take for the remaining 5% to be completed, so maybe it will soon be available, maybe not, but this is great hope for the Linux community!

I also spoke with him a little about Open Source, and I was pleasantly surprised to see him not completely reject the idea of open sourcing his game, but he said “it is not likely at this time”, so although it is not likely to happen, it is maybe another hint of hope for the future!

Finally, as my last bit of news. Just in case you were wondering, I also asked about possible DLC, to which he answered (no surprise) :

“There will probably not ever be DLC for Braid. The game is complete without it.”

That’s it, I hope these news are comforting to those who are just dying to play Braid on their Linux systems!

KaKaRoTo

Adding reliability to libnice

Hey all,

First news I’d like to share is about libnice!

I’ve been working lately on adding reliability to libnice. This means that you could be using libnice as a reliable socket.. This is accomplished using some form of TCP over UDP, which is compatible with google’s libjingle implementation.

The API doesn’t change much, you only need to call nice_agent_new_reliable, and there’s a new signal ‘reliable-transport-writable’ in case you fill in the internal buffer and nice_agent_send starts returning -1. That’s all!

I know a lot of people were waiting for a reliable transport with libnice. I’ve discussed with many people during GCDS and most of them said that they’d like to see some kind of TCP over UDP in libnice, so I’m happy to say that I finally got around to doing it.

I also decided to make this TCPoUDP algo into its own GObject and make it available through libnice, which means that you could use the TCPoUDP implementation directly yourself, outside of libnice, in your own applications, if you ever wanted to!

Expect this new exciting feature to become available to you in the next release of libnice!

KaKaRoTo