[Prev] Thread [Next]  |  [Prev] Date [Next]

[Fish-users] Announcing Open Beta for our fancy new fish fork Axel Liljencrantz Wed May 30 12:00:35 2012

Hi all.

I'm Axel, the original fish creator. I've been mostly AWOL for nearly half
a decade, including not replying to a few private emails about
maintainership. Sorry about that. I think it's fair to say I've lost the
moral rights of the fish project.

I'd like to publically state that

* I don't currently plan on returning to active fish development,
* I'd love for the fish project to continue and
* needless forking hurts projects.

As such, making fishfish into the new fish sounds sane to me. Two motivated
and talented main developers with shiny ideas sound like a fantastic thing
for the fish project. Like most open source projects, fish scratched an
itch for me, but I find the current version to be close enough to perfect
*for me* that I don't feel the itch anymore. And sadly enough, I'm a better
coder than maintainer, so low volume bug fixing and compatibility work was
never something that I managed to get into the habit of doing. Hence my
current lack of involvement with fish.

I'm a bit out of the loop here, so I'm going to have to ask some basic

* Who, if anybody has been maintaining the non-fishfish fish codebase?
* Does that person (if s/he exists) have any problem with making fishfish
the default feature branch of fish?
* These is a link at the top of the fishshell.com site to a beta for a new
site. Following this link results in a 404. Is this something for the
fishfish fork or an unrelated effort?

I've downloaded and compiled fishfish, and here are some random,
unstructured reactions and thoughts:

* Completion suggestions are awesome. Great work!
* Making them not actually autocomplete and force you to press right arrow
to select a completion is absolutely positively 100 % the right choice.
There are far too many system destroying commands that could be run by
accident in a shell to do anything else.
* I'd like the suggestions to by kind of subdued by default, as it's a bit
hard to see what you're writing otherwise. Might I suggest you make it
configurable using e.g. $fish_color_suggestion to fit in with the rest of
the coloring?
* Moving the completion stuff out of the main loop is definitely the right
choice when we have completion suggestions. I would have either moved it to
a separate process and communicated over a socket or used cooperative
threading, but I guess there is a chance that simply means I'm very, very
* To make these changes, you must have a really good understanding of the
code base. Well done!
* To whoever did it: Thanks for making the file descriptors close on exec
using fcntl instead of manually closing them. I didn't know about CLOEXEC
ten years ago when I wrote that code, and it's been one of my private
shames ever since I found out, but I never got around to fixing it. I can
breathe a bit easier.
* On my machine, most key bindings seem to be broken. ^K does not kill, ^W
does remove text, but it seems not to be added to the actual kill ring. No
searching with up-arrow and down-arrow. Left arrow and right arrow do not
move around in the CD history when used on an empty command line. The bind
builtin implies that the bindings are still there, and the code to handle
these these commands seem to still be there in input*.cpp, so I guess
something is broken? (built from a tarball on Ubuntu 12.04)
* configure does not check if doxygen is installed, which means the build
will break kind of silently. This, I believe, is a bug you inherited from
me! :-)
* I'm not a big C++ fan, but I can see that basic_string and vector are
much nicer than what's possible to implement in straight C. I wouldn't (and
didn't) choose to use C++, but not really my choice to make anymore. Use
the language you like.
* The old fish source code uses tabs for indentation, a four space tab
width and the ellemtel indentation style. The new code seems to use spaces
instead of tabs. Nothing horribly wrong with changing indentation
standards, but currently there is a mix, which I generally find annoying.
* All source files have been renamed .c => .cpp, but the .h files are still
named .h. At least my emacs considers .h to be C header files, so it will
get indentation and syntax highlighting ever so slightly wrong if I don't
override, which is annoying.
* The repo at 
to be significantly older than the tarball on the website. Is there
an actual public repo with the latest code available anywhere? If yes,
sorry for the noise, if no, I urge you to move to a more open development
model. Making awesome surprise release announcements is nice and seems to
actually work pretty well for Apple, but doesn't really gel with the open
source model.
* Why do bug tracking on github and repo tracking on gitorious? I don't
have an opinion on which one to use, and it's not my choice to make
anymore, but I'd advise against using both at once.
* Point of interest. I never ever wrote fish to be fast - there are metric
tons of really obvious low hanging fruit, but I never saw the need because
I never had any performance problems with fish, even when using NFS on my
300 MHz Pentium II with 256 MB of RAM. What parts of fish were running
slowly and needed optimization?

In conclusion: The fishfish beta has a really cool new feature that I
approve of, one that obviously required some pretty huge amounts of
infrastructure work to get up and running. Nicely done. As grouchy old men
are liable to have, I have some comments questions and suggestions, but
overall, I would personally be delighted if ridiculous fish becomes the one
true fish.

Thanks for all the fish,

Live Security Virtual Conference
Exclusive live event will cover all the ways today's security and 
threat landscape has changed and how IT managers can respond. Discussions 
will include endpoint security, mobile security and the latest in malware 
threats. http://www.accelacomm.com/jaw/sfrnl04242012/114/50122263/
Fish-users mailing list