* mclasen gets coffee ok, lets start, I think any additions to the agenda ? if not, then we should probably just start with the first item * GIO merge post-mortem and follow-up alex_: can you give a quick summary of the current state of things ? I think there are still a couple of issues that makes it not build on win32 But they should be quite easy to fix Otherwise i think we're in pretty good shape We landed a lot of docs, and I did all the alias setup work to avoid PLT references and to export minimal set of symbols have any bindings people commented on the gio api ? like murrayc or jdahlin_ slomo has been working on it a bit and i think he's a c++ bindings guy I've looked at it, but haven't found time to do a careful review but i got no specific comments wrt binding it we (as in the imendians) looked over the API last week but he likes it it would be nice to have GClosures variant callbacks, but it's not a big deal at least we found some stuff that could be improved ah, I think one of the ideas behind the current callback design was to avoid variants... jdahlin_: it helps that all callbacks are the same api I think people will be following up about that this or next week avoid variants how? kris: do you have anything that can or should be discussed now, or should we handle it on list ? I'm not sure what you mean by callbacks danw: by having generic callbacks, and a generic result object eh, i mean variants but all callbacks for async i/o are: typedef void (*GAsyncReadyCallback) (GObject *source_object, GAsyncResult *res, gpointer user_data); mclasen: we can probably do it on the list, various people made various notes and I don't have most of those ;) "closure callback" - does that mean having destroy notifiers for the user_data argument? is every callback guaranteed to only be called back once? which should mean that its easier to bind danw: yes ah I see the callbacks thing was one of the items on the list even on cancellation you get the callback mclasen: Marko Anastastov seems to have the C++ bindings for gio almost done. He's used (and hated) gnome-vfs, so he is a good tester. murrayc: really likes having that destroy notifiers for C++ bindings alex_, isn't g_mount_for_location/g_mount_for_location_finish missing a g_file_* prefix? we were wondering about GDestroyNotify for user_data also alex_: The comments you got from Marko were for the bindings. if you know the callback is always invoked exactly once (not zero, not more than once), you can survive not having the destroynotify for destroy notify you can just chain the callback as its guaranteed to come danw: Yes. danw: As long as it's not async. danw: actually, yes, even if it's async. why not if it's async? right alex_: ah, nice jdahlin_: Well, one could think of its as a file operation, but i'm not sure what a better name with a g_file_ prefix would be some of these things probably should be in the docs, like the guarantee that every callback is called exactly once its more something that operates on the global state and some hint for how to handle user_data destruction alex_, just browsing the headers, all other functions had that prefix in gfile.h i.e. the set of mounts Take g_file_mount_mountable() This takes a GFile that points to a file of type MOUNTABLE and mounts it (mountable is a new type, like a directory is a type of file. An example of it would be a smb share when enumerating a smb server) right, got it. too bad we alreay have a bunch of functions called g_file_* that now will have nothing to do with GFiles however, g_mount_for_location instead mounts the filesystem that contains the particular file rhult: yeah, that is sort of weird... so, its not quite an operation on that particular file rhult, that could be solved by doing a s/g_/gio_/g, if someone cares enough we could have gone the gio_ or g_io way I suppose yea before we get too bogged down in the detailed api review (which we agreed to take to the list), can you summarize the state of the rest of the stack, alex ? GIOFile, GIOInputStream, GIOBufferedInputStream ie gvfs, nautilus, file chooser, etc ? everything gets longer and more ugly ok gvfs is the part that is in least good shape atm It only has smb, sftp and trash backend although gicmo+danw is starting with http/dav It also doesn't allow you to build backends out of tree atm he was hoping to make progress on that this weekend. do you know if he did? To do that it requires some cleanup of the headers and to install them in the right places etc. does gnome-vfs have any out-of-tree backends ? Also, i think there are a bunch of GFile operations that are not supported yet. Especially the async versions of many ops (these will fallback to threaded implementations using the sync ones, but native async ones would be much better) burn: obexftp fonts: themes: ok, I guess that shows that there is value in allowing it Anyway, gvfs is sort of isolated from the rest of the stack though. i.e. you can do a lot of stuff without it iirc, there was a stress test for gtk themes/engines, right? and it has no important public api so, as long as it mostly works we're ok nautilus / eel is in better shape I really like a lot of simplifications and cleanups i've been able to do in the new code However, there are still a few feature regressions I've implemented copy/move/delete/trash/empty trash by now but link, duplicate, new folder and a few other things are still stubbed I expect those to land by the end of the week. is http://live.gnome.org/GioToDo an uptodate view of the current situation ? These things need some serious testing though, as they are potential data-losers yes that is uptodate inasmuch as I remembered everything might be some more minor things missing in nautilus, but none come to mind one question I have is how we want to handle the parts that eventually need to land in gtk I haven't really given that much time yet given that we won't have a gtk release for 2.22 we can handle the gtk+ parts later? or not? we could either put them in gtk as the become ready I think we should land things as they are ready or "park" them in some other library like egg even if we don't release it in a stable release yet putting them in gtk might make copy-and-paste a little harder, but thats ok, I guess Then we could perhaps sync it out to libegg with a s/gtk/egg/ yeah I've got some stuff in libeel some that could be user more or less as-is some that needs work I think I am going to look a bit into the gtk+ parts on the todo list mclasen: cool I already did a very quick hack for pixbuf loading I have not looked at the existing gtkfilesystem implementation by wrapping an output stream around a pixbuf loader mclasen: that seemed sort of weird to me it was very quick, at least... mclasen: consuming an input stream seems more natural yeah, pixbuf loaders are wierd like that i.e. gdk_pixbuf_new_from_stream (input_stream) you write to them but i guess that could use the output stream under the cover yeah, I'll give it some more thought we probably also want to support writing pixbufs out to a stream I suppose the most straightforward low level change would be to add inputstream support to pixbufloader anyway, I think it is time to switch to the next agenda item, after we already dropped it last week... (thanks for the update, alex) * Extended layout hints (Google Summer of Code) So, one more gio thing It really could use lots of tests Are anyone interested in writing tests or a test suite? now that we have a shiny test framework, that should be a breeze... yeah and it would be a good way to find issues in the test framework or things that can be improved there Well... i/o is sort of complicated ah, yes.. I'm not too comfortable with my patches to xattr stuff without reasonable test coverage an ideal setup would use loopback mounts to test stuff on fat, test out of diskspace, etc, etc * mclasen first needs to learn how to use the new test framework heh I guess I'll look at setting up the framework for tests, and then hope for lots of contributions... * tjafk is now known as timj timmy alex_: i think it'd help if you could write an email listing what tests are useful to implement and how to achieve that. (some should be possible to implement right away without loopback mounts, etc) I'll try to come up with some Just testing basic functionallity is good but another important part is catching all the corner cases and i/o errors ok, back to extended layout ? the discussion on the list sort of died out without any clear conclusions, I think mclasen: guess also due my silence the two contentious points I saw being raised there were a) details about how the interface should look to make implementing it easy b) the best size allocation algorithm for extended layout mclasen: well, i am in state of big disagreement on both topics mclasen: imho the changes havoc's proposes make things more complicated, not simplier mclasen: i haven't had time to look at extended layout at all yet. and will look into GIO API first it would be useful if you could back up your disagreements with arguments on the mailing list as you have to track more state variables to track natural and minimum size at once timj: ok I'm hoping that we can revive the extended layout discussion on list, anyway yes, that would be good the pattern i used for reducing code duplication in minimum and natural size calculation is adding a flag to the old size request function tbf: I guess I'd have to look at some examples maybe I should actually look at your patches... tbf: if you could follow up on the list explaining your pattern, and showing an example that demonstrates it, I'm sure we can settle this relatively minor point easily how about b) ? mclasen: guess that alternate algorithm should be evaluated mclasen: but my gut feeling is high code complexity for little effect I think that the quest for the one true size allocation alg. is pointless, honestly how a container distributes its allocation is up to the container, basically mclasen: also it changes the complexity class for all size algorithms from usually O(n) to O(n log n) < 100 almost always, so I wouldn't worry much about asymptotic complexity mclasen: erm... log(8) is > 2 already.... so for containters with just 8 widgets we already risk to double size allocation time mclasen: ok.... carefuly placing chaining loops and so on will help alot is size allocation time ever a bottleneck ? unless you do ugly things with size groups I guess width-for-height allows you to make horizontal and vertical size groups depend on each other ? mclasen: well, when resizing for instance this Pidgin window, i can see GTK+ doing its size allocation work so imho size allocation is quite slow already mclasen: recursively? no. tbf: if you put a width-for-height widget in both a horizontal and a vertical group, doesn't that effectively tie them together ? mclasen: still thinking about this.... tbf: anyway, I don't think the n log n case will be hit very often, if you keep the children sorted based on the differences, they should be almost perfectly sorted - unless the size requests change wildly but unless i did some mess, i only use the height-for-width information to distribute space when container got its size allocated all the size group stuff happens before after size-request, before size allocate oh, hmm I guess I really need to study your patches in more detail will you follow up on the list with your arguments, if I promise to read your patches ? will follow up on list anything else on extended layout ? otherwise we should quickly move to the last topic since we're over an hour already ok, last agenda item is * Version bump for GTK+/GLib I don't know who put it up. kris ? i didnt but still I have concerns whether just bumping gtk+'s version to match glib is a good idea i also doubt it the confusion has been done already, IMHO just bumping the gtk+ version will bring another round of confusion it feels pointless if you plan to release glib more frequently, as the plans seems to be the reasoning for the bump is to reduce confusion, but this only is valid if the bump happens rarely and in the end there are no guarantees that we are not going to desync glib/gtk+ in the future that is how things look for this cycle, at least .....but if we can predict that we will have to bump often, it might be better just the let them run out of sync I like the version number distance as it gives a feeling that they aren't tied together and you can use glib without gtk+ (for console apps, daemons, whatever) to get a "better C". It seems there aren't many non-GUI users of glib until recently (outside GNOME maybe syslog-ng comes to mind) leio: interesting aspect * mclasen has no strong preference either way but if we decide to sync them, we need to keep them in sync from now on mclasen: its just a version number, so no much reason for doing voodoo with it if nothing else, occasionally skipping a version makes for good trivia questions 20 years from now: GTK+ 2.14 was that the one that added the gvfs dependency ? hahahaha I guess we won't settle this question today.. time to stop see you guys at the next meeting in (?) two weeks, I guess yeah two weeks have a good evening almost xmas then yeah scary ciao so bring cookies and candles, maybe and beer