
I made one some times ago. It’s not that good cause I was still learning how to make #lang
s, but there’s that. https://github.com/euhmeuh/wasm-adventure

Dear lazy slack: Is anyone using CircleCI to test a package against multiple versions of Racket? I’d love to see your .circleci/config.yml
as an example. i.e. the CircleCI equivalent of my Travis CI example (So far I’ve figured out it could use @notjack’s docker images, and, it will use Workflows
instead of a Travis CI “matrix”… I think.)

has been busy and is only now catching up to the news about the engineering layoffs at Travis CI since the private equity acquistion — the “acquifire”

@alexknauth Ok so, I tried using syntax-classes, but I don’t see how I can transmit those classes to other modules once they are created. If I put the syntax-bound variable containing my class inside my metadata container, then give that to another expander somewhere in another module, how can the expander use that class as if it was declared here? In other words, my children parsers are going to need a lot of classes from their ancestors, but won’t have them in scope.

I guess one way would be to change actor-out
so that it also provides all the classes defined by a define-actor
, so that other modules can use them. But I’m wondering whether this simplifies my code or complicates it. Right now I’m just passing that information in a syntax object.

I guess I’ll just try that and see… Thanks for the rubberducking.

Maybe I’m misunderstanding… You shouldn’t always have to provide the syntax classes all the time. Macro hygiene can take care of a lot for you.

Realizing what I really want is not to write any frakking YAML at all. Instead I want to write a little utility that reads an info.rkt
, looks at base #:version
to find the oldest supported Racket that needs to be tested. And then writes the .yml
for me. And if some CI du jour doesn’t let you parameterize jobs/builds/whatevers, at least I’m not writing that stuff by hand.

If json is a subset of yaml, maybe this even gets close to a few lines of Racket ending in write-jsexpr
.

Of course, someone needs to figure out the correct tortured YAML required by service X. I tried to for Travis CI. I was hoping someone else could take a turn, this time. :slightly_smiling_face:

For CircleCI.

eventually, when the YAML becomes self-assembling, we will all drown in it. We’re already close

As someone who recently started using CircleCI (not for Racket though), I can attest to how nice it would be for the YAML to write itself :slightly_smiling_face:

@greg Uh oh, does this mean I’m going to end up being the de facto Racket-on-Circle-CI expert?

@d_run I feared but also admired SkyNet. I did not realize it would be the crushing banality of yaml …

waves at @notjack and polishes the baton in preparation for the hand-off

desperately looks for an escape route as the baton inches ever closer to my hesitantly outstretched hand

Seriously, this picket fence will be so fun to whitewash. Think about it, you can make a #lang stupid-ci
. Everyone will respect and love you.

The siren song of Open Source Fame

flips through Engineering Management for Dummies, finds another page

Well, it’s probably impossible. No one could figure that out. I understand why you’d be reluctant.

Dammit now I’m actually thinking about how a CI #lang
would work

Thank you! You won’t regret it!! :slightly_smiling_face:

For at least five years.

name idea: #lang bikeshed

@greg wait, I missed part of your original statement: Travis CI was acquired and might be going away?

Not going away soon, but looks like an acquifire https://news.ycombinator.com/item?id=19218036

oh dear

Do they own a competitor? (I have a hard time comprehending why they might close CI).

Defintely was - loads of people were laid off.

they don’t, but they own a lot of other b2b software companies and their business model seems to be “buy existing products that are mostly well established, cease new development, cut costs by only keeping on the people needed for basic maintenance, and monetize the long tail of existing subscriptions”

(“they” being Idera, the company that acquired travis)

so travis will probably stick around for a long time but it’s unlikely to get new features

They bought Embarcadero Technologies in 2015 ( Delphi).

I bet Travis will stick around for at least a few years… for paying customers.

ah yeah… no telling what Idera will decide to do with the free open source offering

If they’re trying to cut expenses as deep as senior engineering staff, I’m not sure why they wouldn’t look at quarterly numbers and say why are we paying to run stuff for free.

So, I thought I might start looking at another CI thing, before it becomes a fire drill.

I get why some people don’t like Microsoft acquiring GitHub, but, I don’t fear Microsoft cutting off free GH plans because they’re trying to milk the bottom-line. For the foreseeable future, it’s strategory to Microsoft. To Idera it’s just a cash-flow stream.

Agree.

I’d bet most of the expenses they’re trying to cut are engineer salaries rather than actual machine operating costs, so whether or not they keep the free option going probably depends on how much human effort it takes to keep it running

and to provide customer support for it

I don’t know either. It might not be much dollars to run the servers. But someday rando exec might have indigestion from too many hamberders and suddenly the rest of us are having a fire drill.

yup, no accounting for arbitrary executive termination mandates

bites tongue

@greg so, what do you want out of a #lang ci-config
?

As little as possible! Seriously, if I want to do 1 shell command on 10 containers, I feel like that should be max 11 lines to express.

Maybe it’s not quite that simple.

But in that spirit. Make simple things easy.

do you want something tailored to racket’s concepts, or do you really want something that only deals with shell commands and docker stuff?

I don’t understand why CI services aren’t just run-the-thing.sh
, why it needs to be wrapped in so much ceremony.

Oh, yeah, I guess what I said just now, is generic and not Racket-specific.

something something reproducibility something serialization something

The earlier thing I said, I like, too. That for most Racket packages, the info is in info.rkt
.

yup

Not all packages are that simple, but most are.

do you want something that explicitly knows about info.rkt
and uses that as a source of truth?

That would be wonderful. As version 0.1. And/or as the easy-button aspect of something that can handle more complicated scenarios.

other question: are you fine with the apache 2 license, and (more importantly) are you comfortable with Google being the copyright owner instead of me?

I mean, I have e.g. racket-mode which needs to test some permutation of X versions of Racket and Y versions of Emacs. But I wouldn’t expect info.rkt => ci.yml to handle that in easy-mode. Or handle it at all. I’m talking about the 90% or 95% case, should be easy.

I’m fine with either license, just please let me know if Idera will acquire Google ahead of time (so I can do $THINGS in the market). :slightly_smiling_face:

(I guess what I want, in a hand-wavy way, is for the Racket build server to handle older Racket versions, and have spiffy hooks for Git{Hub Lab}. That would be fine for me and most packages, too. But that’s not reasonable for the Racket team to do.)

would you be comfortable making a github repo for this project under your account and adding me as a contributor? (google’s open source process is much simpler to follow for patches to existing projects owned by others than for releasing your own projects)

if not, that’s totally understandable

@notjack Sorry I was away; back now. Yes. I’ll make a repo and add you as a contributor.


who here was at Racketfest?