Contributors to Nautilus — August 20, 2016

Contributors to Nautilus

At GUADEC Andre Klaper made a report of top most contributors to GNOME in the last year, and to my surprise I saw my name in the top 5 of patch reviewers. Did I really review so many patches?

If you remember I did a blog post stating how healthy Nautilus development is being lately. However I didn’t know it was at this level. And now I also understand why I spend less time coding these days.

To summarize, the first year as maintainer of Nautilus I reviewed around 100 patches in total.

And this is how it looks this year

reviewers.png

567 patches reviewed! Almost 6 times more than one year ago. Those patches come mostly from the 5 contributors I mention in the previous blog post. I’m glad they keep contributing to Nautilus, and doesn’t look like they want to go away.

Some of those contributors gained enough experience to help me with the project as a whole, discussing with other contributors improvements on the code, triaging in Bugzilla and reviewing patches. In this a big thanks goes to Ernestas Kulik, who is doing an amazing job and a great help to me in the parts I most need. And of course my GSOC minions Alex and Razvan who I had an amazing time at GUADEC with:) .

Related to this, I asked on the Nautilus BOF at GUADEC what makes contributing to Nautilus interesting for people, and why they keep doing it. I was surprised to know that all of them agreed that most part of it is not the actual code, but our relationship in the channel and the small community we created inside the Nautilus project. Being responsive to the patches contributed and being present on the IRC channel for questions and random small talk makes the whole experience much more enjoyable. Chatting in the channel while coding to Nautilus became a “one beer with friends” time.

I feel the project is indeed moving in the right direction.

Thanks all!

 

Guadec – Visit Karlsruhe doing sport — August 11, 2016

Guadec – Visit Karlsruhe doing sport

One of the things I miss when going to Guadec is to visit the actual city. Usually we don’t have much time for visiting the place, and even if you do, you will visit just few well known places, and more like a tourist rather than a regular citizen, which in my opinion misses part of the beauty.

Another thing is that during this week is common to over eat and break the sports habits you could have.

Last Guadec at Gotenburg I had the idea to fix both problems at once. How about go running, in a relax pace, for about 30 min to different places every day of the conference?

This allowed me to really know the city, and discover few interesting not so well known places.

I will start on Saturday 13 August on the morning before the conference starts, so we can have the afternoon free to enjoy with people and beers.

If you want to join, contact me or join the telegram group @guadecsport or go to telegram.me/guadecsport and we can set up time and place to visit, proposals are welcome:)

Hope to see you!

BOF session of Nautilus – GUADEC — July 20, 2016

BOF session of Nautilus – GUADEC

Hello,

As the tittle says, we will have a discussion/bof session about Nautilus in GUADEC.

As you may know, discussing on internet is rarely a great experience, with the big disadvantage that influencing people over it doesn’t work well. From a developer point of view, I don’t know to who I am talking with and why, so in projects where discussions are a daily experience is difficult to know what we should put on the top priority list.

The small hackfest is going to be focused more on the philosophical side, with specific actionable items for the future.

We will talk and discuss about what we have done wrong in the past; what users are missing, like dual panel and type ahead search, why they are missing it and how we can improve those use cases; we will also talk about the transition from Nautilus 2 to Nautilus 3 and what we can learn from it in order to make changes a smoother experience.

The program is here. I will gladly add anything people would like to talk about.

If you ever wanted to influence Nautilus, this is your opportunity, come to GUADEC.

Do not use comment sections to discuss them:) just grab your backpack and come to GUADEC.

Batch Renaming – Call for design ideas — June 16, 2016

Batch Renaming – Call for design ideas

Hello,

Alex Pandelea has been working on batch renaming for Nautilus. So far we though about taking most of the design ideas from what Finder, the file manager of MacOSX does.

Here is a video of Finder’s batch renaming

However, after trying a prototype implementation following Finder, I have been changing my mind about the design being good enough.

Let’s take a look at Finder’s design and find the ugly parts.

First mode, “replace text”

replace

I can see few issues:

  • The “Replace Text” combobox doesn’t really provide me a hint that it’s a combobox for changing modes. It looks like part of the mode itself, doesn’t give a hint about having more importance than the entries under it or the cancel and rename buttons
  • The cancel and rename buttons are at the same level than the example and information. I would prefer to have the information and example in one line, then the final decision about cancelling and renaming apart of those. This is now usual in dialogs on the GNOME HIG where the dialog buttons occupy the whole width and are in a different line level.

Let’s change the mode. “Add Text”

add.png

One big issue here, suddenly the entry and combobox for the mode is in the same line as the combobox to change the mode. I guess they wanted to give a connection between the UI items in there, so it makes a sentence like “Add text …. blah blabh…. after name”. But that is not the case in other modes, so it’s more confusing than anything.

Next mode is “Format”

format.png

And this is the one with more UX issues in my opinion. It has the ones of the first mode plus:

  • There is no visual connection between the “Name format” and “Start numbers at”.
  • “Start numbers at” is only useful for “Name and Index”, not for other name format modes, still it’s there for other modes.
  • It’s using combobox for just three and two options… which is kinda useless. It’s better to just present all the options. Much straightforward, much clearer, one click less.
  • The labels “Name format” and “Custom format” are misleading. Either I want a custom format or something else.

Apart of these issues, I also noticed it doesn’t give you feedback if some file in the directory conflicts with the names that are going to be generated beforehand. We want this on Nautilus.

So I came up with this draft as my idea to cover these issues (my drawing skills are not the best). Note that the mode selected is”Format”, which is the most complex UI wise:

batch renaming mockup.png

I would like to know your thoughts about this, and even better, engage you on providing design and ideas. Now it’s your turn:)

Here’s the svg of the picture above,  you can modify and put your ideas https://my.owndrive.com/index.php/s/TK4JfCPOzUnDlzN

Nautilus & Gtk+ status – 1 year of progress — May 4, 2016

Nautilus & Gtk+ status – 1 year of progress

Hello,

Today I was having a rough time thinking on how to implement the new GtkPathBar, which is taking more time and frustration than expected given some technological limitations on animations in gtk+ and that responsive design is technologically hard to do.

In the middle of these thoughts, I realized that I was actually discussing these big plans about responsive design for gtk+ with Georges Stavracas, my former GSoC student. I was actually discussing with someone big plans about Nautilus and gtk+. I couldn’t do that 1 year ago, because Georges was not there. Although Cosimo, previous main maintainer of Nautilus, is *always* there if we need him and he reviewed/helped with high impact changes, but he is involved in multiple projects and I personally don’t want to take much of his time.

That made me think about the progress in contributors and technology that Nautilus and gtk+ has made in 1 year. And realized how much it changed, and how good it has become.

In one year Nautilus went from 1 main contributor, me, to 5 regular contributors. That’s really impressive! Not only that, two of these regular contributors are going to be GSoC students this year for Nautilus, congrats Alex and Razvan!

These contributors are random people that got attracted by Nautilus and GNOME and all the plans we have for the project, and I believe we all agree we are having fun chatting around in #nautilus IRC channel, which kinda helps:). They have some specific areas that they are more expert with, and I ask them to review small patches or to discuss some ideas I had for those areas, and usually, my ideas need notorious adjustments, and my patches, changes in the code.

They triage bugs, fix crashes, improve small details all people complain about, do performance improvements, etc. Just today one of these regular contributors improved the copy operation of files in the order of ten times.

No one can imagine how good is for a project like Nautilus to have different developers contributing and reviewing both code and ideas. For one year, I was doing changes freely, and that, even if I try my best, it’s not ideal.

This applies to gtk+ as well. As said, with Georges we share similar areas of responsibility in gtk+, and we discuss and push together for plans we believe are good for the toolkit, so we became contributors to gtk+. Also, it’s important to highlight that gtk+ improved exponentially in the last year, and we have a much more consistency in the code,  that will eventually allow all the big plans we have planned for gtk+, like animations, responsive design, etc.

In conclusion, as far as I can see the development status of Nautilus it’s in its best moment since it was created, and part of that is thanks of the status of gtk+ development and the values and vision of GNOME as a project.

The day ended well after all.

Cheers.

Nautilus 3.20 – Last change, Zooms — February 24, 2016

Nautilus 3.20 – Last change, Zooms

Hello,

We did a last push and hold the release a week to get another of the items that were requested.

We added a new zoom level to nautilus, now you will have available 48px, 64px, 96px and 128px.

This was hard to do because of how the canvas of nautilus behaves, which multiplies the padding according to the zoom level. So we cannot control the padding, making the view unusable on zoom levels farther than the range 64px – 128px.

With a big effort of the previous main maintainer Cosimo Cecchi who we asked for help, and the design review of Allan, we managed to make the change preserving the padding for  zoom levels but improving the sizing of the label and thumbnails. So we effectively didn’t introduce any change that could affect previous users.

This was important since we tried different approaches during this last week and those made different types of users complain about the changes. Surprisingly to me, now lot of people are attached to the 96px zoom level that was made default for 3.16.

We will rethink the use cases of those views and we will work further on it.

However, the canvas of nautilus needs to be completely rewritten and we cannot do anything more with the current code without spending valuable time in that tricky and old code. I hope the week we spent on it worth it.

This is how the default zoom level padding thumbnails improved:

3.18

3.18

3.20

3.20

You can see the difference of thumbnails showing more content.

And this is the smallest zoom level added:

small-zoom-level

Have a nice day

 

Nautilus – Looking into 3.20 — February 8, 2016

Nautilus – Looking into 3.20

Hello,

3.20 it’s approaching, and we have mostly all the changes we wanted in place.

I would like to explain them, so you are aware, and I would like you to test them and provide feedback before the UI freeze this week. So now it’s your time to change the way Nautilus will look and work for 3.20 and improve it for all us to enjoy it.

So what did we do this release? For me personally, I mostly focused on fixes, because during 3.16 and 3.18 lot of changes made in, but it was time with all the experience I gathered to start fixing old and hard bugs. Some of that work is uninteresting for most of users, because they are use cases that are no so common. But still, Nautilus is used in lot of different ways with very different workflows, and I wanted to make sure those workflows were working properly.

Under the hood

As a example of what we fixed is for example this bug about big images (specifically jp2 images) crashing nautilus, and that took me a week working on it. This bug was in nautilus since….forever.

Also, we fixed cases of infinity waiting on search, and spent quite a bit on time on making search more robust making sure the search is cancelled when the users says, making sure we do tied operations at once, or allowing a search being in the history so you can return to it using the arrows in the toolbar.

Other under the hood fixes include showing the free space in the other places view, the “New Window” action in the dash, undiscoverability for the operations popover (although not in the best way we wanted).

Also, since the desktop (edit: Since there was some confusion, I mean the icons on the desktop which we disable by default in gnome-shell/nautilus, not the desktop as a concept) is still important for some users, few issues were fixed like the snapping of the icons,  the misalignment of the renaming popover (Thanks Ian!), or the style of the desktop window (Thanks Alberts!). And more improvements in this topic are going to come.

Another point we tried this release is to make sure we care about the distributions using Nautilus, and we tried to fix most of the bugs reported as a blockers for Ubuntu or Open Suse in time for their deadlines. Of course, since I personally use Fedora, and as part of my job, RHEL blockers and Fedora retrace website were my main focus for the most prominent issues.

Ubuntu developers contributed a few patches for Nautilus, and I’m looking forward to see the result of our work in their distribution.

On the other hand I spent almost a whole month working on leaks and ownership in Nautilus, which is the most difficult issue in it, because any file leak means a crash or misbehavior later on. So we refactored, improved and modified lot of code inside Nautilus, and I’m happy I reserved the time and energy to work on it.

But now to the most enjoyable part, the UI changes.

UI Changes

Felipe Borges (thanks!) provided Nautilus with a shortcuts window, so now you can know in a quick look all of the Nautilus shortcuts. The final result looks like:

shortcuts1.png

shortcuts2

I’m excited we finally have this! No more digging through the code to find them…

We added a few options to Nautilus preferences, due to either not having a good alternative to them (create link for files, thanks Razvan!) or because sometimes simply there are too different use cases to merge them together (delete files bypassing the trash).

The result is:

preferences

 

And finally, the biggest change of this release. The new search popover UI, designed by Allan Day and implemented by Georges Stravacas (aka ubiquitous code machine)!

We still need to discuss some more functionality in the mockups, but the most important functionality is already there.

This is the result (Note that the style and colors is still under progress and have some issues):

search1

Then we click the “Select dates” button and…

search2

Now you can filter by time the file was either last used or last modified!

But not only that… how about if instead of “since 1 week ago” we want to filter for files modified on a specific date? No problem, we click the calendar icon and we get:

search4.png

And here you can select the specific date.

What about filtering by type? Now we can do that, select the “What” you want to search for, the result is:

search3

And you can search for any type of files you want. Let’s create an example. I want files that are PDF and that were modified the last week. Let’s select the filters and we get…

search5.png

Ta-da! We also have the entry tags to provide feedback about what filters are on in case the user close the search popover, and you can remove them clicking either in the popover or in the close button inside the tag.

So far, for me this is much more convenient and powerful than the previous search, and finally we can kill the myth about not adding features to Nautilus😉

On the other hand, we had a sad history regarding recursive search, we were not performing recursive search in remote locations, but we didn’t provide any option to enable it, and vice versa for local locations.

We wanted to improve this situation, so as a first step we created two different settings, one for the remote locations and one for the local locations, so the user can make a choice on performing a recursive search independently.

For the UI, we first implemented this as a switch in the search popover.

However, in my misunderstanding, I though that switch in the search popover was the representation of the setting itself. That means, whether you change that, it will make the choice permanent for the type of search you are doing (remote or local). But designers corrected me about it, the search popover is meant to be temporary, the filters about dates and types are temporary, and therefore any element there should be temporary. So that brought me to a difficult choice:

  • We add the switch to the search popover and any change there will be just temporary to that search, expecting the user to expect the recursive tool to be most of the times a temporary choice or…
  • Add a settings in the preferences dialog and make the setting permanent, expecting that choice to be persistent through future searches or…
  • Both of them.

However, a similar decision kicked us previously…. with the view settings. That is, the choice of whether you are using the list view or the icon view, or the sorting of the files, whether you sort them i.e. by name or by size.

Before 3.16 any choice in the view menu was temporary, however users were confused because they changed the view type or the sorting type and the next time they open a directory or create a tab or a window everything was reset. We received more than 10 bug reports about that while I was working for 3.16, and I had to point them that those settings were temporary and that any permanent settings is in the preference dialog. Needless to say, they were confused, frustrated and angry about it.

So I understood that was not a great choice and moved everything on the view menu to be a permanent setting, and luckily that worked and didn’t received any more bug reports about it or against that change.

Thing is, with the recursive search is even more important, because seems that’s a sensible topic for some users, and what we need to avoid is making those users confused and frustrated about the recursive search setting being reset every time they perform a new search.

So in order to avoid that I took the safest path and removed the switch from the popover and added a settings in the preference dialog. This assumes that the most usual workflow is to make a permanent choice about if you want recursive search on local or remote, because either your hard disk or internet connection is fast enough to perform a successful and fast search of the file the user is searching for or is not.

So this is the result in the preferences dialog:

preferences2

In others news, I’m quite happy that Nautilus continues to attract newcomers to its development, and they are making a great difference on it.

On the other hand I want to thank all the people involved in this release and those who helped me with it, and also my employer Red Hat and Jiří to give me the freedom to work on what I consider important.

And that’s the major changes we did for 3.20, hope you like the work!

PD: To safely test this and provide feedback you can use Gnome built iso images which are a live system built every day from latest Gnome. Check it out.

Gnome branded slides — January 24, 2016

Gnome branded slides

I’m going to give a talk on DevConf and wanted to use slides with Gnome brand on it.

Searching on the web I found this that Allan Day made a few years ago. It contains a mockup in svg about how slides could look with Gnome branding.

So I went ahead and created a LibreOffice Impress template with that branding and uploaded it on GitHub with the sources for a easier use. Feel free to use it on your presentations!

firstin-slidelast

 

PD: For Fedora branding there is this beautiful LibreOffice Impress template.

Nautilus 3.18 – Comunicating changes — September 4, 2015

Nautilus 3.18 – Comunicating changes

Hello community,

So these 3 weeks has been crazy of work. Basically because we had a roadmap, and we wanted to complete all that was marked as a target. The UI freeze was the first deadline, and Georges (Gsoc student for Nautilus and Gtk+ that I was mentoring) and me managed to get merged the Other Locations view, as Georges did for Gtk+ previously. Was a overworked week and a half, but the result came in!

So important changes on 3.17.90:

Now we use a popover for renaming instead of a dialog, since some users gave valid reasoning for it and designers also though in the same way after testing for a few days. Good thing is that a popover allows us to provide the same kind of experience than a dialog but being less disruptive, so I think it was a good change.

renaming-popover

Then we have the other locations view, which aims to replace the connect to server dialog and provide a cleaner experience. We invested lot of effort on this one (Georges the most of course) and I think the overall result is really nice.

other-locationsAlso we improved the operations feedback, and now the button tries to catch more attention and also the operations give feedback much sooner.

operations

Also we improved the search, making it faster (tracking races, not internal rework) and making the files of the current folder easily recognizable. When you search, the view switches to list view to allow the user see more information about the files, being the most important the location, so he can discern between file names that are duplicated. If the user changes the view manually, we disable this automatic behavior. Also, files on the current folder are always first, and files on the current folder don’t show a name in the location columns, to make it distinguishable from other files at first look. And another small improvement… now the location row show the relative path to the original folder of the search. So no the full path, which is too much and disruptive, neither only the containing folder, which is too little information.

Also we disabled manual sorting on Recent and Search to avoid confusion using a different sorting on those. Maybe we will need to think about search, because one might want to search but sort in a different way. However, maybe we can do that differently? It’s an open question, but for now try to avoid inconsistencies.

search

Also, the preferences dialog went down considerably…but not because we removed them, but because now all the settings are in-window! Previously people were confused about having permanent settings on the “Preferences” dialog, and temporary (and it actually depended on what!) preferences in the menus of the window. So now all menus of the windows are permanent preferences.

Major changes for 3.17.91

We did lot of ground work to clean up the code… because it was somewhat confusing, and actually the isolation of components were null. That was kinda on the way to have more kind of views, like the other-locations one. Georges isolated the necessary to make it work, and after his work was merged, I took the remaining part.

It was a hard part, and dealing with races on multi-thread as you may know is the worse debug process. But it is necessary for the future rework of the views planned for 3.20, and to be honest, nevertheless Nautilus just really needed that.

Also we fixed most of the translations problems of Nautilus thanks to Alexandre Franke and Piotr Drąg.

And actually I want to do give some special thanks to Piotr to spot in a matter of minutes any translation problem, and not only that, but fixing the code by himself (and adding the files to POTFILES that it’s something that I always forgot). So kudos to you!

Also we added a preference disabled by default for the “automatically open folder after a timeout while performing a drag and drop operation and hovering a folder”, since performing actions while the user is still, and keep doing it while there is folders available, it’s not a really good experience. Also actions based in timeouts are even more problematic for people with disabilities. But the real reason to actually take the decision is the possible consequences. Since the action can be performed accidentally, it can happens that the user lose track of where he was, and drop files in a place that he was not expecting to, losing the track of his files. Another example, is dropping accidentally sensible files on a public folder.

However, I learned that is the kind of feature that some people were happy to use as is, and even if its implementation doesn’t comply the standards, it was already there and some people were used to it. That’s why there is a setting to allow those users to enable or disable at their will.

Another point, now we take care about remote locations for searching. It won’t longer try to make a recursive search making everything slow and consuming a big chunk of bandwidth. Also we provide feedback about that when searching on those cases.

non-recursive-searchThings that need work:

There is a problem though, with all the ground changes we took the risk to be more unstable than we are used to. So now I fixed the most important crashes, but there is still work to do and we need testing. I hope everything will be better for 3.18, but being honest, I actually expect that 3.18.1 will be as stable as 3.16 was, but 3.18 will have small issues.

Another issue, even if we improve the search, I made it worse in the latest days due to the need of peeking the file system information for deciding if the location is remote or not. However I already have a bug report for that and I will track it hopefully before the 3.18 release.

Also, if you want to know the most important changes, they are kept track of them on the NEWS file https://git.gnome.org/browse/nautilus/tree/NEWS and for future, you have the roadmap in the wiki of nautilus https://wiki.gnome.org/Apps/Nautilus/Roadmap

Hope you like what we have done for this release. Was hard, but we were passionate about it and we are happy the result is there!

Thanks to everyone who made it possible.

PD: I will continue the series of blog posts about what was discussed at Guadec.

Guadec 2015 – Topic 1/5 – Owncloud and GNOME – Should we make it our UbuntuOne/OneDrive/iCloud/Google services? — August 11, 2015

Guadec 2015 – Topic 1/5 – Owncloud and GNOME – Should we make it our UbuntuOne/OneDrive/iCloud/Google services?

Recently I show to you the effort we are doing for cloud provider tight integration on the desktop in my previous post here: https://csorianognome.wordpress.com/2015/07/07/cloud-providers/

At that time we had to figure out how everything should look and what cloud providers can provide or need. The good thing is that I meet one of the core designers of Owncloud, Jan-Christoph Borchardt, and we talk and discuss for long time about what could we do to have a better integration and make the GNOME desktop shine with cloud providers like no-one.

So we though that for files integration a custom view when you click a cloud provider in the sidebar will provide the best experience, so you can have a list view similar to the actual files view but with headers indicating files shared by you, files that you are sharing, root folders that you are syncing and favorites (probably we also want favorites UI for the whole nautilus)

Also we though it would be cool to get rid of the desktop client UI and tray icon and provide a direct desktop experience with a conjunction of sidebar menu, right click menus, nautilus custom view, and gnome-online-accounts support. This, with the cloud providers work we already did, should be fairly easy, and will provide a better experience than other OS like MacOS, Windows or Android.

On the other hand I saw Owncloud is actually start to provide some more nice services like notes, contacts, email, documents live editing, etc. which provides what google services provides, but open source and willing to collaborate with us for its integration.

We also though that maybe it’s time to provide some kind of backups and settings/background/ssh keys/bookmarks/passwords/installed apps/contacts/etc kind of synchronization. So what you can do, is when your system is installed you could add an Owncloud account, and it will offer the option to get your configuration that you were using previously, recover the Owncloud backups of your data and continue backing up those folders. In this way you could reinstall the system without the need to do anything manually to have the previous state of your system, and without the fear of losing your data and configuration. I can imagine this can be implemented just backing everything needed to a custom folder like gnome-settings-backup in your Owncloud root adding some metadata.

So this starts to look like UbuntuOne/OneDrive/iCloud integration, and I think all of them are very doable (to some of them we already wrote most part of the code) and that it could be interesting to offer more and more in cloud integration to GNOME.

I understand that there can be other cloud providers, so don’t worry, everything will be optional and you could use whatever provider you want, but I think that currently Owncloud is the best option for you.

I’m happy that Jan invited me to the Owncloud conference in Berlin on 28 August, and I will probably go to set the base for files integration, which is the first step and the one we already have code working, and to discuss more and settle some design for the other ideas.

Cheers everyone!

Follow

Get every new post delivered to your Inbox.