[pisa] Re: hipl braindeadness^w^w suggestions for tiny hipl
- From: René Hummen <rene.hummen@xxxxxxxxxxxxxxxxx>
- To: pisa@xxxxxxxxxxxxx
- Date: Fri, 06 Nov 2009 17:42:56 +0100
On Nov 3, 2009, at 10:08 PM, Miika Komu wrote:
Tobias Heer wrote:
Hi.
I think it is important to fix as many of these issues in HIP
before we split it into HIPL and TinyHIP. Otherwise the HIPL code
will cease to be a valid development platform at some point. I
would like to see the future of TinyHIP and HIPL like this:
HIPL stays a development and experimentation platform but tries to
improve as much as possible.
TinyHIP advances to the point where it can be used in production
systems.
=> None of both should die or be let behind because both are
important.
Hence, I think it is an error to hope that TinyHIP will magically
solve all the problems. It won't.
I didn't really claim that TinyHIP is a silver bullet, I just have
doubts how well the changes can be merged between HIPL and TinyHIP.
Also, focusing usually gives better results.
Tim is currently getting rid of at least most of the warnings in tiny
branch and we are striving for a similar warning level as already
reached by pisa. I guess a good way of maintaining HIPL and tinyHIP in
parallel is to differentiate very well between functional code changes
and bugfixes. We should then try to apply bugfixes whenever possible
in both implementations and check if the same bug still exists in case
the patch is not valid any further. I think the major issue - at least
in the beginning - is the required communication to ensure that
bugfixes are always noticed.
More comments inline.
Am 03.11.2009 um 16:34 schrieb Miika Komu:
Diego Biurrun wrote:
Hi,
Rene and Tobi, there's also some requests for comments for you in
this email.
René asked me to write down some of the complaints I had about
hipl.
Since Miika is directly listening here, I figured I could send
them to
this list where they are archived and can be noticed and discussed.
It's quite a rant, so hang tight and don't take it too seriously,
it's
much more fun to write rants than dry issue listings :)
[All the numbers I took from the midauth2 branch.]
So here goes:
** still using tla (OK, Miika is working on this)
tla is a PITA and a resource hog. Knowing tla is a dead skill
and the
tool is more of a hindrance than a help IMO. Compared to what
could
be achieved with the alternatives, this is a net drain on developer
productivity.
I am not confident on the tla branch imports done by git. I'd
suggest that we'd switch to git for the tinyhip stuff because it's
going to diverge from HIPL quite radically. This could be done
after merging userspace (that already contains midauth stuff
thanks to Rene) to the tinyhip branch. What do folks think about
that?
I already created a git project to "repo.or.cz" called hipl.git.
Would that make a nice new home for tinyhip?
We could also set up a repository here. Any reason not to do so?
we could also host it as well, but my suggestion was to make it look
even more like an open source software project and to appeal
developers outside of the research circles. I am not also sure if we
all are going to do this stuff for 20 years to come, so at some
point somebody, if not us, has to move the software elsewhere.
Besides this, the suggested repository avoids a number of annoying
maintenance things like:
* maintaining a unix machine
* securing and upgrading it
* setting and maintaining a web interface
* adding unix accounts and making sure that only git is allowed
* making back ups
The site supports these already in an automatized fashion. It is
used by a number of other projects which increases at least my
confidence for the site.
(Note: hosting web pages should still be done somewhere else)
In my opinion, we should first get the core and our required
extensions working before making tiny publicly available. I don't see
the point in getting patches for additional functionality and bugfixes
from an eventually existing community, while we're still redesigning
the whole thing and shifting around/deleting/modifying a substantial
part of the code. Once the basic implementation is done, I agree, that
that having an open source project can be beneficial.
** most files are executable - WTF ??
Source files should not be set executable. Neither should anything
except, surprise, executables. This is incredibly lame, it looks
as
if it had been developed on a FAT32 drive from which proper Unix
semantics could not be derived. Sheesh, this is not some lame
Windows
project..
This is the umask syndrome...
This is simple to fix and should be fixed in HIPL ASAP.
We need to stick to the same umask setting then.
** massive -I flag abuse
The includes throughout hipl are handled in a terrible way.
Instead
of using proper relative paths in the headers themselves, the
compiler
flags are bloated with literally dozens of -I flags. This is ugly
enough by itself, but as a bonus, if you want to use a hipl header
outside of hipl, you have to recreate this mess...
I hope this can be solved with tinyhip's superior building system :)
Rewriting the autobuild system may be boring and cumbersome but
this should definitely be done for HIPL. The current rewrite of the
PISA build system (which was a HIPL copy & paste) could be a
template for this. The resulting Makefile.am is surprisingly simple
and short. I guess this can be done with little effort as soon as
we have sorted out the remaining problems in PiSA.
This would be nice.
** massive CFLAG abuse
The compiler calls are bloated with faaaaaaaaaaaaaaaaaaaaaaaaar too
many -D flags. Such #defines should be in config.h. Only
definitions
that are specific to certain files should be passed as -D flags.
It doesn't really bother my sleep at nights, but I tend to agree.
I agree, too. This should be fixed.
** horrible misuse of recursive automake
My views on auto* are basically unprintable, but hipl takes the
misuse
of the autotools to another extreme. They are used in a recursive
fashion and there is recursion aplenty. All Makefile.ams
combined are
more than 3000 lines long, hipl is about a million lines of
code. My
raw Makefile for MPlayer is 1100 lines for about half a million
lines
of code, but I list one source/object file per line, so you can
count
it as about 600 lines for the purposes of this comparison.
Issue to be solved in TinyHIP?
It will be solved in TH but it also needs to be solved in HIPL (see
above).
** gazillions of warnings
The number of warnings just drows everything. No wonder they don't
get fixed, I mean, who could tell that file X now prints 101
instead
of 100 warnings? Many of them are harmless (but incredibly lame)
like
"unused this" and "redundant that", but I bet half of them are real
bugs that nobody ever bothered to fix.
Issue to be solved in TinyHIP by enforcing -Wall or something even
more scarier?
I guess this would also be essential for HIPL. This is a measure to
improve and maintain quality. I guess this could save countless
hours of debugging and maintaining buggy code of other people (e.g.
students that left the project). It takes some time to get there
but Diego and Thomas have proven that it can be done... and it
feels good :-)
See above.
** rampant #ifdeffery
Don't get me started, let's just say they are too many :)
Agree.
This will be tackled in TinyHIP
So much for this rant of mine. You asked for it, you got it.
The worst
part is that I really did not dig deeply, on the contrary. I
shudder to
think of the horrors that a detailed investigation will uncover.
Also,
much of what I mentioned could be fixed very quickly, in minutes,
hours,
days, but apparently nobody could ever be bothered so far...
I could write an essay as a response to this comment and list all
the excuses but I'd rather not. Suffice to say that we should have
a more strict compilation environment and some sort of automated
test system.
Yep. Don't wait for TinyHIP.
Ok. Then we just need some volunteers for all these issues :)
I should probably point out that some of these changes are less
painful to handle with TinyHIP because a) it has less dependencies
(libinet6 is the worst) and b) TinyHIP is not yet in wide use, so we
can still blow it up :)
My suggestion is to not only fix these things in tiny hipl, but
fix them
in all of hipl. At least don't spread the ugliness any further...
For me, TinyHIP will be the successor of HIPL and I'd like to
concentrate at least my efforts on that rather spreading them on
multiple places.
I have no idea if we can still merge changes from HIPL to TinyHIP.
If we can, it would make sense to solve quite many of the issues in
HIPL now before making the split.
I have some doubts about merging between TinyHIP and HIPL.
I think the merging consist of cherry picking and a lot of manual
conflict resolution.
This is why I also suggested to switch to git in TinyHIP as soon as
possible.
I'm not sure about which version control system to you, but I want
tiny to move to something else than tla as soon as possible. For me
the 2 competitors are good old SVN and git as a more modern candidate.
Since this is supposed to be a list of things to improve for tiny
hipl,
add anything that comes to your mind. If our hearts stay pure,
we may
see a decent hipl in our lifetimes...
Although I agree on your worries on code purity issues for the
purposes of portability, the system test environment has more
priority to me at the moment. It could be also because of the fact
that Gurtov keeps asking me that every second day :)
Will that system be used in TinyHIP as well?
This is the idea.
Ciao,
Tobi
PS: Call me sentimental but I would hate to see HIPL die.
Call me religious but I see TinyHIP as a reincarnation of HIPL :)
I have also suggested calling it HIPLv2 to claim its predecessors
fame and fortune, but this is your decision. The "L" would stand for
"Lite" and hopefully not "Lame" :)
Well, you're right that HIPL is known throughout the HIP community.
Still, it's rather known as a research product and that's not exactly
what we are aiming for. Our mission is to provide a small and stable
implementation, yet pluggable. Especially concerning the co-existance
of HIPL and tinyHIP, I guess HIPLv2 will rather harm that. Finally,
rewording the L in HIPL won't really stick to people's mind, I think,
and we really wanna be portable with tiny as well.
These are my thoughts on the matter :-)
René
---
Dipl.-Inform. René Hummen, Ph.D. Student
Distributed Systems Group
RWTH Aachen University, Germany
tel: +49 241 80 20772
web: http://ds.rwth-aachen.de/members/hummen
Other related posts: