cljs-experience

https://docs.google.com/document/d/1vom_MUTmQjsmjeQgw60ChGO9NDD9AvoIwJPPzrf8FKM/edit#heading=h.657ovwb1zxit
john 2017-05-25T00:27:56.062489Z

How critical is Figwheel to the success of such a project? And is Bruce on board?

mikeb 2017-05-25T01:04:36.309552Z

I would say figwheel is pretty important, no idea on Bruce's thoughts.

john 2017-05-25T01:12:30.360845Z

Some of the impetus of the project is the idea that many tools that are core to the programming experience are developed and maintained by very unconnected individuals. And the scattershot nature of that ecosystem makes the system not as cohesive of an experience as it could be, right?

john 2017-05-25T01:14:46.375414Z

In that vein, perhaps an effort to smooth out integrations between figwheel and the most popular IDEs would be in order.

mikeb 2017-05-25T03:37:34.228047Z

I would say yogthos said it really well. https://www.reddit.com/r/Clojure/comments/6d0zw6/simple_aint_easy_but_hard_aint_simple_leaving/dhzixvk/

mikeb 2017-05-25T03:42:03.252003Z

And I strongly feel we need a group effort, not dependent on any one single individual.

mikeb 2017-05-25T03:44:37.265551Z

I just found out about this github org which seems to be along the same lines, and perhaps might be a good place to organize around. https://github.com/cljs

john 2017-05-25T04:17:56.448418Z

The open collective campaign seems to be working for lumo. What if there was an open collective for a group of the most popular clojure tools?

john 2017-05-25T04:23:23.477087Z

I'd be willing to help out with a wiki page on integrating figwheel with some popular IDEs

yogthos 2017-05-25T04:30:20.513275Z

it sounds like documentation would be the easiest thing to focus on, we'd need to agree what the official place for that should be

martinklepsch 2017-05-25T04:31:14.518219Z

I was about to create a similar room and send an announcement to the mailinglist - maybe that’d be a good thing to do

yogthos 2017-05-25T04:31:16.518330Z

personally, I'd vote for using github for the doc site since it makes contributing easy, could either use cryogen or something else to build the docs

👍 1
martinklepsch 2017-05-25T04:31:34.519994Z

Also is this focused exclusively on cljs for now?

yogthos 2017-05-25T04:31:46.521131Z

I think that was the original plan

yogthos 2017-05-25T04:32:02.522387Z

I don't see why that couldn't be expanded to clojure as well though if it goes well

martinklepsch 2017-05-25T04:32:48.526328Z

re the figwheel discussion above - is the goal to provide “one true way” or also survey the landscape in some way?

1
martinklepsch 2017-05-25T04:35:05.538015Z

😄

martinklepsch 2017-05-25T04:35:54.542219Z

A friend bought the domain <http://learnclojure.org|learnclojure.org> on a whim over a twitter discussion if that’s of interest here

martinklepsch 2017-05-25T04:37:50.551711Z

I created a few issues with ideas here a few days ago: https://github.com/martinklepsch/learnclojure/issues

yogthos 2017-05-25T04:38:04.552856Z

👍

yogthos 2017-05-25T04:39:07.558278Z

my vote would be to show one way to do things, and make notes on other options

martinklepsch 2017-05-25T04:39:39.560932Z

Including editors?

yogthos 2017-05-25T04:40:05.563203Z

I don't think it helps beginners to be burdened with choose between options, in most cases it's easier to learn one way and then explore from there

yogthos 2017-05-25T04:40:33.565640Z

I think for editors it would be good to cover the popular ones, if somebody is already using an editor that works with clojure there's no reason to change

yogthos 2017-05-25T04:41:00.567885Z

there should be a default editor recommendation for people who are not using emacs, cusrive, or vim already I think

anmonteiro 2017-05-25T04:41:25.570044Z

I don’t really agree with “show only 1 way to do things”. If someone is coming to Clojure(Script) that someone most probably knows some other language and wants to keep using their editor

1
yogthos 2017-05-25T04:41:32.570659Z

and it would be good to provide a good config for it, with keybindings set, paredit or parinfer, and repl

anmonteiro 2017-05-25T04:41:54.572403Z

showing only 1 way of doing things is just throwing them off their way

martinklepsch 2017-05-25T04:42:01.573027Z

> keep using their editor also agree, someone use sublime will be very reluctant to use cursive/vim/emacs

yogthos 2017-05-25T04:42:15.574161Z

yeah completely agree with using the editor they're using already

anmonteiro 2017-05-25T04:42:37.576111Z

that’s settled then, show the Emacs way of doing things

anmonteiro 2017-05-25T04:42:41.576482Z

😂

yogthos 2017-05-25T04:42:45.576733Z

hehe

yogthos 2017-05-25T04:42:54.577493Z

using evil mode of course? 🙂

martinklepsch 2017-05-25T04:43:11.578848Z

Maybe one-way is a more valid approach for complete programming beginners but maybe less for people who already have some experience and opinions

anmonteiro 2017-05-25T04:43:51.582022Z

FWIW I really think once this is more fleshed out it would prove really useful: https://twitter.com/kommen/status/867374036006952961

anmonteiro 2017-05-25T04:44:00.582720Z

try Lumo online, no strings attached

yogthos 2017-05-25T04:44:47.586376Z

definitely

yogthos 2017-05-25T04:45:13.588572Z

klipse integration in the docs would be nice too https://github.com/viebel/klipse

yogthos 2017-05-25T04:45:41.591139Z

for example if you're looking through examples, you could try things right there

anmonteiro 2017-05-25T04:47:33.600701Z

My only objection against KLIPSE is the huge payload

yogthos 2017-05-25T05:25:33.797377Z

good point

john 2017-05-25T06:16:58.088903Z

The http://clojurescript.org site already provides a short description of the available IDEs. And that site can be improved upon. What I don't see http://clojurescript.org providing in the near future is an opinionated setup that can be used as an ideal introductory environment for beginners.

john 2017-05-25T06:19:49.105791Z

Ideally, a community resource site would also list all of the available IDE solutions out there. But again, http://clojurescript.org does that too. So there might be some use in having a particular stack that other documentation depends on.

martinklepsch 2017-05-25T06:20:38.111079Z

I think just listing editors is a start but what would really help people is a “Set up your editor” page for their editor

martinklepsch 2017-05-25T06:21:24.115850Z

including syntax highlighting, maybe parinfer/paredit (comparison between those could be a separate page), REPL setup

martinklepsch 2017-05-25T06:21:49.118568Z

I think a good exercise would be to define a sitemap

martinklepsch 2017-05-25T06:25:47.142332Z

https://github.com/martinklepsch/learnclojure/wiki

martinklepsch 2017-05-25T06:29:19.164034Z

did someone just edit it? might have accidentally overwritten someone’s changes, not sure

mikeb 2017-05-25T06:37:07.215268Z

I strongly believe that there should be a "recommended path" and focus on documenting and supporting it well. We can't be everything to everyone, and we need to be friendly to beginners especially those coming from Javascript world. That's one of the reasons getting started is so hard, there's a million little choices to make and everything ends up so fragmented and user die a death by a million paper cuts. In the editors area I would propose that Atom+ProtoRepl+ParInfer would be the suggested path at the moment. As @john mentions http://clojurescript.org already covers most editors, except Atom, the one best suited for newcomers.

👍 2
john 2017-05-25T06:41:16.242022Z

Can ProtoRepl do everything figwheel does? I never got it to work.

martinklepsch 2017-05-25T06:41:30.243640Z

They are complementary I’d say

mikeb 2017-05-25T06:43:27.256282Z

Yeah, they are similar to cider for emacs.

mikeb 2017-05-25T06:43:40.257659Z

And can connect to figwheel no problem.

john 2017-05-25T06:47:39.284297Z

Got it working now I think. Had to update all my plugins.

mikeb 2017-05-25T06:47:44.284859Z

@john I like what you said, an opinionated setup.

mikeb 2017-05-25T06:51:13.308036Z

Here's a good video on the setup with inline results even. https://www.youtube.com/watch?v=0WMga5E7Vsk

👍 1
mikeb 2017-05-25T07:07:56.428357Z

@martinklepsch How about a task based site? For example "Installation and Setup", "Create a nodejs console line application", "Create a json http api", "Connect to a postgres database", "Build an AWS lambda function", etc..

martinklepsch 2017-05-25T07:08:55.435482Z

Except “Installation and Setup” I think all of those would do very well under a “Tutorials” umbrella

Yehonathan Sharvit 2017-05-25T09:22:52.609242Z

I’m curious to hear what you guys think about the value vs. the price that Klipse brings to a tutorial/doc website

Yehonathan Sharvit 2017-05-25T09:23:03.610876Z

value: code interactivity

Yehonathan Sharvit 2017-05-25T09:24:56.628785Z

price: high payload - klipse_plugin.js is 7MB 780KB gzipped around 1 sec to download

😮 2
martinklepsch 2017-05-25T09:31:47.694827Z

@viebel consider that this 1s might not be the same for everyone and that some may have smaller machines that don’t do too well with large amounts of JS

1
Yehonathan Sharvit 2017-05-25T09:33:00.706019Z

@martinklepsch We are targeting developers aren’t we?

Yehonathan Sharvit 2017-05-25T09:33:09.707342Z

They should have strong machines 🙂

martinklepsch 2017-05-25T09:33:32.711012Z

should 😛

daveliepmann 2017-05-25T09:44:38.814769Z

I'll comment because I was in the original twitter thread, but since I may be a wet blanket I will keep my commentary to a minimum unless asked. If the goal is to make it easier for Clojure(Script) noobs to get started, I think the first question for every idea should be "what solutions have been tried?" and the second question needs to be "what resources already exist, and how are they doing?" I think the proposed ideas in this channel could be great, and I don't want to discourage anyone from making something new and awesome. But please consider existing solutions, especially official ones that are open to contributions! http://clojure.org and http://clojurescript.org will (and should) be the default first stop for newcomers, so optimizing that experience should be a higher priority than creating an alternate resource--and they're open to issues and PRs on github. http://clojure-doc.org exists and already has the categories proposed above. For function documentation (separate from getting-started docs), http://clojuredocs.org and http://conj.io exist. The places where I see a lot of potential for improving the newcomer experience is fleshing out https://clojure.org/guides/getting_started (perhaps turning that page into the tl;dr and writing a more detailed step-by-step walkthrough to get from nothing to running a simple app), adding context and explanation to https://clojure.org/community/resources, and creating step-by-step, hold-your-hand, well-tested instructions for individual editors (emacs/cider, vim, atom, etc.). I think code playgrounds and tutorials are an entirely separate problem from "getting started" and function documentation, and all three are big, difficult problems to solve, so maybe don't try to solve all three in one project.

👍 1
raymcdermott 2017-05-25T09:55:22.916158Z

how do we know if something works? visitor numbers and engagement would be useful to see in the open

raymcdermott 2017-05-25T09:58:56.949794Z

basic things like …. if version A with Klipse is more engaging than version B without it, drop version B and move on. Without some feedback loop this is all projection

raymcdermott 2017-05-25T09:59:23.954050Z

and I think conference talks as a feedback loop isn’t working out too well for us 😉

raymcdermott 2017-05-25T10:00:27.965091Z

(how to achieve this will obviously depend on platform / hosting choice)

2017-05-25T10:16:59.112160Z

@daveliepmann http://clojure-doc.org is very good, imho problem here is new comers don’t want to spend hours reading stuff, that’s a bit “old way to learn”. I come from Python world where we had this problem prior Python 2.5. Since there is a bunch of initiative to help newcomers and it’s not even on PSF website, PSF has a repo with all the guides you can find etc. https://wiki.python.org/moin/BeginnersGuide/NonProgrammers

2017-05-25T10:34:36.269050Z

Hello! I think we could learn from Reason/OCaml story, it’s amazing how fast it grows, though their Discord channel is still pretty small.

2017-05-25T10:41:21.328152Z

I’ve been talking to Cheng Lou recently, the guy behind ReasonML, about the way they evolve the community around the language. It seems like they are pushing hard social aspect while also providing essential tooling which is easy to start with. They integrate very good with NPM/Yarn. In fact he said, and I agree with him, that in order to get more people on board we should be closer to what they are used to, things should be familiar. The problem is that most devs want a single-click solution which I guess is not something we would want to provide. Quick on board experience is as important as returning experience.

2
2017-05-25T10:42:00.333858Z

We could probably take something from Reason’s website https://facebook.github.io/reason/

2017-05-25T10:43:03.343271Z

Interactive docs are super cool to have. React’s website is a good example https://facebook.github.io/react/

👍 2
2017-05-25T10:45:39.365453Z

There’s also http://cljs.github.io/api/

daveliepmann 2017-05-25T12:00:35.982110Z

@mekza I think it could be a quick win to convert https://clojure.org/community/resources to look more like that Python wiki.

2017-05-25T12:11:36.076704Z

@daveliepmann yup

raymcdermott 2017-05-25T13:28:16.934872Z

Btw an alternative to Klipse which is lighter weight is paren-soup https://github.com/oakes/paren-soup/

2017-05-25T14:35:20.033721Z

FYI: I just posted this to gather a quick feedback https://mobile.twitter.com/roman01la/status/867743975104446464 I’m going to parse the feedback and put together a list of most commonly expressed concerns that could be possibly solved.

john 2017-05-25T16:36:15.236651Z

More thoughts: http://www.lispcast.com/cognitect-clojure

2017-05-25T16:39:22.288054Z

> we do more as a community.

2017-05-25T16:39:25.289090Z

it’s the key 🙂

👍 2
john 2017-05-25T17:03:01.699959Z

I think it's clear that Cognitect wants to ride a fine line between maintaining control over CLJ/CLJS while still being able to farm out community maintenance and development activities to the community itself. Cognitect can't do both - at least, not easily. And I tend to think that the development model is currently working well, despite perhaps some problems with expectations and messaging. So some community development activities can and should be maintained by the community. In order to build out that effort, I would think the participants would need to feel like they have greater ownership and control over that process - not needing to sign a contributor agreement or wait on the Cognitect to triage PRs for documentation updates, for instance. So, perhaps a good exercise, would be to discuss a clear delineation of responsibilities between cognitect and the "community," thereby allowing members to feel like they have more ownership over their part of the process and development of the community.

👍 1
john 2017-05-25T17:12:52.868681Z

My vote is for a community branded IDE based on Atom+ProtoRepl+ParInfer. That solution looks like a near-professional product, familiar to many developers and seems very friendly to newbies, in terms of complexity and presentation. Such a default beginner recommendation is one of the "missing pieces" that A) many beginners have pain with, and B) is an area that Cognitect probably won't (and probably shouldn't) provide an opinionated solution for.

john 2017-05-25T17:16:33.930572Z

Personally, I use Cursive. I think I'd still recommend Atom for beginners though. A very valid path is to start with a simpler IDE and then graduate to more powerful ones (emacs even!) after beginners have acclimated to the language.

john 2017-05-25T17:29:08.143987Z

I'm also in favor of leveraging klipse for some documentation purposes. I do wonder if the initial load phase can be improved to prevent the page lock that I've sometimes experienced with klipse (perhaps with a web worker?). But in general I think it's a genuinely helpful tool and it's just cool. 🙂

john 2017-05-25T20:06:35.805837Z

A useful way to look at this: Clojure core is like the Linux kernel. The role of the community is to deliver a kind of Clojure Distribution that has user-land amenities that make working with the Clojure kernel a pleasure. It's not Linus' or http://kernel.org's job to deliver a beautiful userland, and, ideally, it wouldn't be Clojure core's job to deliver beautiful distributions of clojure. That's a userland concern.

👍 1
john 2017-05-25T20:08:09.830905Z

And while there are and should be many flavors and distributions of clojure, there needs to be an ubuntu of clojure distributions.