[TYPO3-dev] Linkvalidator needs you

Dmitry Dulepov dmitry.dulepov at typo3.org
Wed Dec 22 11:00:17 CET 2010


Hi!

Steffen Kamper wrote:
> Am 22.12.2010 07:48, schrieb Georg Ringer:
>> Am 21.12.2010 19:00, schrieb Steffen Kamper:
>>> i agree realurl should be included. We had simulatestatics in old days,
>>> and realurl would be the perfect substitution.
>>
>> the question is: should there be a rewrite of it for that
>>
>
> there are some issues that prevent it at the moment:
>
> * realurl is well meaintained by Dmitry. If it would be integrated, all
> core devs have to learn how it works to be able to maintain as well
> * some parts should better cooperate with core. That means it has to be
> refactored - missing volunteers and manpower
>
> My agree for integration was from principle, and it only can happen if
> there are enough devs volunteer for this.

I should spot some more light on this...

Yes, I prefer that the *current* RealURL is not touched by anybody else. I 
am not selfish at all here and therefore I want to give my reasons :)

Firsts, you all need to know the history of RealURL. Martin Poelstra (is 
that the right name?) made a great but a very dirty hack ages ago to use 
speaking URLs with TYPO3. It was an extremely dirty hack because Martin did 
not have large enough knowledge about the core (nobody except Kasper did at 
that moment I think). But again, he was brilliant with the idea.

Next, Kasper realized the potential of the feature and rewrote RealURL from 
scratch. It was times when "clean coding" and "object oriented" approaches 
virtually did not exist. Thus it was all a big piece of code with no 
comments, lots of hidden knowledge between functions and stuff like 
returning '__ERROR' instead of array to indicate the error.

When Kasper decided to step out, RealURL was essentially abandoned. It 
somewhat worked but most of you remember "not a postVar" 404 error, don't 
you? So I stepped in and took RealURL. Truly speaking it was more than 
complete mess at that point because it was patch over patch with methods of 
hundreds lines of code doing cryptic stuff (assuming X because the function 
in other file did X, so it all broke when the function did X+1).

So I started small refactorings and fixes. Thanks to Netcreators where I 
worked, they gave me tons of time to understand RealURL and fix it. I can 
only say thanks and thanks to them all the time (Ben, Sander, Willem, 
thanks!!!).

The code is much better now but the code base is too old. People often 
provide patches that fix bugs. This is a good side. The bad side is that I 
usually have to fix patches :) While fixing one bug, patches usually 
introduce another one. This happens in more than 50% of cases. It happens 
even in patches of core devs or other devs, which we all know.

So it is extremely dangerous to give RealURL commit access to other people. 
Imagine 3-5 patches like this and the effect they will have. So the only 
way I see now is that I check all patches before they are applied.

Now your idea could be a core-like list. Sorry, not going to work because I 
am not made from rubber and I can't expand myself to do both daily work and 
check patches at real time :) I can only work in "rounds". A "round" is 
when I dedicate a week or two to the extension and work on that all the 
time. So I take all submitted patches, look at them, see what they can 
break, apply and test. This is how it works and it works well until now. I 
can see any other process that will keep RealURL stable. Also I do not see 
a single dev who can provide patches without side effects. So, you got the 
idea.

A better way would be to create a "RealURL 2.0". I have that in mind for 
1.5 years now. This project is huge and it needs:
- implementation of the router directly into the TYPO3 core (speaking URLs 
by default)
- rewrite of tslib_cObj::typoLink and t3lib_tstemplate::linkData to use the 
router but stay compatible with all previous hooks

The router has to do a lot of stuff and it has to be based on different 
principles. Current RealURL does it all wrong and at the wrong time (all 
those multiple caches, etc).

Time, project, budget, people? Well, possible I think. May be should plan that.

Now you know it all. Sorry for the long text. As you see, I can guarantee 
proper work of RealURL only if I am the only one who commits changes.

-- 
Dmitry Dulepov
TYPO3 core&security team member
Twitter: http://twitter.com/dmitryd
Read more @ http://dmitry-dulepov.com/




More information about the TYPO3-dev mailing list