Rainbow Lollipop alpha

the visual history browser

Tue 2015-12-29 18:02:35

written by grindhold

Raising Awareness

Wow… Simply wow. I am currently attending 32C3 in Hamburg. This congress offers amazing opportunities. Yesterday, I went to the mozilla assembly and asked if they wanted to discuss an alternative browsing concept with me as I am the developer of an experimental browser that the readers of this blog surely know. My expectation was that probably one or two guys would listen to me and it would be over in about 5 minutes or so. Reality however does not often match up with ones expectations and I was taught better. I talked to @Mario about what I do. I couldn't even finish my third sentence as Mario started to talk to a fellow mozillian and told him to schedule a workshop for the next day with a sentence like "Dude, theres a guy showing us some cool stuff." [ s.i.c of course ;) ] And so it came that I had the chance to show Rainbow-Lollipop to some people from mozilla at their assembly. I happily organized a little live demo to show off Rainbow-Lollipop's Tracks.

Workshop- and talk session about alternative UX-Concepts for browsers with Rainbow-Lollipop at the mozilla assembly.

I started by introducing Rainbow-Lollipop and it's core features and plainly showed how it works from a users perspective. I then stated my theories about why people tend to have so many tabs opened that it is not feasible anymore to manage them with a simple tabbar and how this problem could be avoided in the future by adapting the behaviour of the browser to the behaviour and thinking of the user who sits in front of it. The attendees of the session were pretty amazed by the concept.

What was planned to be a 30-something minute session turned into an inspiring one and a half hours of talking, exchanging ideas and discussing the future of browser UIs. In the end I was invited to talk about my concepts again at upcoming mozilla developer meetups in Munich and Berlin. Many many thanks for this amazing opportunity. If you want to see whatelse mozilla are doing at 32C3, see #moz32c3

Sun 2015-11-01 01:36:35

written by grindhold

A chilly phase

Dear followers, As you may have noticed, the development of Rainbow Lollipop is currently frozen. The reasons for this are quite simple. Some of the early arch-users discovered a bug that causes the whole windowmanager to crash (or at least it looks like a crash) when the user tries to open the context-menu of a node. As it can be read in the bugtracker, I investigated the problem and came across a problem in the input library of the Xorg x-server. There are some rare circumstances under which the x-server waits for some asynchronous signal, does not handle the case very well in which the asynchronous signal won't arrive. This leads to the whole desktop-manager not getting any input signals like klicks or keyboard-presses anymore. I still don't know why of all programs, Rainbow Lollipop triggers this bug, but it does. I've talked to the xorg-guys and they have already fixed the problem but did not put the patch in an official release yet. It will take some time until the fixed packages arrives at my debian testing system. Developing while this bug exists is not very much fun, so I personally will stash development on Rainbow Lollipop for some time.

I also want to use this Blogpost to acknowledge several contributions by a cool guy known as @mor7. He is a talented young programmer who implemented a bunch of cool features and fixed a load of bugs. In my opinion his most important contribution are the audio-indicator icons that highlight any nodes that produce sound at the moment and the possibility to choose your colorscheme in the config dialog of the software.
He also optimized how raster-based graphics in Rainbow Lollipop are being rendered. This leads to much crisper graphics in the program. He also fixed a timeout bug in Rainbow Lollipops IPC and several other smaller graphics-rendering bugs. Thanks, @mor7 for the effort. The project needs more people like you.

I will continue working on Rainbow Lollipop when I have the time to build a system that does not include the above-mentioned xinput-bug or the package ends up in my apt-upgrade list. I will still maintain the project, manage bugreposts, merge pull-requests e.t.c.

Thu 2015-04-16 00:04:54

written by grindhold

HTTPS everywhere and more nice things

As it's been a while and we were able to check another point in the roadmap, it is time to do a little status report.

As you can see the 'I' has moved to a 'we' which i am very happy about. After the last talk on nerdnight, i did another one at the Linux InfoTag 2015 (for short LIT2015). A result of this talk and the one before was some very interested people that started contributing to Rainbow Lollipop immediately. And suddenly there was a Arch-build by @lukasepple which he continues to maintain until today and it does not seem as he will stop doing it. Many thanks for that.
And a little later there was a Gentoo-build (ebuild file) that has been contributed by @peterhuewe along with some improvements, bugfixes and even a nice little feature.
Many thanks for your contributions so far and I hope that you keep contributing.

So what have we done? A lot of stuff actually. Please refer to the following (incomplete) changelog. It outlines the major changes since the last Blogposts:

  • Config Dialog
    The config is now editable via the user interfaces. Changes are being made instantaneously. No restarts, no trouble. There is a little part missing: The ability to save the changed config. You can open the config dialog with the F2-key.
  • HTTPSEverywhere support
    This is one of the coolest new features. I wrote a little library that enables desktop applications to use HTTPSEverywhere and integrated it into the browser. Now everytime you enter an incomplete URL like "startpage.com", the browser will not only complete it to "http://startpage.com" and do the request, it will also check if it knows whether startpage.com supports HTTPS. If it does, it will complete the URL to "https://startpage.com" You will never again access a site unencrypted if it can be avoided. Enjoy Rainbow Lollipop taking care of you.
  • XDG Conformity and Single Instance Mode
    Rainbow Lollipop can now be your standard browser. Rainbow Lollipop is now able to handle calls from other applications, e.g. your email client or XMPP client to open new websites. If you click a link in your email programm, it will open in Rainbow Lollipop.
  • Instant Search
    @peterhuewe's contribution is a feature that you can search duckduckgo and wikipedia directly from the URL bar. Instead of a URL just enter your searchkeywords prefixed by s for DuckDuckGo, wie for the english wikipedia or wid for the german wikipedia.
  • Cookies
    Now you can keep your cookies across sessions. Login to a site, close the browser, start the browser again, restore the session, BAM!, you are still logged in.
  • Much much internal stuff
    If you want to know more about this, please refer to the closed issues at github.
We are moving and you can join the journey. If you are using arch or gentoo, give it a try :) If you like it, consider contributing.

Thu 2015-03-19 00:54:49

written by grindhold

Translate now!

Today i integrated gettext into the program. This means, that you can now help to translate Rainbow-Lollipop into your preferred language. You can do this by using Poedit. I just added a german translation today. Have fun translating.

Short description of how to translate:

  • Build the program as you would usually do with
    cmake .
    make

    now you have a file in the folder po called rainbow-lollipop.pot
  • Open Poedit and select Create new translation on the start-screen. And select the rainbow-lollipop.pot-File I mentioned above.
  • Choose your language of choice
  • Translate all the language-keys
  • Save the file. (The correct filename will be set for you based on the language you chose at the beginning. Do NOT change the filename)
  • After saving the file, recreate the compiled translationfiles with
    make mofiles
  • Test your Translation with
    LANGUAGE={language_abbrevation} ./rainbow-lollipop
    substitute {language_abbrevation} with the language-id that you saved your file as. For example af for "Afrikaans"
  • Enjoy your translation

Don't forget to make a pullrequest to the Github Repository so i can integrate your translation into the official release.

Again, have fun :)

Tue 2015-03-17 14:33:28

written by grindhold

Talks, bugs and great feedback

The last week i was very occupied with creating, reviewing and uploading the resources for Rainbow Lollipop's public presence in the internet. I created a repository on github, i created this website. I fixed some bugs, which concerned the packaging- and deployment-area. After much work, i was ready to face the public.
Last Friday, the OpenLab held it's first Nerdnight. It was a great event with over 80 visitors; a number that no one of us expected. And so, it came to be, that ~80 persons witnessed the first public annoncement of Rainbow Lollipop.

I did a 10 minute talk wherein i presented a few features of the Rainbow Lollipop, focussing on the track-concept. After the talk many people came up to me and complimented me on the idea. There was some input on more ideas. There was some input on a possible sponsorship for serverinfrastructure, which i am going to discuss with the relevant people in the next few days, and which i would appreciate very much. The project managed to get five early stars on github to this day. And there have already been some pull-requests.
I only know of one negative feedback which was about the UI concept being too complicated to be used on an everyday basis. I tried to make it as simple as possible. We will see, how it turns out.
Thank you for the feedback until now, you guys are awesome. I want to thank especially those people: @aszlig, @lukasepple, @Profpatsch. All three of them got already involved in the project and i want to thank them, i hope they stick to it :). Further i'd like to cite @Profpatsch for a second here.

<Profpatsch> Übrigens darf ich ihnen noch zu einer vorzüglichen Codebase gratulieren.
<Profpatsch> Ich habe noch nie ein fremdes Projekt [mit mehr als] 100 Zeilen gesehen, wo der Code so leicht zu lesen und so gut kommentiert war.
In english, he wrote:
<Profpatsch> Btw, i may congratulate you to your formidable codebase.
<Profpatsch> I never saw a foreign project with more than 100 lines which was that easy to read and that well commented.
In the hope that this will motivate other people to get into the project, thanks for your kind words.

Now that the first excitement about publicity is over, i can resume workking on the code of the browser itself. I started fixing some bugs and started coding the fulltext-search-feature which will be available soon. Further work is coming.

Wed 2015-03-04 05:36:32

written by grindhold

Packaging and Crosscompiling

Today and last night i spent my time setting up Rainbow Lollipop to use CMake as buildsystem instead of the former Makefile i got from a friend. CMake is much more efficient and offers tons of new possibilities. I can now use debuild to generate debian packages out of source distributions that deliver a CMakeLists.txt with them with virtually no effort. I was vomiting rainbows and unicorns when the first build of a debian package ran through after a 2-line-change in debian/rules. Simply awesome.

Things can even get better. A few weeks ago, i already tried crosscompiling the project to win32 manually but it was a real hassle. I thought to myself that it can't be that hard. From debian we know, which versions of the libraries work well together, the sources are all available online, but in the end it was only exhausting building every dependency and the dependencies of the dependencies. Suddenly: I got amazing input from this dude i know, who is heavily active in packaging software for the NixOS operating system. The NixOS folks developed a package manager called nix, which is breathtakingly mighty. You can set up a crosscompiling buildprocess that recursively takes all dependencies into account and builds every DLL you need on windows in only 38 lines of a Haskell-ish configuration language (well, it's not all that easy but at least you can see a light at the end of the tunnel). It even bootstraps a virtual environment with the crosscompiler for you. NixOS and Nix are definitely worth a look. And i have a feeling that i will use the latter as default tool to set up all build processes that involve the Rainbow Lollipop.

Mon 2015-03-02 06:38:35

written by grindhold

Hello World

This is, where it begins. For the last half year i have been working on a new kind of browser that i am now ready to share with you. I set up this website and blog to keep you informed of current events going on within the project and to enable you to help it grow.

I wrote a lot of code and right now i am fighting trough a bunch of tasks like creating debian packages for the the rainbow lollipop which flawlessly run through lintian which is a integrity checker for debian packages. I will also try to port the software to Microsoft Windows until 2015-03-13. 2015-03-13 is the day i will inform a broader audience for the first time of the project by giving a lightning talk on OpenLab Augsburg's Nerdnight