Skip to content
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

[wip] add kernels page #7

Closed
wants to merge 52 commits into from
Closed

[wip] add kernels page #7

wants to merge 52 commits into from

Conversation

bollwyvl
Copy link

@bollwyvl bollwyvl commented May 4, 2015

Problem

Using the kernels wiki page is very manual, not very compelling, and liable to get spammed at some point.

Proposed

This adds a curated, data-driven kernel page to jupyter.org, as requested from here.

Feedback welcome! Let's make something really great!

Data Model

Because of the interconnected, extensible nature of what we are trying to represent (kernels, features, language versions, actions for a kernel project, etc.) the data in kernels.json is captured as JSON-LD, which is just JSON, but every key means an URI, and some values are treated as URIs. I am not actually using jsonld.js yet, anyway.

I would be open to being convinced of not thinking about this data this way, but I'll fight you for it!

Content

I pulled what I could from the wiki page, but there is definitely going to be some data collection effort! However, it should really be a one-time big push, and could likely be crowdsourced with a google spreadsheet. Future changes would become the responsibility of the kernel authors!

Everything is in one file, which obviously doesn't need to be that way, but for the time being it was easy. Eventually, things like the specific features implemented should be created in a reproducible manner, as discussed here, and as such would live in a separate file.

Libraries

Because of the data-driven angle, I have used d3. It's a bit overkill for what is currently being done, i.e. the page could be pre-generated by Jekyll, and search implemented more simply, but it helps me build quickly while staying true to the data.

I am open to suggestion of some other framework (considered backbone initially), but I think d3 actually fits the bill pretty nicely. It's not commented very well either, which I will fix at some point.

CDN vs Bower

I have moved away from relying on CDN to bower... mostly for my sanity coding with spotty connectivity. If we're serious about performance, we should eventually do a build of CSS and JS, as one or two big files is almost always going to be a better optimization. The bower components are submoduled in at present... I imagine eventually that they would live right in master, and that we would build from separate branch... potentially deployed via travis, but I haven't set this up before.

Visual Design

I haven't strayed much from the bootstrap baseline, so it should be easy to add a bootstrap theme. Obviously, this would best be done site-wide. Here are some I liked:

...but really anything other than vanilla bootstrap, 🙏.

@dsblank
Copy link
Member

dsblank commented May 4, 2015

Yes, I agree with all of the motivational points!

Some other comments:

  • A simple button indicating "Magics" is not enough. These perhaps should be a link to a page/section that indicates more information. For example, many kernels have magics, but exactly how and which ones is an important point.
  • Popular/maintained/updated? How can we distinguish between those that work well, and those that don't? Crowd-sourcing here (eg, a "like" button) may be useful.
  • Sort order? Some that I would like: name, popularity, language, recently updated

@damianavila
Copy link
Member

I generally agree with @dsblank comments... also, this is really nice @bollwyvl!

@rgbkrk
Copy link
Member

rgbkrk commented May 4, 2015

👍 Love this direction, thanks for taking the time to do it.

I'm a bit lost on what the colors mean here:

screenshot 2015-05-04 07 30 04

This will sound petty but I don't think we should show BrainFuck in the list (either that or censor out the F word).

@bollwyvl
Copy link
Author

bollwyvl commented May 4, 2015

Wnated to get some stuff out before 👶.

A simple button indicating "Magics" is not enough.

Hadn't done a hierarchical feature, but sounds reasonable. I think "which magics" is a valid, question, but maybe buried under a link, or on a kernel-specific page.

Popular/maintained/updated?

Yeah, we're going to need some Github integration... otherwise this becomes a maintenance nightmare. I really don't want to be running another server for this, so client-side API calls might be the best way, but I am open to suggestion.

Sort order? Some that I would like: name, popularity, language, recently updated

Added. Updated and popularity are another story. I really think we'll have to go to pulling this off a repo (i.e. most recent tag), as I really don't want people to have to dink with this every day.

I'm a bit lost on what the colors mean here:

Sorry, left this in without meaning to before cleaning it up some more.

Related to the discussion of automated kernel feature tests, I want to visually depict for a given kernel/feature:

  • this kernel originated this feature (blue)
  • this kernel claims to implement this feature (yellow)
  • this kernel feature's test was successfully executed (green)
  • this kernel feature's test was not successfully executed (red)

This will sound petty

Removed. This, for example, would never have passed the PR process!

@minrk
Copy link
Member

minrk commented May 4, 2015

This is great! I probably wouldn't include 'magics' on the index at all. It's not something that anything in Jupyter is aware of. I think the only way it's meaningful is as a bool indicating 'extends the language syntax in some way', which I'm not sure is the most useful.

@@ -0,0 +1,3 @@
[submodule "bower_components"]
Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

oof, do we have to use a submodule? I was so happy to get rid of our submodule in the notebook.

Copy link
Author

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

As i mentioned, I'd prefer a build step from another branch that built master, and the bower components would be checked in there. However, due to how github pages works, the submodule is for my sanity right now so that there is always a working demo.

Copy link
Member

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Sounds good, thanks for the explanation. I'll try to read more carefully.

@minrk
Copy link
Member

minrk commented May 4, 2015

I would also remove the parallel computing piece as a feature mark. IPython.parallel is not planned to be extended to other Jupyter kernels.

@dsblank
Copy link
Member

dsblank commented May 4, 2015

@minrk I disagree about not listing magics... I think these can be an important component of a Jupyter kernel. It may be that a language has a method of performing such functionality, but to bring them out of the language and create a standard API is something that is quite useful.

And I see some very clever magic systems being developed (for example, some Javascript-based magics). I also see some that I'd love to see IPython adopt.

Seeing that you just added parallel to the suggestions of removing... I also disagree with the removal of that. There are a few kernels that implement parallel processing, and that can be an important feature.

@dsblank
Copy link
Member

dsblank commented May 4, 2015

I agree that BrainF@#k should be sanitized. I think it would be perfectly fine to use a better/different name. I have use BrainScrew in the past.

This does suggest just a couple of rules: no offensive or sexist language; probably a standard "code of conduct" statement should be linked to:

https://www.python.org/psf/codeofconduct/

@minrk
Copy link
Member

minrk commented May 4, 2015

I see your point about magics. If 'magic' is defined as 'extends the language in any way', a link to a URL explaining what a kernel adds to the respective language is appropriate. I would actually avoid the use of the term 'magics' in that case, though. That's what IPython happens to call its extensions to Python, but I think it indicates an intent to standardize language extensions across languages that we do not have.

I think including parallel computing is confusing, though. Going forward, for instance, the IPython kernel itself won't provide any parallel computing. A separate, derivative project called 'IPython parallel' does.

@takluyver
Copy link
Member

And almost all serious languages have some kind of functionality for parallelism, which you should be able to use from a Jupyter kernel for that language. The only particular integration with Jupyter, as far as I know, is the support for starting and stopping clusters using IPython parallel - and we should probably aim to justify that.

@minrk
Copy link
Member

minrk commented May 4, 2015

@takluyver I've thought about that, too, and I think we should remove the clusters panel from the notebook, and move it to IPython parallel as an nbserver extension.

@bollwyvl
Copy link
Author

bollwyvl commented May 5, 2015

Wow, thanks for all the feedback! Some good soul searching happening here.

I've made features into a filter, and added tooltips, but have downplayed them by removing the colors and moving them below the description. Also removed the offending parallel feature, and renamed "magic" to "language extension". I guess the best way to add "this is tested" is as an action (like docker, github or try.j.o), calling out to travis.

Additionally, I've tightened up the copy a bit, and would consider most of that no longer FPO: any additional insight welcome.

Finally, design: I've removed as many lines/borders as I could, hopefully this doesn't make it unclear what can be clicked. Now, really only the kernels themselves get a border, which seems like a good choice.

remaining tasks:

  • add github (anything else?) integration
    • stars/forks
    • most recent update (tags? master commit?)
  • tests (travis) action
  • tons of data entry
  • start applying themes?

remaining questions:

  • What else is missing from the feature list?
  • Should I just start trying out bootstrap themes? I don't want to bite off the whole build chain thing yet, though, so would be open to punting the themeing to a later date if we want to do a proper job of it.

@bollwyvl
Copy link
Author

bollwyvl commented May 6, 2015

I've tried added bootstrap material design! Obviously, we'll want to do a bit of color work, but I like what it does out of the box.

Also more copy changes etc.

@damianavila
Copy link
Member

I've tried added bootstrap material design!

Nice!

@damianavila
Copy link
Member

I hope this new treatment is better?

Yep... btw... I see the logo and Kernel at the top and I like the idea to have it there, but I think they have to be centered. Not left-aligned.

Also, I think the cards is a better default than cells or list...

@SylvainCorlay
Copy link
Member

Do you want to list every implementation of an IPython kernel that there is around there (even the most hacky ones?)
Would it make sense to have a separation between certain jupyter-certified implementations that meet a certain quality, and the other ones?

@takluyver
Copy link
Member

I think we need to have some way of indicating quality. As @minrk mentioned the other week, though, it's probably tricky to do that with a manually maintained whitelist, because it's always going to be contentious for things that fall near the line.

I'm thinking more along the lines of an automatically calculated score, which could be based on things like Github stars, results of automatic testing, possibly download counts (though they're probably hard to compare for different kernels).

@bollwyvl
Copy link
Author

Sorry, I haven't touched this in a while.

Yeah, the original proposal on the linked issue included automated tests,
but there hasn't been much discussion around a formal approach to doing it.

Scores are tough, and can be gamed... not super worried about that.

Perhaps the good ol TRL scale:
https://en.wikipedia.org/wiki/Technology_readiness_level

Each has a type of information needed, from, say a gist up to membership in
the the particular kernel's inclusion in a package manager and use in other
packages. Again, hard to automate.

On Tue, Jun 16, 2015 at 1:55 PM Thomas Kluyver notifications@github.com
wrote:

I think we need to have some way of indicating quality. As @minrk
https://github.com/minrk mentioned the other week, though, it's
probably tricky to do that with a manually maintained whitelist, because
it's always going to be contentious for things that fall near the line.

I'm thinking more along the lines of an automatically calculated score,
which could be based on things like Github stars, results of automatic
testing, possibly download counts (though they're probably hard to compare
for different kernels).


Reply to this email directly or view it on GitHub
#7 (comment)
.

@Carreau
Copy link
Member

Carreau commented Sep 13, 2015

Closing here to to keep a small number of PR openend that are actually worked on
fell free to reopen. You can also ping Brian if you want him to work on that with Auberon.

Thanks !

@Carreau Carreau closed this Sep 13, 2015
@bollwyvl
Copy link
Author

Agree with the queue gardening intent, and it would take a bit of work to rebase, but I still feel strongly about having a data-driven listing of (initially) kernels, and would be happy to work on this, especially with some guidance on the presentation!

I think prior to re-proposing this, we would need to figure out the build story... I'll go create a ticket!

@rgbkrk
Copy link
Member

rgbkrk commented Sep 14, 2015

I certainly still want a kernel listing.

rgbkrk pushed a commit that referenced this pull request Sep 29, 2016
Remove base 64 from SVG.
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment
Labels
None yet
Projects
None yet
Development

Successfully merging this pull request may close these issues.

None yet

8 participants