<div dir="ltr"><div class="gmail_extra"><div>Hey,</div><div><br></div><div>...</div><div><br></div><div class="gmail_quote"><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
But, unfortunately, I must say that I do not intend to integrate<br>
libtomahawk with Amarok anymore. Please, don't get me wrong. I'm not<br>
saying that all my GSoC work was in vain and that the confidence that<br>
everyone had in me was an error. In fact, I have been trying to separate<br>
libtomahawk from the rest of the Tomahawk code until the end of January.<br>
However, simple changes were demanding a huge effort. All that just to<br>
separate, because we still had to do a Macgyver on the database stuff.<br>
Having another database running just because a plugin required that is<br>
somewhat difficult to accept in the long run. All that made me feel<br>
really frustrated for a while, since I haven't met my expectations<br>
neither in Tomahawk nor in Amarok.<br>
</blockquote>
<br></div>
To be honest that really disappoints me:<br>
<br>
I had always kept telling you that I was more than happy to help make libtomahawk a proper usable library and to work on that myself as well.<br>
I know you had to fight the database stuff a lot. I see that one can dislike the second database.. STILL I'm convinced we were very open to compromises and offered/asked you *several* times to discuss what you're up to - in fact - I demanded you to talk more to me/us during GSoC ... you promised to do so in future and now once again you've been fiddling around on your own for months without discussion. I'm pretty sure if you told us that the second database approach certainly doesn't work you, we would have found a solution together...<br>
</blockquote><div> </div><div><div>My apologies. Failure to communicate was my biggest mistake. I'm aware of that, but I can't step back in time. </div></div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Furthermore we told you that using the second database should be the first temporary step, so we can make sure everything is basically working first and you don't start with the most error prone part ...</blockquote>
<div><br></div><div>Actually, the database stuff isn't the only problem. More severe ones are described bellow.</div><div><br></div><div>...</div><div><br></div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Tomahawk is really full of great ideas and I completely understand why<br>
everybody insisted on the idea of using its code, since making<br>
everything from the scratch must be always our last card to play.<br>
Seriously, I'd learned a lot with all the design choices that were made.<br>
Resolvers, the protocol itself, the way that XMPP and its XEPs were used<br>
for peer discovery were simply outstanding ideas.<br>
</blockquote>
<br></div>
... and I'm still sure it's a terrible idea to reimplement all of this.</blockquote><div><br></div><div>Well, I'm obliged to disagree. But, again, I respect your opinion.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
<div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
But fear not, as a consequence of everything aforementioned I started to<br>
develop a new library, even though I knew that Domme was against this<br>
alternative, to do everything that was planned during my GSoC. I call it<br>
TPLib, but maybe I should change its name for something that resembles<br>
more its social features afterwards. In spite of that, I guess many of<br>
you are now asking yourselves why I haven't told anybody about that yet.<br>
Well, people tend to accept an ongoing work easier than just promises,<br>
as both Andy Hunt and David Thomas wisely pointed out in the Pragmatic<br>
Programmer.<br>
</blockquote>
<br></div>
As much as I'm against this in the long run, maybe it will help us determine where the problems in the libtomahawk API are and make it usable for you at last...</blockquote><div><br></div><div>There is always a chance.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
And speaking of that, I believe that I owe everyone apologies.<br>
Especially, for you Domme. Your commitment as a mentor was exceptional.<br>
Your several emails, even after GSoC are a concrete proof of this.<br>
Tomahawk team, in my opinion, should be really proud of having a<br>
contributor with such great sense of community.<br>
</blockquote>
<br></div>
Thanks, the not so romantic view on this might be:<br>
<br>
I was your mentor and let you pass the evaluations, if this doesn't make its way upstream I have to justify why ... maybe not officially but at least to myself.</blockquote><div><br></div><div>That's not the case. You've misinterpreted the reason why I wrote about you.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
To be honest, I still need at least three months for having it working<br>
as desired for a first release. Despite that, I've made all the stuff<br>
related to sources management, control connection, database sync<br>
connection and I'm polishing the stream connection stuff right now.<br>
Although the three connection types were almost done, I'm focusing on<br>
getting the part of having access to peers collections first. Along with<br>
units tests to validate my work. Right now, for instance, the library<br>
has something about 7000 lines of code, regardless of cmakelists and<br>
non-c++/qt related files.<br>
</blockquote>
<br></div>
I would have much preferred, if you merged your already finished work first and then worked on improving it (even if it was with your own library) ... currently it looks like you just vanished from the face of the earth after not completely finishing your project.<br>
<br>
<snip>technical details</snip><br>
<br>
Will look at that some time next week after some exam.</blockquote><div><br></div><div>Merging my GSoC work and then improve it to make my own library would be pointless. That's not about having my own library. The point is, TPLib's design is based not only in libtomahawk features but also in what libtomahawk is not. Let me clarify that, some time ago I asked lfranchi why he hadn't implemented these social features in Amarok. He was an amaroker by the time he had many of the ideas that Tomahawk currently implements. And he replied that, given Amarok design at that time, that would require a huge effort. I'm not saying that we should reinvent the wheel as we please nor that lfranchi or I done the right thing, but given Tomahawk current design, in my opinion, it would demand too much to be usable by third-parties in a reasonable manner. I'm not saying it's not doable in the long run, but it was not made with stuff that most people expect from a library.</div>
<div><br></div><div>Like testability, for instance, since Tomahawk code doesn't make use of tests and even if we want then its many singletons would made the task almost impossible. On the other hand, it make use of assertive programming. It's is a good idea, but I believe that an automated approach is far better than expecting a run-time error to happen. There is also about three library dependencies which are not optional in its API, but that's not a big deal. Other problems that afflict Tomahawk are coupling and low cohesion, in part because of the many singletons, which makes the whole code much more difficult to reuse, maintain and understand.</div>
<div><br></div><div>It's also noteworthy the fact that it uses a lot of compiler directives to enable/disable gui related stuff. Although this is a problem per se, the fact that these directives are even in classes that implements the logic of libtomahawk, which should be gui independent, is very troublesome.</div>
<div><br></div><div>One can say that everything had always worked in Tomahawk that way. Indeed it works. However, in my opinion, it would be risky to create a library based on code with these problems. That's why I'm writing a new one from scratch.</div>
<div>
<br></div><div>...</div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex"><div>
<blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Last but not least, I don't know if someone from our team still want to<br>
integrate tomahawklib with Amarok after all that was said in this email.<br>
Especially now that another GSoC is beginning. Otherwise, I can help<br>
clarifying what I had done.<br>
</blockquote>
<br></div>
I doubt anyone (including me) would want to see another Tomahawk-Amarok-GSoC-project right now for understandable reasons.. :-P<br></blockquote><div><br></div><div>Understood.</div><div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
We (I'm speaking for the team here) are still convinced that using libtomahawk is the much better approach:<br>
1) it will help you because you don't need to try to catch up with our development.<br>
2) it will help us improve our library for external usage.<br></blockquote><div> </div><div>Good points, but number one isn't a big problem. Tomahawk network protocol would be basically the only interface between TPLib and libtomahawk and, fortunately, it doesn't seems to change often. Also, sip plugins code could be used by us with only a few modifications here and there (mainly removing gui stuff). These are the only two things that can force me to catch up with Tomahawk development.</div>
<div> </div><blockquote class="gmail_quote" style="margin:0px 0px 0px 0.8ex;border-left-width:1px;border-left-color:rgb(204,204,204);border-left-style:solid;padding-left:1ex">
Even if you go for your own library _we're still happy to cooperate_, but seriously - for one last time - you need to talk to us. Please show up on IRC from time to time or at least drop a line to welisten@, tell us what you're up to - otherwise we can't support or care for your library...<br>
</blockquote><div><br></div><div>Sure, I'll drop in Tomahawk channel on Monday. I'm currently in my parents house and I find really annoying to chat without a keyboard (I'm writing this email via a tablet). And thanks for offering your help even after all that.</div>
<div><br></div><div style>Regards, Lucas Lira Gomes.</div><div><br></div><div>----------------------------------------------------------------------------------<br><div>Lucas Lira Gomes (llg)<br></div><div>Linux User #533002<br>
Tel.: <a href="tel:%2881%29%209235-0916" value="+18192350916" target="_blank">(81) 9235-0916</a><br>
<br></div><a href="http://www.about.me/lucasliragomes" target="_blank">www.about.me/lucasliragomes</a><br></div></div></div></div>