How to contribute to Dr. Racket IDE?

53 views
Skip to first unread message

Conor Hoekstra

unread,
May 7, 2020, 12:12:00 AM5/7/20
to Racket Developers
Hello, 

I am a new racketeer. I have written a couple toy algorithms in Racket in the past couple months and started to write my first library in Racket today. This was caused bu starting to read SICP. I then went and watched 5 RacketCon talks by Matthew Butterick, Matthew Flatt, Matthias Felleisen and Alexis King. To say the least, as a programming language enthusiast, I am very excited about Racket as a PL for creating PLs.

However, I have been rather disappointed with Dr. Racket. For an IDE designed for students and aimed at teaching - there seem to be a couple major low hanging fruits that have been missed.

MISSING FEATURES

1. No automatic formatter (or pretty-printer) [ and yes I understand the auto-indent feature is there, but there should be something like gofmt for Go or clang-format for C++ ]
2. No option to syntax color different symbols
  • This one is really surprising. If you look at VS Code screenshot below, you can see that the function name and the parameters are different colors. A bit odd that take and drop aren't blue but still, this is a major missing feature IMO.

vscode_racket.png

3. No parentheses color matching
  • Once again, very surprising this isn't an option. I realize there is a "scope highlighter" feature, but that requires skipping around with your cursor.
Anyways, I am not one to complain without proposing solutions or trying to fix things. Due to how excited I am about Racket, I figured I would just go build the IDE and open a couple PRs to add these features. I hopped over to: https://github.com/racket/drracket and that led to a couple of other missing things.

MISSING ON GITHUB DR. RACKET REPO:

1. No CONTRIBUTING.md: from what I can tell - no instructions on how to build? 
2. No CODE_OF_CONDUCT.md: this one isn't really necessary for me to pitch in - but COCs are the new norm and there are individuals that won't consider contributing if there isn't a COC.

Anyway, if someone in the dev group can provide me with:

1. Instructions on how to build (I do most of my development on Ubuntu 18.04 but have dual boot into Windows 10 if necessary)
2. Point me towards solutions to the 3 missing features (as I am new to Dr. Racket - I realize these things might exist and I just might not have found my way to them) OR confirm that they don't exist

Thank you for your help in advance! Looking forward to helping out and contributing to the Dr. Racket ecosystem. 

Conor

Robby Findler

unread,
May 7, 2020, 9:34:09 AM5/7/20
to Conor Hoekstra, Racket Developers
Hi Conor: thanks for your interest in DrRacket. To build it, run "make" in the top-level of a checkout of the main racket repository. As for the rest, I think that there are things related to some of what you want, but probably not exactly what you have asked for.

Robby


--
You received this message because you are subscribed to the Google Groups "Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to racket-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/3d476aec-e744-4ccd-9747-93c3905c984b%40googlegroups.com.

Matthias Felleisen

unread,
May 7, 2020, 9:43:17 AM5/7/20
to Robby Findler, Conor Hoekstra, Racket Developers


Conor, 

see https://groups.google.com/forum/#!topic/racket-users/lXrgeBwJAJ4 for a recent discussion on how to work on drracket. 

— Matthias



On May 7, 2020, at 9:33 AM, Robby Findler <ro...@cs.northwestern.edu> wrote:

Hi Conor: thanks for your interest in DrRacket. To build it, run "make" in the top-level of a checkout of the main racket repository. As for the rest, I think that there are things related to some of what you want, but probably not exactly what you have asked for.

Robby


On Wed, May 6, 2020 at 11:12 PM Conor Hoekstra <hoeks...@hotmail.com> wrote:
Hello, 

I am a new racketeer. I have written a couple toy algorithms in Racket in the past couple months and started to write my first library in Racket today. This was caused bu starting to read SICP. I then went and watched 5 RacketCon talks by Matthew Butterick, Matthew Flatt, Matthias Felleisen and Alexis King. To say the least, as a programming language enthusiast, I am very excited about Racket as a PL for creating PLs.

However, I have been rather disappointed with Dr. Racket. For an IDE designed for students and aimed at teaching - there seem to be a couple major low hanging fruits that have been missed.

MISSING FEATURES

1. No automatic formatter (or pretty-printer) [ and yes I understand the auto-indent feature is there, but there should be something like gofmt for Go or clang-format for C++ ]
2. No option to syntax color different symbols
  • This one is really surprising. If you look at VS Code screenshot below, you can see that the function name and the parameters are different colors. A bit odd that take and drop aren't blue but still, this is a major missing feature IMO.

<vscode_racket.png>

3. No parentheses color matching
  • Once again, very surprising this isn't an option. I realize there is a "scope highlighter" feature, but that requires skipping around with your cursor.
Anyways, I am not one to complain without proposing solutions or trying to fix things. Due to how excited I am about Racket, I figured I would just go build the IDE and open a couple PRs to add these features. I hopped over to: https://github.com/racket/drracket and that led to a couple of other missing things.

MISSING ON GITHUB DR. RACKET REPO:

1. No CONTRIBUTING.md: from what I can tell - no instructions on how to build? 
2. No CODE_OF_CONDUCT.md: this one isn't really necessary for me to pitch in - but COCs are the new norm and there are individuals that won't consider contributing if there isn't a COC.

Anyway, if someone in the dev group can provide me with:

1. Instructions on how to build (I do most of my development on Ubuntu 18.04 but have dual boot into Windows 10 if necessary)
2. Point me towards solutions to the 3 missing features (as I am new to Dr. Racket - I realize these things might exist and I just might not have found my way to them) OR confirm that they don't exist

Thank you for your help in advance! Looking forward to helping out and contributing to the Dr. Racket ecosystem. 

Conor

--
You received this message because you are subscribed to the Google Groups "Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to racket-dev+...@googlegroups.com.
To view this discussion on the web visit https://groups.google.com/d/msgid/racket-dev/3d476aec-e744-4ccd-9747-93c3905c984b%40googlegroups.com.

--
You received this message because you are subscribed to the Google Groups "Racket Developers" group.
To unsubscribe from this group and stop receiving emails from it, send an email to racket-dev+...@googlegroups.com.

Michael Robin

unread,
May 7, 2020, 11:48:44 AM5/7/20
to Matthias Felleisen, Robby Findler, Conor Hoekstra, Racket Developers

 

Although I’ve had some experience with using (and implementing various “naïve”) versions of Lisp, I’m also a Racket newbie.

Although there are good reasons to have a stand-alone IDE like DrRacket, esp. as a standard batteries-included environment for teaching, having an IDE do what everyone wants is of course a challenge, so in non-educational environments such stand-alone IDEs are somewhat of an anachronism. For instance, personally I find it almost impossible to work in a modeless editor, so without Vi or Emacs bindings (I prefer the former, despite the latter’s lineage), but I don’t expect DrRacket to provide these bindings, but just expect to do what it does well.

 

So I think the best way is probably to use something like VsCode (which you mention) with one or more plug-ins to edit code, do repl work, and to debug if it is supported.  I don’t think any of the plug-ins shown below support debugging (no Racket LSP protocol?) but otherwise may do what you want. I think working on these plug-in’s probably makes for sense then burdening DrRacket with more functionality. So your workflow could be to do major editing and some experimenting in VsCode, and have DrRacket auto-reload externally changed files, and use DrRacket for serious debugging; VsCode can also reload files changed in DrRacket – though I’d make sure files are checked into git in case something gets saved that you want to back out of.   I do something similar with SWI Prolog, which has a similar stand-alone IDE, where I edit from VsCode and debug in the SWI IDE. 

 

Some relevant VsCode extensions shown below -- you’ll have to experiment to see which play along well with others if you need more than one. Having a “blessed” extension that could be improved on (is there one??) and an LSP protocol would be nice.

 

 

 

Thanks,

Michael

Reply all
Reply to author
Forward
0 new messages