-
Notifications
You must be signed in to change notification settings - Fork 252
New issue
Have a question about this project? Sign up for a free GitHub account to open an issue and contact its maintainers and the community.
By clicking “Sign up for GitHub”, you agree to our terms of service and privacy statement. We’ll occasionally send you account related emails.
Already on GitHub? Sign in to your account
RFC: unify plotting packages under a common organization #658
Comments
I'm rather new to the community, so I'm lacking the experience to really help this discussion. But from where I am standing, I do think you make a lot of good points. I would be happy to contribute where I can, although I'm actually a machine learning guy rather than a computer graphics expert |
I think @IainNZ's previous comment on this topic was dead on: previous organizational efforts have already demonstrated that having an organization doesn't have any substantial effect on code maintenance because the real limiting factor is the number of software engineering hours per week we receive from competent volunteers. Since a large fraction of the people who've done the engineering work on graphics in the past are busy these days, I think you should assume that having a organization will not lose us anything, but will also gain us nothing. In short: the existence of an organization is neither necessary nor sufficient to create a labor supply. If you'd like to help make graphics better, the best way to do that is spend your time writing graphics code. Become the labor supply you want to see in the world. |
How does one properly form a group like this? I say we just do it, and start working on a comprehensive doc as I described (compare and contrast the various plotting options). I can start work on this... The most helpful thing would be if people could describe their common workflows and how they would prefer to interact with a plotting package (DataFrames vs Arrays, lines vs histograms, etc), how often then need certain features/styles, etc, whether they prefer minimalist, desktop gui, web, etc. I know how I like to work, and that's why I built Qwt.jl. Showing some other sample workflows and how you would accomplish it in all the packages would be super useful for all, and it might help guide an eventual unifying package at some point.
|
A document comparing different plotting options for Julia would be very useful. We don't really need an organization to do that though, just a repository and some people willing to work on it. |
I actually think that packages owned by individuals sometimes get more maintenance. I'm not sure why, but I think it's because at least someone feels responsible that way. |
To address @johnmyleswhite's (and @IainNZ's) points, the intention was never to generate new energy/labor (or in any way ask the package managers to do more than they are currently doing!), but merely to set up the structure that would allow e.g. convergence efforts once people are available to do so. In the meantime, it would provide a central location to find all plotting packages (definitely not "nothing" to gain), it would be the ideal host for the document @tbreloff talks about (which I reiterate my willingness to help work on), and especially, it would allow existing "labor supply" (unmerged PRs, especially simple ones) to be better channeled. In fact, let me expand on this latter point for a bit: It may not be evident for you as someone who has commit access to many of the ecosystem's main packages, and commands the prompt attention of community members, but from an outsider's point of view, having extremely simple patches linger for weeks or even not merged at all definitely doesn't encourage more substantial contributions. Add to this the fact that by the time a PR is merged the person may not have as much time available as they did when they sent the first PR, or may have unloaded the mental model of the package (which takes significant effort to acquire when dealing with someone else's code), or the model became unsynchronized with recent upstream changes to Julia, etc., and it may become clearer why I feel this aspect is so important to address. I'm positive that an organization could provide a more responsive ramp-up for new contributors (i.e. the labor supply you're talking about), and I say this from experience: my (modest) PRs to julia proper have had much prompter responses from various people, while contributions to single-owner, less popular packages typically take longer to have responses, for obvious (and understandable) reasons. @timholy's observation to the contrary probably only applies to a limited subset of packages whose owners are both very active in julia development and take care to address PRs/issues early, which isn't the general case (but please correct me if I'm wrong). For all the above, I ask you to reconsider the potential benefits of an organization. It may not mean much to powerhouse contributors, but it most definitely doesn't have a null effect. |
How about we meet half way. I kind of see @timholy 's point I have to admit. Here's what I think would be a good idea: Create an organisation and put the documentation there that we keep talking about. Also - and I might be biased here - it would be nice if we could reduce some duplicated efforts by having some kind of base package where we put calculations such as choosing a good plotting range and tick marks; things where there are best practices and that all plotting packages need. |
As someone who is spending about 70 hours of work extracting & extending the file I/O code from Images (into FileIO) and revamping Color (the need for which again arose from extensions in Images, and their usage in OpenGL packages), I can assure you that such refactorings are a nontrivial amount of work. Therefore, that's a concrete way that people who want such things to happen can help out! The appropriate procedure:
|
My suggestion is that someone should write the document or start helping with code refactorings first, thereby demonstrating the need/benefit for this kind of thing. You can host your results under your own GitHub site initially. Otherwise, you're basically just asking authors to do a lot of useless moving things around and giving up "ownership" of things they've put a lot of work into. |
I consider myself at some intermediate level doing visualisations (still not an expert) and agree the state of plotting with/in julia is not at the same level as other features. I'll writer later today a longer comment, but as john has written above: Work can never be replaced by organization. But organization can simplify work by giving some structure. |
I think we should move away from the idea of moving the packages to an organization. I think the giving up ownership argument has a real case. Especially for big and awesome packages such as Gadfly. That being said, some sense of community and coordination would probably be beneficial. For example (again personally motivated, but still): I very recently started with my plotting library. Aside from this discussion there is no indication to me that there is some sort of Julia-Plot-community. Would be great to have a common place to discuss things and ask questions that I am sure came up before. As a newcomer and thus still an outsider I can also say that aside from PyPlot and Gadfly I had no idea other approaches exist at first. What I mean is, that unless you really look for specific information you won't stumble across it. That may sound unproblematic at first, but it closes doors for the spoiled that don't want to make that effort to educate themselves. It's a Julia entry-barrier. For example, I am a machine learning PhD student who is in the process of moving over to Julia. However, I have a hard time convincing colleagues to jump ship on python/lua and join me on my Julia endeavours, when basic things like plotting need to be researched. Granted, plotting is not the main problem in my quest, but I think you get my point. Things like plotting should be obvious to the oblivious |
Agreed that we need better coordination of information. http://julialang.org/downloads/plotting.html could probably use some love. Or maybe someone wants to start a Wiki? |
Is this the correct place? Looks like we just need PRs for that. |
While orgs don't magically create manpower, they do seem to push people towards convergence of interface design, which can be a very beneficial thing. I'm not sure if that's a realistic or reasonable goal in the world of plotting, however. Can we separate the lower level functionality of something like Gadfly from the "grammar of graphics" style API it has? Or is that just Compose at that point? |
I think that's right, the contents of the |
I think the idea of a common plotting interface would be hugely beneficial, and I would be willing to put in time to make that happen. As I've said, I think the right first step is to create a document that has examples of implementing various workflows in each plotting package, perhaps in a public wiki. I know my own workflow, but I need examples of other people's workflows for the wiki to be useful. Summary: can people start posting some example plots they find important with the underlying data, and I could start building the wiki? Then we would have a point of discussion for what a common interface should look like. An organization could be created at any point... Doesn't need to be the first step.
|
Yes, please let us collect use cases. I would find that very beneficial as well. |
Just to get things started... here's a visualization that I do which uses Qwt.jl (the gif was also made with Qwt.jl): http://giphy.com/gifs/l41lFqlq6DpOJGDyE You can see the code that went into this here: https://github.com/tbreloff/OnlineAI.jl/blob/master/src/liquid/visualize.jl Please... anyone that has visualizations/plotting workflows for which they chose a specific package... please post something similar. It will really help to design/organize/fill the wiki. |
I'm currently working on making interaction (based on Gtk/Cairo) happening, so zoom+pan and rubberband selection for 2D plotting. As a screen shot this will not look very impressive ... |
All kinds of plots. Best would be to not only have classic examples like from the matlab interface, but some use cases that don't exist but people phantasize about. I'm in this weird situation of trying to write a plotting library without actually using it. |
@lobingera, you might want to see https://github.com/timholy/GtkUtilities.jl. After I finish my current tasks, I was going to snip out the pan/zoom code from ImageView. But I'd be thrilled if you did it instead! |
In overall there seems to be an agreement that an organization does not solve the main problem: manpower, but something for tighter communication would be nice. My proposal: attach to JuliaGeometry, as some plotting and plotting infrastructure is happenning there anyway. Open question: Should plotting tools packages themselves move into the JuliaGeometry organisation? Looking at plotting as a topic, some sort of grouping could be done.
It also looks like an agreement to update/revisit the julia webpages to give everyone an overview of stable and developing plotting solutions -> PRs on julialang.github.com @tbreloff: Search for plotting discussions on julia-users. I remember at least twice a year a 'how could a plotting API look like' discussion. @waldyrious: I also had missing communication on progress of PRs (i think my quiver plot example on Winston is still pending), but githup enables me a workstyle that keeps me independent of this. Asking for updates can be seen a polite reminder. But don't expect wonders, in some cases the maintainers do not agree with you. @StefanKarpinski: I spend some time on the weekend looking into Gadfly and Compose because i wanted to propose some code to paint the bitmap/image into cairo based backends (but got lost in color conversions, which is a nightmare of it's own). I thing Gadfly is clearly build on a Compose backend, but Compose could deal as a layout engine, that abstracts the current backends. Afaics. @SimonDanisch: I'll find some time for brainstorming fill you discussion in juliageo-meta. |
@timholy, yes i'm aware (and actually at one point of time proposed to spin off 'higher' gtk functionality into a package) of GtkUtilities.jl. I wanted to have good solutions for
|
... and i only have solutions for the first three... |
@lobingera, I guess my point is that if you already have partial solutions, better to unify on a single package and put it up there. GtkUtilities exists, but I'm happy to abandon it if you already have something better. However: over the next week or two I'm going to push my new branch of ProfileView that uses Gtk. Currently it uses GtkUtilities (which I'm happy to change), but if nothing else better is publicly available I will be adding more features to GtkUtilities. Hence, waiting a long time to even post your work will result in fragmentation. Hence, if you have something better available I urge you to post it somewhere. I am happy to contribute to your package. |
There are certainly lots of paths to move forward with this, and I'm thrilled to see this thread has sparked a lively conversation. However, I believe we should, as first steps, make the small but consequential changes that would provide a stable, permanent platform for the remaining discussions to progress. At least two fundamental changes are needed to ensure the discussion from this thread doesn't die off (or become one of those huge, impractical catch-all threads), in my view:
Thoughts? |
Thanks @cormullion for attempting to move this forward in JuliaLang/www_old.julialang.org#258. From the responses there by @ihnorton and @ViralBShah, it seems clear that the proposal for point 1 in my previous comment (using http://julialang.org/downloads/plotting.html as the central listing of plotting packages) is not gonna fly. Maybe the wikibooks page could be used instead? |
@waldyrious yes it was closed without discussion. Still, text is easily recycled. :) |
We could start by designing an organization frontend similar to http://juliastats.github.io/. I also would like to see a example portfolio of useful cases implemented in different plotting libraries (similar to a matplotlib website). Such portfolio would definitely give a boost to an opinion exchange, and help users master visualizations in Julia. |
I initially disagreed on having a plotting organization (this manpower thing), but it really looks like from the documentation perspective it makes more and more sense. This morning i read the comments to the PR for the download/plotting webpage and somehow agreed, somehow disagreed - especially on this 'best options' as both Gadfly and PyPlot are in development, also. |
I advocate for starting an organization at least as a discussion place (BTW, we are discussing general plotting issues in Julia in a Gadfly issue) and for a documentation storage. There is no harm in it. |
I have an idea. I don't know whether it is appropriate. ADD: It seems that it has been mentioned by @wildart 18 hours ago. |
I took the plunge and created an org. I also created one repo which could hold this theoretical documentation that we've been talking about, and an issue where we could continue this conversation: https://github.com/JuliaPlot/juliaplot_docs/issues/1. I don't think anyone should move ownership of existing plotting packages here (yet)... right now lets just consolidate wikis/tutorials, and maybe we can link to it from the julia documentation. |
Great @tbreloff ! Now at least, we have a place to discuss and experiment with different ideas/interfaces. |
Thanks @tbreloff. Let's continue this discussion over there, as it's a more appropriate venue. Everyone please add your comments in existing or new issues at https://github.com/JuliaPlot/juliaplot_docs/issues. |
I originally suggested this in sunetos/TextPlots.jl#15, where it was briefly discussed, but since the subject was kind of off-topic there, and the PR was (rightfully) closed, I thought it would be better to re-launch the discussion elsewhere. I'm posting it here since it's by far the most popular (by github stars at least) plotting package for Julia.
The suggestion is for the owners of Julia's plotting packages to join under an organization, which would have several benefits, which I point out below. For reference, the current plotting packages are:
Text/terminal-based plotting:
Graphical plotting (possibly incomplete list):
Additionally, there are some graph-specific packages which I suppose would fit into a plotting organization, but since JuliaGraphs exists, they should probably unite there instead:
The advantages for an organization are:
As I see it, we have nothing to lose, and everything to gain: at worst we will have a situation just like right now, but with the benefit of having all plotting platforms in the same place. That's already a net positive, without the need for any further action. And at best, we have the chance to really improve the state of plotting in Julia, which arguably is a quite common need, therefore hopefully commanding enough interest and energy to make things go forward, concerning items 1, 3 and even 4 from the list above.
Looking forward to hear from the authors of the packages listed above (and any others interested in this topic).
The text was updated successfully, but these errors were encountered: