Thursday, August 14, 2014

Important Moments in the Haiku Operating System's Path to Suckage

Haiku's file system creator says hard links are unnecessary:
From: http://comments.gmane.org/gmane.os.haiku.devel/12076:

Pier Luigi Fiorini <pierluigi.fiorini@...> wrote:
> 2009/11/18 Ingo Weinhold <ingo_weinhold@...>
> > Haiku's BFS implementation is on-disk compatible with Be's and to 
> > my
> > knowledge it's a limitation of the on-disk structure design that 
> > prevents
> > hard links from being possible.

Exactly.

> For what it's worth, it's probably time to avoid R5 compatibility on 
> some
> things - I know it's not scheduled until R2 but sometimes I think 
> Haiku is
> still cloning and old '90s OS...

Because hard links didn't exist in 1990?
The fact is that BFS is the only file system delivering the 
functionality we need for Haiku. And it doesn't make any sense to me to 
break compatibility just for hard links -- there are way more reasons 
to develop a new file system, but that will take some time.

It would make more sense to have a read/write ReiserFS, or ext4, or 
btrfs, or XFS, or whatever file system port that you can use in that 
case. Beyond backups and VCS, hard links have no real use that I am 
aware of, anyway.

Bye,
   Axel.
  
*************************************************************

Yet when Python attempts to build its modules, it uses hard links, as reported back by the kernel log:

KERN: bfs: bfs_open_dir:1644: Not a directory
KERN: Last message repeated 83 times.
KERN: bfs: bfs_access:1516: Operation not allowed
KERN: bfs: bfs_open_dir:1644: Not a directory
KERN: Last message repeated 25 times.
KERN: bfs: bfs_access:1516: Operation not allowed


As a result, Python cannot be built natively in HaikuOS, as reported by the kernel during .py module builds:

**************************************************

Bad enough as it is already, requests for a writeable /usr directory were rejected...even the creation of a symlink to /usr was poo pooed:
From: http://www.freelists.org/post/haiku-development/RFC-usr-symlink,14
and http://www.freelists.org/post/haiku-development/usrbin,1

Rob Judd wrote:
> Until we go multi-user, could we have a symlink from /boot/system/bin to
> /usr/bin please? It would make porting apps that call /usr/bin/env a
> whole lot easier.

Even with multi user, there will never be a /usr directory in Haiku.
Porting is not just recompiling, and it deserves a bit more attention
(like to put the settings into the right place, or use the native Media
Kit instead of porting G-Streamer as well).

Bye,
   Axel.

***************************************************************

On Thu, Oct 10, 2013 at 9:21 PM, Alexander von Gluck IV
<kallisti5@xxxxxxxxxxx> wrote:
>
> mmadia pointed out this was discussed previously:
> http://www.freelists.org/post/haiku-development/usrbin

OK, this has inspired a rant:

I'm sorry guys, all the arguments in that thread are unconvincing, and
amount to nothing more than "Haiku does this a certain way, and that
is it, no ifs, ands or buts and no compromising."

Having to "port" shell scripts which use /usr/bin/env is a big waste
of time. Don't you purists think we have enough work already???

Haiku is not Unix, but it has a very Unix-like shell and terminal, and
has many Unix commands, and is pretty darn POSIX compliant. Lots and
lots and lots and lots of shell scripts use the /usr/bin/env "trick."
It works on Linux, Mac OS X, FreeBSD and probably just about every
other system except plain Windows (I'm sure it works in Cygwin.)

You really want to argue against ONE SIMPLE SYMLINK??? In reality no
one will ever notice it and, frankly, it can even be automatically
hidden in Tracker if you guys are so bothered by it. As if adding usr
will confuse people as compared to all the other Unix like directories
in the Haiku root: bin, boot, dev, etc, tmp and var!!!

In case you can't tell, I support adding this symlink, because I'm a
pragmatist, and like to get things done, and having shell scripts not
work because of this has annoyed me again and again and again and
again on Haiku. No upstream would accept a patch which changed this,
so it just means a permanent "Haiku branch" of whatever software you
are talking about. That is stupid.

And I don't want to hear "well just add it to your own Haiku." No,
that is not a solution. Because inevitably I will expect other people
to make use of things I've made, and it is stupid to have to tell them
"If you are on Haiku, please create a symlink from /usr to
/boot/system, before you can actually use my script."

Lastly, let's address the argument that this "degrades the purity of
the Haiku file system layout." You mean the layout that has been
completely changed around and made quite complicated by package
management? The layout that already has FIVE other three-letter
Unix-derived directories at the root? Sorry that argument is now out
too.

In case you can't tell, this is one of those things that has really
annoyed me and touches on overall issues of Haiku trying to be
different so much that it becomes damaging.

-- 
Regards,
Ryan

This was eventually not approved.


********************************************************************************

Python is important because it is a major dependency for applications desktop users want to use. If you want to build anything of any significance, such as Firefox or any of the other major open source applications, you need a working Python installation that is newer than the version currently supplied (2.6).

********************************************************************************

The above issues make building Python much more difficult than it needs to be (so much work it is impractical. Even if the work were done, it would be unmaintainable for all practical purposes, as explained in the discussions above.