From 54168bc6eb75811e7044b759e71ffb3062b677ee Mon Sep 17 00:00:00 2001 From: Shuhei Kadowaki Date: Thu, 5 Mar 2020 19:02:19 +0900 Subject: [PATCH] JuliaCon 2020 proposal draft --- misc/juliacon2020.md | 88 ++++++++++++++++++++++++++++++++++++++++++ misc/juno1.0-logo.png | Bin 0 -> 18783 bytes 2 files changed, 88 insertions(+) create mode 100644 misc/juliacon2020.md create mode 100644 misc/juno1.0-logo.png diff --git a/misc/juliacon2020.md b/misc/juliacon2020.md new file mode 100644 index 0000000..0d4b373 --- /dev/null +++ b/misc/juliacon2020.md @@ -0,0 +1,88 @@ +# JuliaCon 2020 proposal draft + +## What to present + +My current plan of the presentation consists of two parts: + +1. Showcase improvements/features +- Explain how Juno 1.0 will improve user experiences: easier installation/update and non-interference in user's own environment +- And also we want to showcase lots of features that only we developers know but would be greatly useful for general users: goto/symbols view/refactor/linter, profiler, etc +- This part will be of interest of the majority of possible audiences and so should contribute to the whole Julia community + +2. Describe implementation +- In this part, I would like to explain how we solve/implement problems and features; it can help other existing coding environments improve or encourage someone to create another Juno-like tool, or back to our project, attract future contributors and make it easier for them to contribute to Juno +- Possible presentation flow: + * How to separate Juno packages from user's environment: maybe help julia-vscode extension, for example ? + * How to implement linter/refactor using both static code analysis and user runtime info: if we can implement "good" features using information that lives in user's runtime, it will show the benefits of Juno's approach in comparison to an ordinal IDE approach based on static code analysis + +Each part will take some time (say, around 10 min), so I think our presentation form is better to be "Talk" (30 mins long including 5 mins for questions) rather than "Lightning Talk" (10 mins long). + +## Body + +We need to write title/abstract/description to fulfill a submission. + +### Submission title + +Juno 1.0 – the powerful IDE has got yet more power ! + +(53/64 chars) + +### Submission type + +Talk + +### Abstract + +We will introduce Juno 1.0 -- show how it will get rid of the longstanding issues and bring us huge productivity boosts. +Juno's unique approach allows IDE features to be implemented simply but yet with the power of user runtime. + +(232/500 chars) + +### Description + +[Juno](https://junolab.org/) is an IDE for Julia. +It enables unique, powerful and very interactive development style, and has been widely used in the community since its first publication in 2014. +But due to the limitations that comes from its package infrastructure, there also have been some longstanding and fundamental problems mostly around installation, update, activation time, and interference with user's own package environment. + +In this presentation we are going to present Juno 1.0[^not-yet!], explain how it will solve those problems and improve user experiences, and also showcase our latest new features that are being implemented by using both static code analysis technique and user's runtime information. + +We also plan to describe our approach to solve the difficult problems and implement the new features; some parts of our approach can be applicable to other development tools and help them improve, as like we actually borrow the efforts devoted to [julia-vscode extension](https://www.julia-vscode.org/) for our static code analysis. + +[^not-yet!]: NOTE: I'm writing this 4 months ahead of time; you know, we've not done the work yet ! If you're interested in contribution, hit us on our slack channel. We would really appreciate your help. + +(1272/2500 chars) + +### Notes (optional) + +### Talk image (optional) + +![](juno1.0-logo.png) + +### Speakers + +- Sebastian: +- Shuhei: aviatesk@gmail.com + +## Checklist + +### title + +- [ ] easy to identify the topic of the content ? + +### abstract + +- [ ] easy to read in English ? +- [ ] understandable for someone not working on the same topic ? + +### description + +- [ ] the subject should be of interest for JuliaCon ? +- [ ] descriptions are (technically) sound ? + +### scoring + +1. [ ] applicability to the Julia community ? +2. [ ] contributions to the community ? +3. [ ] clarity: what is the purpose of this talk ? what will people learn ? +4. [ ] significance: change the way a lot of other people use Julia ? +5. [ ] topic diversity diff --git a/misc/juno1.0-logo.png b/misc/juno1.0-logo.png new file mode 100644 index 0000000000000000000000000000000000000000..15d45ca67079e93b903c6dcb67ca691af1c0ad28 GIT binary patch literal 18783 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 literal 0 HcmV?d00001