#general

1 messages ยท Page 15 of 1

swift inlet
#

Yes exactly

silent agate
#

I can knock that out today

swift inlet
silent agate
autumn swallowBOT
#

Welcome @stoic turtle!

stoic turtle
#

Hello all

winter linden
#

welcome ๐Ÿ™‚

wispy tapir
#

Nice new logo ๐Ÿ˜„

silent agate
#

Love it

turbid tulip
#

I love it, too!

lyric notch
#

the new logo is awesome ๐Ÿ˜

autumn swallowBOT
#

Welcome @split badge!

swift inlet
split badge
#

Hello there ๐Ÿ– I'll probably start to look at Dagger this week-end (or maybe next because Hacktoberfest is waiting for me for tomorrow ^^).

autumn swallowBOT
#

Welcome @winged oyster!

winged oyster
#

o/ @turbid tulip

turbid tulip
#

Hey @winged oyster!

#

Welcome. ๐Ÿ™‚

autumn swallowBOT
#

Welcome @still wolf!

undone summit
#

Hey everyone, had chat with @winter linden few days back, I am trying to look at cue and would love to contribute in it. I am just getting started with the language. It'd be great if someone can suggest any issue or experiments regarding performance or anything else that I can do around it please let me know! ๐Ÿ˜„

swift inlet
undone summit
#

Hey @swift inlet , I think the target definitely would be latter one. I don't have any specific requirement right now. It's mostly for my learning purpose and contributing while doing so. So whatever might be a "good" start . I think the target for this week is just understanding Cue first, thus looking forward for suggestions.
Thank you the the link to the issue, I will go through this ๐Ÿ™‚

swift inlet
silent agate
undone summit
undone summit
silent agate
#

attending live talks or watching recorded video

undone summit
#

I think that is a very good idea, there are twitter spaces dedicated for even discussions (there is performance twitter space for instance)

#

If you do post on twitter it might get you an idea of how many people would be interested in attending in (twitch streaming is also a good way but you might know that already)

silent agate
#

Hmmm twitch could be interesting

undone summit
#

I definitely would be interested in attending. But I would prefer if it was live as we get to hear discussions. It's usually difficult to remember what event I wanted to watch (if I miss them) sometimes and unless its being directly used in my job I wouldn't remember to watch it so easily

#

but live events are usually a good way to get more audience

winter linden
#

We can start simple with a community call here on discord

#

Thatโ€™s been on my todolist for months actually..

silent agate
#

I was about to suggest live youtube or twitch and read questions from the comments, but a discord community call is a great place to start and see what interest there is. I imagine interest being huge once Cue hits critical mass

#

VS Code finally gets bracket pair highlights. Been waiting for that forever

#

oh! and static terminal dimensions and custom tab titles! I swear VS Code continues to be the best thing to ever come out of Microsoft

autumn swallowBOT
#

Welcome @tidal cape!

tidal cape
#

Hi everyone ๐Ÿ‘‹ . Just wanted to say I'm looking forward to trying out Dagger. I've used Cue a bit in the past and worked with a couple people who are already here (good to see you here @silent agate and @turbid tulip )

turbid tulip
jolly plank
#

@here We are looking for a dagger developer with strong devops experience. We are open to both contract or full-time employment.
Please DM me if interested.

autumn swallowBOT
#

Welcome @shy wyvern!

shy wyvern
#

./wave

autumn swallowBOT
#

Welcome @sleek mist!

#

Welcome @blissful ginkgo!

west patrol
serene thistleBOT
#

The Issues

The current version of Dagger requires imperative CLI commands that complicate the use of the tool as well as forcing the user to do the very operations Dagger sets out to eliminate. The dagger input commands are a regular source of confusion, both for developers new to and experienced with CUE. Furthermore, Dagger has overloaded some concepts such as inputs and left other concepts such as environments and plans rather vague.

This proposal will describe a version ...

silent agate
#

Hi folks! Please take a look at this proposal and consider how it would improve your experience of Dagger and how it would enable easier onboarding and adoption. Feedback of any kind is greatly appreciated!

silent agate
serene thistleBOT
#

I like the general direction, as you know.

A few questions and comments in no particular order. Not an exhaustive list, but wanted to get the conversation moving ASAP.

  • Will I still be able to query the state of an environment with dagger query? If so, how is that state stored and attached to the proper environment?
  • You use package dagger to mean 2 different things depending on context. Even in this proposal, there are 2 code snippets, each using package dagger in a different ...
serene thistleBOT
#

Answering your points in order:

  • yes via dagger query <environment>. The question of state is still outstanding. We may still need a .dagger folder for that purpose
  • I agree a local package dagger coexisting with alpha.dagger.io/dagger is confusing. I feel its important to be able to colocate dagger .cue files with files used by other tools. Perhaps not? In order to do that CUE needs the package identifier. For the project package name to be arbitrary, we would need to configur...
serene thistleBOT
#

Answering your points in order:

  • yes via dagger query <environment>. The question of state is still outstanding. We may still need a .dagger folder for that purpose

OK. Could you add a section on this topic, if only to say โ€œthis point is still outstandingโ€?

  • I agree a local package dagger coexisting with alpha.dagger.io/dagger is confusing. I feel its important to be able to colocate dagger .cue files with files used by other tools. Perhaps not? In order to do that ...
serene thistleBOT
#

Just wanted to pop in and say, i'm glad to see a proposal like this! I (still ๐Ÿ˜ข ) haven't had much time to really grok Dagger's codebase, so don't have an informed opinion on Dagger's current architecture, but many of the basic principles here - e.g., eliminate special input paths, express as much of the logic as possible natively in CUE - are hard-won ideas i've come to over the past six months.

With polly, we gyrated for a couple weeks on what "passing in variables" should look like, unt...

serene thistleBOT
turbid tulip
#

@winter linden and @wraith niche were on Changelog's podcast Ship It! https://changelog.com/shipit/23

serene thistleBOT
serene thistleBOT
#

@shykes raises an interesting concern as it relates to the loading of CUE files as the proposal is written: It would be possible to invoke Dagger commands in a number of different ways.

  • Single environment specified in the project root: may run dagger up without specifying an environment
  • Single environment specified in the project root: may run dagger up <environment> so long as there is a match
  • Multiple environments defined in the project root: must run `dagger up <envir...
autumn swallowBOT
#

Welcome @sand heart!

#

Welcome @wooden kayak!

sand heart
#

๐Ÿ‘‹

wraith niche
#

Welcome! If anyone has issues accessing the github repo, please let me know (you can pm your username).

silent agate
# serene thistle

<@&707664746224025688> this feels better. In fact it makes me rethink how stax does things. Curious and eager to hear feedback as you have time

autumn swallowBOT
#

Welcome @opal solar!

opal solar
#

๐Ÿ‘‹

serene thistleBOT
#

I really like that approach but I think removing #Environment isn't a good idea.

The killer feature of [name=string]: #Environment was the possibility to dynamically create environments thanks to regexp (your example with PR was really cool btw).
If we decide to use directories as environments, how would you manage that?

Instead of removing #Environment, I think we should find a way to control how users can deploy their plans.

Dagger commands in a number of different ways.
...

serene thistleBOT
serene thistleBOT
#

Yead this is what @talentedmrjones explained in the main message

For advanced users it would be possible to do the following from the project root:

dagger up ./... and execute all variations. In this case each variation would require a unique name. It may also be possible to specify whether the variations execute sequentially or in parallel.

And I think this is not a good idea to allow that.

serene thistleBOT
#

Re: Loading CUE Files:

Another option could be to always have the CUE API load from the project root no matter what directory you are in so long as you are in or below the project root so that executing dagger anywhere within a project always produces the same result (kind of like how git always finds .git at the root).

With this we could keep dagger.#Environment and the flexibility it provides, especially as it relates to regex matching.

If we load from the root with the _i...

#

can you elaborate on why you think it is not a good idea to allow the user to dagger up ./... and execute all variations?

I think it could lead to unexpected behavior :disappointed_relieved:

Imagine you do dagger up ./... in a project with multiple local, production and staging environments, you don't have the control over your deployment.
Also how dagger should deploy?

  • Each environment are up one by one or in parallel?
  • What happens if an environment fails?

I know I'm de...

#

@TomChv actually, in this alternate approach, with the dagger.#Environment keys were made top-level keys, there is still the name: string field which could be written as a regex like this:

name: =~"review-[a-zA-Z0-9-_]*"

And dynamic PR review environments enabled with a flag such as --name which could be used to fill that path. So from the root: dagger up ./review --name pr-toms-feature. Without the --name flag Dagger would error with No environments found

serene thistleBOT
serene thistleBOT
#
  1. I agree that we should only allow dagger up on one environment at a time. Itโ€™s one less thing to worry about in the design, and it doesnโ€™t seem to be a big problem for users since we already have this restriction in place and nobody (to my knowledge) has complained about it.

  2. I think this variation has promise. The issue with environment naming seems solvable.

  3. I donโ€™t think this variation requires eliminating dagger.#Environment. As a CUE developer, wouldnโ€™t I expect to appl...

winter linden
#

Apologies for the notification spam everyone. But if you look closely, itโ€™s not actually spam ๐Ÿ™‚ Each notification is for a post that would otherwise be made here. If the volume becomes too much, weโ€™ll move it to #github-feed

serene thistleBOT
winter linden
grim dawn
#

im there ๐ŸŽ‰๐ŸŽ‰

serene thistleBOT
#
  1. I agree. Execute a single environment at a time.
  2. yep
  3. The schema for dagger.#Environment can be applied to top-level keys in several different ways. That's an implementation detail to solve later. The point for now being that this pattern still allows cue eval to catch errors. Another important consideration is that environments: [string]: dagger.#Environment allows multiple environments to be defined in each cue value instance and I see a lot of room for trouble there. It se...
#

4. In dagger up ./review --name pr-toms-feature ./review would be where to load CUE files and retrieve a single value instance (plan variation) which in this example does not define a concrete name but rather a regex pattern; pr-toms-feature would be used to value.Fill() which would return a concrete value for the name (assuming the string provided matched the regex)

I understand how it would work but was wondering about terminology, and specifically user-facing terminology. I...

#

It's not two types of objects (plan and environment). In this alternate approach the plan variation is the environment. Which is one object. What's happening is that the plan as an incomplete value is being completed by the provided string.

I would explain it differently:

  • a plan which is the CUE configuration loaded recursively from the specified directory to the project root
  • a concrete value used to complete the plan'sname field
#

It's not two types of objects (plan and environment). In this alternate approach the plan variation is the environment. Which is one object. What's happening is that the plan as an incomplete value is being completed by the provided string.

I would explain it differently:

  • a plan which is the CUE configuration loaded recursively from the specified directory to the project root
  • a concrete value used to complete the plan'sname field

In this scenario, wouldnโ€™t th...

#

๐Ÿคฆ I misread this the first time. I would refine the explanation like this (because one thing is an object, the other thing is a string)

It defines 2 things: a CUE plan and a name for the plan

  • a PLAN which is a Cue configuration loaded from the specified directory recursively to the project root
  • a name for the plan to use

Each plan is its own operational context / configuration profile.

#

OK, I was hoping to dodge yet another debate ;) Unfortunately I disagree that we need such a field at this time, sorry.

  • At the moment there is no backwards-incompatible format to support, so developers donโ€™t actually need this field
  • If in the future we do introduce a backwards-incompatible format change (which could be in a distant future or even never, depending on how good / lucky we are), we can always introduce the field then. There is no downside to waiting. No need to burden dev...
autumn swallowBOT
#

Welcome @ebon cargo!

ebon cargo
#

Hello all, Guillaume Bizet from societe gรฉnรฉral.

autumn swallowBOT
#

Welcome @tender sedge!

silent agate
#

should I remove some of the comments that are no longer quite relevant?

winter linden
#

Thereโ€™s a โ€œhideโ€ feature for that purpose, works well, go for it

serene thistleBOT
#

Our team would be very happy with a CUE native way of expressing inputs. We do this already anyway in non-Dagger projects - we have a root env.schema.cue file that is copied to env.cue as step 1 of a setting up a dev machine. After being replaced/refined with concrete values from the developer, the schema file validates the env file since it's in the same package. Other configuration packages import this env package and use it to load in secrets etc.

To manage secrets we also have an ...

serene thistleBOT
#

In this scenario, wouldnโ€™t there be a state file named.dagger/pr-toms-feature/state.json ? Wouldnโ€™t that file contain the state of an environment called pr-toms-feature? How exactly would you define an environment?

๐Ÿ˜„ I had the same thought later actually. That regardless of where we store the state file, it really represents the environment, there for the plan that created it represents the environment. I've edited the proposal to include this.

serene thistleBOT
#

Letโ€™s discuss a dimension that is crucially important to me: code reuse.

A major problem we want to solve with Dagger is the lack of a high-quality ecosystem of reusable CICD code. When I write a new application in Go, Python or Typescript, I can leverage the work of thousands of people via the corresponding package ecosystem. I CICD there is no such ecosystem. Dagger has the ability to change that, and we must design with that priority in mind.

To pick a counter-example: Docker Compo...

autumn swallowBOT
#

Welcome @vast jasper!

undone summit
swift inlet
undone summit
#

I was hoping to know it from y'all ๐Ÿ˜… In following link
https://github.com/cue-lang/cue/issues/804
Under General Evaluation, the OP is writing about merging the sorted list so label matching can be done in < O(n) time? I am assuming by arc here they are talking about some kind of data structure?

GitHub

Originally opened by @mpvl in cuelang/cue#804 This Issue is an umbrella issue for all performance-related issues. Below is a small selection of the type of performance improvements that are being c...

silent agate
silent agate
#

(in cue as a separate, isolated, hermetic scope that does not import anything)

winter linden
#

Seems like a good fit for platforms like Deno that have no choice but to support posix because thatโ€™s what millions of JS developers expect. Their only choice is to bolt ACLs on top of APIs they donโ€™t control. We have the luxury of breaking the dependency on posix because cloud engineers/SREs (our developer demographic) have been trained to expect that their pipelines will run in a distributed system, and that if they need to run posix-dependent code, they can always fire up a container.

TLDR we can do better because we have more advantageous constraints than Deno

silent agate
#

Sorry if I'm being dense, but I don't understand how posix or a dependency on it relates to the issue of preventing reusable packages from accessing host resources, or a Dagger api that uses permissions or indirection of some kind. Can you help? I generally need more low-level mechanical examples if you can

winter linden
#

Host access APIs

winter linden
autumn swallowBOT
#

Welcome @sacred chasm!

winter linden
#

@silent agate Starting a thread on buildkit resources ๐Ÿ™‚ If anyone has good resources, please share!

autumn swallowBOT
#

Welcome @oak estuary!

swift inlet
autumn swallowBOT
#

Welcome @timid epoch!

undone summit
#

it's an []* Vertex type

#

but I'd still need to understand the purpose of arc if I go with first performance issue (using Merge sort and matching the label in < O(n) time)

undone summit
autumn swallowBOT
#

Welcome @river rock!

wraith niche
river rock
#

Glad to finally have hands on Dagger ๐Ÿ˜„

wraith niche
undone summit
#

@wraith niche sure, I meant probably a performance improvement on cue repository (which could help dagger in some manner?) I haven't picked up any issue as of yet. But @swift inlet directed me to future roadmap of cue in performance issue. And I want to find a good first issue to start with. Does that explain your question?

silent agate
silent agate
#

I just learned that you can't close the root level struct. Even though you can enforce the types for root struct keys, you cannot prevent other keys from being added. ๐Ÿ˜ฌ

turbid tulip
#

@winter linden @silent agate Marcel talks about the Value lattice in more depth here: https://www.youtube.com/watch?v=jSRXobu1jHk

In this talk, we introduce CUE, a new aspect-oriented, constraint-based configuration language that deploys a more formal approach to configuration aimed at solving many of the issues that persist with more conventional approaches. You will leave with an understanding of the CUE language, and an appreciation of how it can help mitigate the chall...

โ–ถ Play video
#

~18min

winter linden
#

Looking at the answers to registration forms, it looks like โ€œparity between CI and local developmentโ€ is a big pain point for a lot of peopleโ€ฆ

turbid tulip
#

@winter linden I like hearing that. ๐Ÿ™‚

swift inlet
turbid tulip
winter linden
#

Reminds me of openstack as an attempt to solve cross-cloud VM portability. In the end itโ€™s just a bandaid

#

Actually this reminds me of Eucalyptus

#

Early attempt at an API-compatible open-source AWS clone

swift inlet
turbid tulip
#

Interesting. I hadn't heard of that. That sounds like an enormous errort.

winter linden
#

Yes it failed

#

10 years ago

turbid tulip
winter linden
#

It appears we are doing for CICD infrastructure what Docker did to app hosting infrastructure ๐Ÿ™‚

turbid tulip
#

Yeah, I definitely see the parallels.

#

Not too surprising, given what you, @wraith niche, and @cloud canyon did at Docker. ๐Ÿ™‚

winter linden
#

Whatโ€™s funny is that the infrastructure water line has moved up since then

turbid tulip
#

In part because of Docker and containers, Iโ€™d say.

#

And systems and tools built around them.

winter linden
#

Yes exactly. Those are infrastructure now. Same problems have moved up.

turbid tulip
#

Iโ€™m very much looking forward to building amazing, solid, and valuable tooling around making that easier with you all.

serene thistleBOT
#

I feel like @talentedmrjones's proposal addressed the security concern of host local access by performing static analysis, preventing imported packages from accessing host resources.

As for package re-usability, I feel like that's the job of the package author. We can provide security guarantees but we cannot guarantee re-usability without collaboration. As in, a layer of indirection won't necessarily make a package reusable if it wasn't designed this way.

A package can hard...

serene thistleBOT
#

I feel like @talentedmrjones's proposal addressed the security concern of host local access by performing static analysis, preventing imported packages from accessing host resources.

As for package re-usability, I feel like that's the job of the package author. We can provide security guarantees but we cannot guarantee re-usability without collaboration. As in, a layer of indirection won't necessarily make a package reusable if it wasn't designed this way.

A packag...

serene thistleBOT
#

That doesnโ€™t mean we shouldnโ€™t take every opportunity to make it as easy as possible to write secure and portable code for Dagger. Otherwise, why bother to make any improvement to security or portability at all?

I see the indirection file as an alternative UI for achieving the same result.

I'm failing to imagine a configuration where the indirection makes a package more portable than forbidding packages to access local resources (i.e. the original proposal).

It's a trade-off in UI....

serene thistleBOT
#

I'm failing to imagine a configuration where the indirection makes a package more portable than forbidding packages to access local resources (i.e. the original proposal).

Itโ€™s a developer experience issue. Hereโ€™s a trivial example:

Good snippet:

// My custom transformation pipeline
#Transform: {
  // Input directory
  input: dagger.#Directory
  // Output directory
  output: dagger.#Directory
}

Bad snippet:

// My custom transformation pipeline
#Transform...
serene thistleBOT
#

Itโ€™s a developer experience issue. Hereโ€™s a trivial example:

100%. Either approaches are as secure/portable, the only difference is in DX.

Hopefully we agree that the first snippet is good, and the second is bad.

Yes

Where we disagree is on whether the โ€œbad snippetโ€ should be allowed by our API at all. I say no, and you say yes.

It's a trade-off between DX and UX. Yes, it's going to be a nuisance to learn there's a field which you cannot set in packages. To compensate, we...

#

Itโ€™s a developer experience issue. Hereโ€™s a trivial example:

100%. Either approaches are as secure/portable, the only difference is in DX.

Hopefully we agree that the first snippet is good, and the second is bad.

Yes

Where we disagree is on whether the โ€œbad snippetโ€ should be allowed by our API at all. I say no, and you say yes.

It's a trade-off between DX and UX. Yes, it's going to be a nuisance to learn there's a field which you cannot set in packa...

silent agate
#

๐Ÿ‘€ Lots of great input here!

#

I think I'm on to something.... hope to have something more concrete to show tomorrow or monday latest

serene thistleBOT
#

100%. Either approaches are as secure/portable, the only difference is in DX.

I disagree, but understand why you think that: you are assuming that all solutions (with or without indirection) eventually result in all information being 1) merged in a single CUE lattice, 2) from files all living in the same git repo.

I actually think the mapping of client resources should be defined in a client-specific configuration. That configuration should not be merged in the same CUE lattice as the...

serene thistleBOT
#

For clarity I think we need to speak in terms of a "project author" and a the "package author".
The package author is writing a package which could could be a single component such as yarn.#Package or a custom dagger.#Plan as an entire collection of resources, and this package is intended to be imported into a project.

The project author is the engineer writing a plan to deploy their application.

Package authors should generally avoid (and be prevented) from referencing host resources....

serene thistleBOT
#

I can imagine in dynamic scenarios, especially in CI pipelines (circleci, gitlab, etc) that the contents of the sandbox scope might be dynamically generated. So maybe the sandbox scope could include json and yaml as well as cue, and even unify multiple files. Perhaps those are specified as [...string] in the plan? Or by command line flag. Or both and the CLI flag overwrites the plan

#

For clarity I think we need to speak in terms of a "project author" and a the "package author". The package author is writing a package which could could be a single component such as yarn.#Package or a custom dagger.#Plan as an entire collection of resources, and this package is intended to be imported into a project.

The project author is the engineer writing a plan to deploy their application.

Package authors should generally avoid (and be prevented) from referencing host r...

serene thistleBOT
#

I don't mean to say or imply that we should determine how people break up packages. That's not at all what I'm saying. I wholeheartedly agree it should be up to them.

And I should have been more clear that I'm speaking to a persons intention and perspective more than package organization or structure. If I intend for my package to be imported then I'm authoring a package and I have to keep in mind the implications and consequences of that package's scope. If I'm writing code specific t...

mystic mantle
autumn swallowBOT
#

Welcome @fair scaffold!

nimble stone
#

Hi everyone, I just ran brew outdated and I get a small warning:

โฏ brew outdated
Warning: Calling bottle :unneeded is deprecated! There is no replacement.
Please report this issue to the dagger/tap tap (not Homebrew/brew or Homebrew/core):
  /opt/homebrew/Library/Taps/dagger/homebrew-tap/dagger.rb:9

it's just a warning, I don't think it's massively important but there it is ๐Ÿ™‚

wraith niche
wraith niche
autumn swallowBOT
#

Welcome @weary mantle!

weary mantle
#

Hi

autumn swallowBOT
#

Welcome @terse tinsel!

terse tinsel
#

Hi

winter linden
#

Welcome ๐Ÿ™‚

weary mantle
#

Thanks @winter linden

autumn swallowBOT
#

Welcome @stone jay!

stone jay
#

Hello there ๐Ÿ™‚

autumn swallowBOT
#

Welcome @blissful grove!

blissful grove
#

Hey all ๐Ÿ‘‹
Thanks for the invite.

autumn swallowBOT
#

Welcome @fringe marlin!

fringe marlin
#

Hi all, thanks for opening the door. Curious to poke around, that Dagger episode of the Ship It podcast rocked ๐Ÿ™‚

winter linden
#

Thanks ๐Ÿ™‚ Lots of improvements underway, make sure to let us know if you encounter an issue - itโ€™s likely to be fixed in the coming weeks

zinc coral
#

Hello there, I'm currently doing research to make a presentation of what is Dagger and why it's awesome and because of my young experience in IT, I would like to know if somebody can give me a feedback of what changed in your project development with Dagger to complete my own experience ?

zinc coral
#

Don't hesitate to DM me ๐Ÿ˜

winter linden
#

@zinc coral thatโ€™s great!when is your presentation due? We do a lot of user interviews, we could mention your presentation and aak of theyโ€™re willing to share some of their feedback with you. Is it for a school project, or work?

zinc coral
#

I don't have the date atm, I will choose one when everything will be ready

winter linden
autumn swallowBOT
#

Welcome @wind matrix!

autumn swallowBOT
#

Welcome @oak sand!

autumn swallowBOT
#

Welcome @silent moon!

silent moon
#

๐Ÿ‘‹ - hi folks, excited to take Dagger for a spin ๐Ÿ™‚

silent moon
winter linden
#

Welcome @silent moon , abd appreciate the perspective ๐Ÿ™‚

#

Note there has been discussion of 2-way compat betwen Dagger and Github Actions

silent moon
winter linden
#

Correct you could wrap an existing GH action into a Dagger action with minimal effort. You would still write the wrapper in Cue but could be a very easy path

#

At least thatโ€™s the theory

#

And in any case you can write Dagger actions in any language. Shell python typescript etc. Cue is the declarative wrapper that allows cross-language composition into a DAG

autumn swallowBOT
#

Welcome @raw crescent!

raw crescent
#

Hello everyone!

#

Just landed here ๐Ÿ™‚

winter linden
#

Welcome ๐Ÿ™‚

autumn swallowBOT
#

Welcome @quartz pumice!

quartz pumice
#

Hi everyone just landed here from down under

winter linden
#

Make yourself at home, if you get stuck or confused please let us know. The more feedback you send us, the faster we can improve Dagger and launch it into the world ๐Ÿ™‚

patent stirrup
#

Hello to the person from Twitter who wants to discuss SBOMs

#

Feel free to ping me here or send me a pm

winter linden
#

cc @meager stream ๐Ÿ™‚

patent stirrup
#

I may be a bit slow to respond, feeling a bit sick today

meager stream
#

Thanks @winter linden for pointing me in this direction. And hello @patent stirrup! Hope you get feeling better. Iโ€™m interested in learning about SBOMs and where things are related to them. Iโ€™ve been experimenting/playing around with some graph database action (Neo4j) that graphs the relationships between container image layers and tags. Iโ€™m also looking at adding nodes to represent whatโ€™s running in our k8s clusters. By adding in SBOM nodes to the graph, Iโ€™m interested in the ability to say โ€œdependency X has problems, what images running in our cluster needs to be updated?โ€ Obviously, to do that, I need to know whatโ€™s baked in. Iโ€™ve seen SBOMs mentioned over the years, but havenโ€™t updated myself in a while. Soโ€ฆ here I am! Where can I get started? What work is being done? Etc. etc.

patent stirrup
#

I need to write about this stuff, so either way this will help me too

winter linden
#

SBOM

autumn swallowBOT
#

Welcome @final peak!

autumn swallowBOT
#

Welcome @inland smelt!

autumn swallowBOT
#

Welcome @green spire!

autumn swallowBOT
#

Welcome @last vector!

autumn swallowBOT
#

Welcome @slender orbit!

autumn swallowBOT
#

Welcome @tropic crown!

winter linden
#

Welcome everyone!

turbid tulip
#

Welcome, @final peak @inland smelt @green spire @last vector @slender orbit @tropic crown! Let us know if you have any questions, feedback, ideas, etc.

autumn swallowBOT
#

Welcome @patent yacht!

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @unborn tusk!

autumn swallowBOT
#

Welcome @hardy plaza!

autumn swallowBOT
#

Welcome @vast sand!

vast sand
#

Hey everyone ๐Ÿ™‚ Thanks for the alpha invite, excited to try Dagger with my company!

winter linden
#

FYI, now there are more active developers working on Dagger, weโ€™re experimenting with an open audio channel to have more design discussions in the open. If you see people in #dev-audio , feel free to join. Please mute yourselves to avoid disrupting conversations. But if you do want to participate in the topic, you are welcome to. If it gets too crowded, we can always adjust the tooling (moderation etc)

silent agate
#

Anyone else old enough to remember dial-up bulletin boards (BBS) before internet was widely available? I was a daily visitor to one throughout the 90s. It was a magical time of text-based graphics! Anywho I'm looking to use Dagger to deploy MajorBBS to EC2 so I can host a retro BBS and play some of those old multiplayer text games

turbid tulip
#

@silent agate You're old. That was before my time.

#

๐Ÿ˜‰

silent agate
turbid tulip
silent agate
#

You'll have to join me for Cybertank and Trade Wars

turbid tulip
#

I'd do that!

silent agate
#

perhaps I'll host it in my closet with my gigabit fiber ๐Ÿ˜œ

turbid tulip
#

Get an RPi ๐Ÿ™‚

autumn swallowBOT
#

Welcome @hollow moat!

autumn swallowBOT
#

Welcome @fossil pine!

autumn swallowBOT
#

Welcome @dense shell!

autumn swallowBOT
#

Welcome @thorny juniper!

thorny juniper
#

Hello, excited after hearing the ChangeLog podcast

winter linden
#

Welcome ๐Ÿ™‚

thorny juniper
#

Upon first glance, it seems similar to what Waypoint is trying achieve except its way more configurable and declarative using CUE where as Waypoint is limited to its plugins and supported features like Terraform. Am I way off?

winter linden
#

Not too far off. One big difference with is that Waypoint is specialized deployment tool. Dagger is a framework for developing any kind of CICD pipeline.

#

So you can implement any deployment logic you want on top of Dagger - including invoking Waypoint itself, or replicating its features. But the opposite is not true.

wraith niche
#

๐Ÿš€ dagger v0.1.0-alpha.29 is out!

Release highlights:

  • Support different platforms (OS / Architecture) when creating a new Environment
  • Windows is now 100% on-par with MacOS / Linux (was missing support for input dir and input stream)
  • Universe: adds support for Trivy (vulnerability scanner for container images, file systems and git repositories)
  • Universe: docker package can now auto-replace local containers
  • Universe: supports AWS CLI v2
  • Other various improvements and reliability fixes

Complete changelog: https://github.com/dagger/dagger/releases/tag/v0.1.0-alpha.28

Install & Upgrade instructions: https://docs.dagger.io/1001/install/

As usual, if you need any help or spot any bug, please let us know.

autumn swallowBOT
#

Welcome @lost prawn!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @tall quiver!

autumn swallowBOT
#

Welcome @eternal rain!

wraith niche
#

Welcome everyone! (Pascal ๐Ÿ‘‹)

wraith niche
wraith niche
autumn swallowBOT
#

Welcome @maiden cloud!

autumn swallowBOT
#

Welcome @clear gorge!

wraith niche
#

๐Ÿ“บ In case you prefer videos over written docs, here is a fresh one from @silent agate walking you through the Dagger tutorial:

https://www.youtube.com/watch?v=QvyB3m9Fti0

This should give you what you need in less than 20 minutes, so you can write your own Dagger plan. If not, please don't hesitate to ask question on #help-old-do-not-post!

In this tutorial, you will learn the basics of Dagger by building a Dagger project from scratch. This simple project deploys a React application to your local machine via Docker.

More tutorials on https://dagger.io

Music by Joystock - https://www.joystock.org/

โ–ถ Play video
autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @swift barn!

rain oriole
#

I gotta sayโ€ฆ Iโ€™ve enjoyed taking Dagger for a spin.

When I first saw Solomon at DockerCon 2021 announcing Dagger, at first I didnโ€™t quite get what Dagger was, but I also tried Docker at first a couple of months after it was announced until today. I remember the learning curve, and how it got better with time. Itโ€™s such a massive part of my day to day, so with this new projectโ€ฆ I was interested.

Even though there were some pain points, I find that most of that is being addressed. I saw CUE some time ago, but didnโ€™t see how Iโ€™d want to use it. Dagger brought CUE to life for me and now I feel itchy to migrate when Iโ€™m using something else (YAML, Makefile, bash scripts, Helm charts!!โ€ฆ.).

The team has been really helpful here. Iโ€™m grateful for all your work and I love to see you guys discuss things, even though I donโ€™t understand all of it. Canโ€™t wait to try the new Europa, and see Dagger get better and more useful with time. Iโ€™m looking forward to being able to adopt it company-wide. It has so much potential. ๐Ÿ™‚

winter linden
#

What a nice way to start the day! Thanks @rain oriole ๐Ÿ™‚

Yes I agree it is reminiscent of the early days of Dockerโ€ฆ Kind of different from everything else, so it takes time to figure out when and how to use it. Personally I can feel the picture getting clearer over the last few months.

turbid tulip
#

Thanks, @rain oriole! Glad you're so excited about Dagger! And I'm glad that it brought CUE to life for you. It's... an amazing config language.

autumn swallowBOT
#

Welcome @sacred mango!

winter linden
#

You made it @sacred mango ๐Ÿ™‚

sacred mango
# winter linden You made it <@832236830454972426> ๐Ÿ™‚

Thanks! Took some email digging! ๐Ÿ˜…

A bit about myself for the amazing team here.
I'm Eyal Mor, a developer based out of Tel-Aviv/Israel.

Currently working for Autodesk as a SRE/DevOps/Platform/Fullstack engineer (I can't seem to choose what I like!)

I heard of dagger through a podcast, and it immediately hit the right notes!

Incidentally, my team has been developing a similar (albeit powered down) tool similar to Dagger.
Dagger has made me wonder if we can contribute our time into a community that is aiming to solve a problem which everyone is dealing with today.
Super excited to get started with dagger, this project is what i've been dreaming of for a long time ๐Ÿ˜„

winter linden
#

Thatโ€™s exciting! Yes I noticed that too, a lot of teams forced to develop their own in-house solutionโ€ฆ I would be interested to learn more about your in-house tool, and of course how Dagger can help you ๐Ÿ™‚ Anything we can do to help, let us know!

autumn swallowBOT
#

Welcome @shell sparrow!

sacred mango
winter linden
#
  • Iโ€™ll DM you to schedule a video call (if thatโ€™s OK) to ask you questions about your setup
  • Anything related to your use of Dagger, you can use #general, #help-old-do-not-post, github issues, github discussions as you see fit
  • In #dev we discuss the internals of Dagger, future improvements, possible contributions etc
rain oriole
#

How cool is this? ๐Ÿ˜ƒ

$ alias dc="cue export compose.cue --out yaml | docker compose -f /dev/stdin"
$ dc up -d
winter linden
#

lol ๐Ÿ™‚

#

nice

rain oriole
#

Still thinking how I can integrate it with dagger. The best I can think of is to have dagger save a docker-compose.yaml on the host (warning that it's generated and shouldn't be edited), and use docker compose normally. I want to use dagger to build the image, and CUE to abstract/reuse that yaml, but I still need docker compose to run its commands.

winter linden
#

Check out my Dockercon demo, thereโ€™s a docker compose integration in there

#

You donโ€™t need to generate anything ๐Ÿ™‚

rain oriole
#

I saw that, but you're doing it the other way around. Reading the compose into dagger. What I want is to reduce duplication in writing the same compose in lots of websites, so I want to use dagger/cue to write it instead.

winter linden
#

The most promising workflow IMO:

  • Keep docker-compose.yaml as is, developers can continue using it AND modifying it without having to learn anything new
  • In your Dagger plan, load docker-compose.yaml on the fly, then use its contents to do a variety of things:
  • You can call docker-compose up from Dagger of course - even on the exact docker-compose.yaml, or after tweaking it on the fly
  • You can extract parts of the docker-compose.yaml to generate other configs, for example Kub resources, ECS manifest etc. This gives you a continuous compat bridge between docker-compose and other container deployment services
winter linden
winter linden
#

Just make sure you donโ€™t actually have that problem ๐Ÿ˜‰ Getting people to switch to new tools is very hard, unless you can force them

rain oriole
#

Yeah, it's not a problem.

winter linden
#

Then I guess the ideal workflow for you is like your alias dc, but in Dagger ๐Ÿ™‚

cloud canyon
rain oriole
#

How do I write that source to the host system?

cloud canyon
#

oh I thought in the dc alias you were just piping it to compose, not writing it?

#

bah uhm

rain oriole
#

Maybe dagger query source | docker compose -f /dev/stdin?

#

Didn't think of that

winter linden
#

In Europa there is a context.export ๐Ÿ™‚

#

So you can write to local directories

#

coming soon โ„ข๏ธ

cloud canyon
#

dagger query compose.source -f yaml > docker-compose.yaml

#

yeah

cloud canyon
#

-f raw

#

it's already yaml

rain oriole
#

No, I didn't know how to actually pipe until I remembered query, so piping query to docker compose is great!

#

I'm excited about this, it's been on my mind for a while! I've told @wraith niche today that my biggest pain is having lots of websites with lots of duplicated Dockerfile, compose.yaml and Jenkinsfile. Which is a nightmare to update when something changes. And they do!

#

Our developers don't actually mess with any of those files. They just use how I set them.

winter linden
#

In your case, developers would keep using docker-compose up, just with a generater compose file instead of manually edited one. Right?

rain oriole
#

Yep

#

Which allows me to update those configs more easily across the board.

#

I'm talking over 150+ websites.

rain oriole
#

It works! dagger -e compose query source -f text | dc -f /dev/stdin --project-directory .

#

Easier to reuse without anchors.

autumn swallowBOT
#

Welcome @storm zinc!

autumn swallowBOT
#

Welcome @winged falcon!

silk apex
#

Et very good read about cue

#

A bit older to mention dagger sadly

turbid tulip
#

@silk apex @muted gale is great! I've enjoyed having him as an advocate for CUE.

autumn swallowBOT
#

Welcome @fossil swift!

winter linden
#

Experimenting with live coding on #dev-audio, and the new โ€œeventsโ€ feature. Letโ€™s see if itโ€™s helpful!

autumn swallowBOT
#

Welcome @swift barn!

kindred flume
#

Should docs.dagger.io repo be available to edit? I'm working through the docs today and spotted some typos

turbid tulip
winter linden
#

Thanks for spotting them @kindred flume !

turbid tulip
#

Yes, thanks!

kindred flume
#

Happy to do a little to help FYI, that YT video walkthrough finally motivated me to dive in today.

winter linden
#

That will make @silent agate happy ๐Ÿ™‚

turbid tulip
#

@kindred flume Really glad to hear that. ๐Ÿ™‚ That will definitely make @silent agate happy. ๐Ÿ™‚

#

Let us know if you need any help, want to talk through Dagger or CUE or Buildkit.

#

I can't claim expertise on Dagger or Buildkit yet, but my CUE is pretty solid.

kindred flume
#

Thanks! I'm working through the Cue tutorial now. This tool alone is very cool. Never heard of it before the Dagger docs.

#

also, is the Cue Playground broken for others too, or is it just me?

#

not hard to run local, but the dagger docs link heavily to it

turbid tulip
kindred flume
#

ok, that's the same error i'm getting

autumn swallowBOT
#

Welcome @sterile canyon!

kindred flume
#

@turbid tulip Do i need to worry about that DCO error in the docs PR?

turbid tulip
#

@kindred flume I think that is necessary, yes.

#

<@&785926252749651978> Anything else @kindred flume should know? (this is my first time bumping into the DCO)

kindred flume
#

ok cool, i'll take care of it now

turbid tulip
#

๐Ÿ‘๐Ÿป

kindred flume
#

all fixed up, thanks!

autumn swallowBOT
#

Welcome @cold ravine!

autumn swallowBOT
#

Welcome @bold fox!

autumn swallowBOT
#

Welcome @robust canopy!

robust canopy
#

Hi there everybody! I just got the invite to early access!

#

Looking forward to give it a try and contribute, to best I can! ๐Ÿ™‚

winter linden
#

Welcome ๐Ÿ™‚

winter linden
#

Thanks @heavy gazelle for promoting Dagger ๐Ÿ™‚ That was such a fun episode, I hope we get to record a new one together soon. Perhaps Europa release will be the excuse. We can live code something together maybe.

https://twitter.com/shipitfm/status/1463168538651340800

๐Ÿ’ก maybe it's time to think more deeply about everything that Buildkit offers...

"Everybody else uses Buildkit to build. Dagger is using Buildkit for much more than build."

๐Ÿ—ฃ @solomonstre on https://t.co/QwdjgyCjwK https://t.co/DrG2vCgArL

โ–ถ Play video
heavy gazelle
autumn swallowBOT
#

Welcome @barren sentinel!

#

Welcome @blazing lion!

autumn swallowBOT
#

Welcome @meager fiber!

autumn swallowBOT
#

Welcome @stoic bay!

autumn swallowBOT
#

Welcome @sly jay!

autumn swallowBOT
#

Welcome @torpid wyvern!

turbid tulip
#

Welcome @blazing lion @meager fiber @sly jay @torpid wyvern !

autumn swallowBOT
#

Welcome @untold silo!

#

Welcome @winged wren!

winged wren
#

hey ๐Ÿ‘‹

#

Just read What is Dagger? and wow, this is really exciting

turbid tulip
#

@winged wren I'm glad to hear that! Anything specific that you're excited about?

winged wren
#

Can I start trying/using it at work here? Share with teammates? How should I approach this :p

winter linden
#

Weโ€™ve been iterating on how best to position Daggerโ€ฆ Itโ€™s very flexible so you canโ€™t cover everything it can do. You need an initial focus. โ€œdeploymentโ€ is one possible way to narrow it down

#

@winged wren check out dagger.io itโ€™s a newer iteration of the positioning

#

Dagger is like lego. You stay because of the infinite possibilities. But you started because one day you saw a pirate ship in the store ๐Ÿ™‚ We need to define our pirate ship.

winter linden
winged wren
turbid tulip
winter linden
#

Then you can contribute universe.dagger.io/temporal ๐Ÿ™‚

winged wren
winter linden
#

TBH I had never heard of temporal before, but generally speaking: if thereโ€™s a valid use case for integrating something with Dagger, we want to make it work ๐Ÿ™‚

winter linden
autumn swallowBOT
#

Welcome @sterile tartan!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @glacial cosmos!

autumn swallowBOT
#

Welcome @dim sandal!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @dreamy plover!

winter linden
#

One topic Iโ€™d like to address in that session is runtime parameters, and condition execution. Starting from your use cases @rain oriole @winged wren @blissful bone ๐Ÿ™‚

rain oriole
#

Thatโ€™s 9:15 PM for me, Iโ€™ll be putting my kid to bed. Iโ€™ll join when I can.

winter linden
#

I can relate ๐Ÿ™‚

winged wren
#

I might be able to join ๐Ÿ™‚

autumn swallowBOT
#

Welcome @lone salmon!

turbid tulip
#

๐Ÿš€ dagger v0.1.0-alpha.31 is out (as of Monday night)!

Release highlights:

  • Add support for tcp:// DOCKER_HOST in docker.#Command, docker.#Load, docker.#Run h/t @heavy gazelle
  • Add tests for http.#Wait
  • The first parts of @cloud canyon's work towards our Europa release.
    • runtime: support legacy Pipelines in new execution engine
    • runtime: new execution engine
    • runtime: support for context imports
    • runtime: context: support secret environment variables
    • runtime: context: support secret files
    • dagger.#FS support

Complete changelog: https://github.com/dagger/dagger/releases/tag/v0.1.0-alpha.31

Install & Upgrade instructions: https://docs.dagger.io/1001/install/

As usual, if you need any help or spot any bug, please let us know.

winter linden
#

For tomorrowโ€™s community call weโ€™ll try porting a real-world Dagger configuration to the new Europa standard library. Featuring special guest @heavy gazelle ๐Ÿ™‚

As usual bring your ideas and questions.

https://discord.gg/mWrVPmYE?event=918223847910686802

rain oriole
#

I'm interested but I won't be able to attend. That's the time I pick up my kid ๐Ÿ™‚

winter linden
#

Going for lunch. Will cleanup our notes from the community call after, thanks everyone for participating!

turbid tulip
#

@winter linden Looking forward to seeing them! Curious what you uncovered with @heavy gazelle.

heavy gazelle
#

Thank you @winter linden, that was so good, looking forward to episode 2 in the week after next ๐Ÿ˜‰

autumn swallowBOT
#

Welcome @sullen cargo!

#

Welcome @hollow surge!

winter linden
#

Completely unfinished. Weโ€™ll continue tomorrow

turbid tulip
turbid tulip
#

I like it! It'll be fun to get the rest of the config built. ๐Ÿ™‚

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @tame oxide!

tame oxide
#

Hey all, any admins here who could help? I applied for Dagger back in September and received an invite on Nov 23rd, I've only just seen it as it was in my junk box. The invite has now expired; would love to get a new one ๐Ÿ™‚ or do I need to re-apply to early access?

wraith niche
#

If anyone here does not have access to the repository or the docs yet, please ping me. I'll give you access right away.

winter linden
turbid tulip
winter linden
#

@rain oriole let me know if another time works better for you

rain oriole
#

For me Iโ€™m mostly free at 21h30/22h which is 3 pm PST.

winter linden
#

Ok I can do both ๐Ÿ™‚ This afternoon is all Europa DX for me anyway

winter linden
#

Community call discussion

autumn swallowBOT
#

Welcome @lilac void!

lilac void
#

Hey, thanks for the invite. Excited to learn more about Dagger. Iโ€™ll dive into docs as soon as I have some free time

autumn swallowBOT
#

Welcome @leaden patio!

swift inlet
leaden patio
leaden patio
#

Et Val ?โ˜บ๏ธ

meager fiber
#

vendors

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @eager lance!

heavy gazelle
#

Dagger (via GitHub Actions) just deployed https://changelog.com . The new pipeline is 2 minutes quicker than what we had previously with CircleCI. This is a summary of the entire story & code behind it: https://github.com/thechangelog/changelog.com/pull/395

Listen to @turbid tulip & @swift inlet tell us more about it next week on https://changelog.com/shipit

Also follow @winter linden's attempts to break changelog.com production: https://github.com/thechangelog/changelog.com/pull/401

GitHub

Capture deps, test & assets in Dagger
Build & publish prod container image to DockerHub
Run it in a GitHub Actions - Tailscale integration + github-action
Switch to dagger &g...

Changelog

A show about getting your best ideas into the world and seeing what happens. We talk about code, ops, infrastructure, and the people that make it happen.

GitHub

Raw snapshot of experimenting with Dagger Europa API. Cleanup coming soon :)

autumn swallowBOT
#

Welcome @pine jetty!

winter linden
#

Awesome @heavy gazelle !! What a great milestone

autumn swallowBOT
#

Welcome @zinc dawn!

#

Welcome @short gust!

short gust
autumn swallowBOT
#

Welcome @stray jolt!

autumn swallowBOT
#

Welcome @orchid rapids!

#

Welcome @swift barn!

swift barn
winter linden
#

Welcome @swift barn ๐Ÿ™‚

#

If you get stuck or have questions, donโ€™t hesitate.

#

We also have a big release coming in January, with major UX improvements. All the user requests we couldnโ€™t fit in smaller incremental releases basically

swift barn
#

thanks

autumn swallowBOT
#

Welcome @manic heath!

orchid rapids
#

looking forward to trying out Dagger this week, read the docs so far and it looks really cool and intuitive!

autumn swallowBOT
#

Welcome @naive sequoia!

naive sequoia
#

๐Ÿ‘‹

winter linden
#

Welcome ๐Ÿ™‚

autumn swallowBOT
#

Welcome @knotty copper!

heavy gazelle
autumn swallowBOT
#

Welcome @rigid storm!

autumn swallowBOT
#

Welcome @mystic bronze!

autumn swallowBOT
#

Welcome @snow sequoia!

snow sequoia
#

๐Ÿ‘‹ Hello and thanks for the invite

wraith niche
autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @delicate forge!

autumn swallowBOT
#

Welcome @frank frost!

autumn swallowBOT
#

Welcome @humble marten!

autumn swallowBOT
#

Welcome @ashen ice!

autumn swallowBOT
#

Welcome @cedar folio!

autumn swallowBOT
#

Welcome @sharp oracle!

winter linden
#

Hi everyone, the whole Dagger team is taking time off the last week of the year, so we will not be as responsive. We hope you are able to take time off too. See you next year, we have a lot of excitement planned for you. First our Europa release, our largest yet! And thenโ€ฆ launch preparations ๐Ÿ˜

In the meantimeโ€ฆ happy holidays !

rain oriole
#

Happy holidays! ๐Ÿฅณ

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @latent mural!

autumn swallowBOT
#

Welcome @vapid stag!

silk apex
#

happy new year to all the dagger community

#

looking forward to discover the europa release ๐Ÿ˜„

winter linden
bronze storm
#

looking forward to trying out Dagger this week, reading the docs and trying to create CI workflow to setup home cluster with all necessary deployments

turbid tulip
autumn swallowBOT
#

Welcome @sick rain!

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @pastel magnet!

#

Welcome @violet socket!

violet socket
#

Thanks for the invite, excited to poke around soon ๐Ÿ˜„

turbid tulip
#

Welcome, @violet socket! Let us know how we can help you out!

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @hushed dock!

hushed dock
#

Thanks for the invite, this week Iโ€™m on PTO but definitely will give it a spin later, and I have plenty of docs to read through

autumn swallowBOT
#

Welcome @swift barn!

swift barn
#

Hello everyone ๐Ÿ‘‹
Thanks for the invite ๐Ÿค—
I played with CUE before and can't wait to see how you used it to make CI/local experience awesome ๐Ÿ’ช

winter linden
#

Thanks ! Itโ€™s still work in progress ๐Ÿ˜… Big UX improvement dropping soon.

autumn swallowBOT
#

Welcome @feral herald!

autumn swallowBOT
#

Welcome @scenic sequoia!

autumn swallowBOT
#

Welcome @robust agate!

autumn swallowBOT
#

Welcome @patent juniper!

winter linden
#

Welcome to the other side ๐Ÿ™‚

autumn swallowBOT
#

Welcome @ornate wave!

autumn swallowBOT
#

Welcome @naive skiff!

autumn swallowBOT
#

Welcome @pure holly!

autumn swallowBOT
#

Welcome @clear oriole!

autumn swallowBOT
#

Welcome @rotund crystal!

#

Welcome @steel shadow!

autumn swallowBOT
#

Welcome @tight vigil!

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @grand ravine!

grand ravine
#

hello

heavy gazelle
#

It's nice to see you @grand ravine - what brings you here? ๐Ÿ˜‰

grand ravine
heavy gazelle
grand ravine
heavy gazelle
grand ravine
autumn swallowBOT
#

Welcome @dire hawk!

#

Welcome @buoyant solar!

#

Welcome @frosty tendon!

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @noble tinsel!

autumn swallowBOT
#

Welcome @short summit!

#

Welcome @odd oyster!

autumn swallowBOT
#

Welcome @solemn schooner!

#

Welcome @inner rain!

solemn schooner
#

Hello - just starting to read docs as @grand ravine
Thanks for the invitation ๐Ÿ™‚

wraith niche
#

Welcome @solemn schooner and @grand ravine, let us know if you need any help!

autumn swallowBOT
#

Welcome @raven mauve!

raven mauve
#

Hi everyone and thank you fro the invitation! Let's dive into the docs

turbid tulip
#

Welcome, @raven mauve!

autumn swallowBOT
#

Welcome @ornate cedar!

autumn swallowBOT
#

Welcome @languid terrace!

autumn swallowBOT
#

Welcome @brazen matrix!

#

Welcome @open wyvern!

autumn swallowBOT
#

Welcome @mild scarab!

autumn swallowBOT
#

Welcome @silent sluice!

autumn swallowBOT
#

Welcome @uneven haven!

autumn swallowBOT
#

Welcome @tawdry void!

#

Welcome @bitter granite!

autumn swallowBOT
#

Welcome @sour imp!

autumn swallowBOT
#

Welcome @wet wadi!

autumn swallowBOT
#

Welcome @silk temple!

turbid tulip
autumn swallowBOT
#

Welcome @slate beacon!

winter linden
#

I found this comment insightful and, although the author is talking about build systems, I think it applies 100% to Dagger and we should take it seriously.

https://news.ycombinator.com/item?id=29871438

saagarjha

Considering that all build systems must keep a dependency graph internally, itโ€™s surprising how many of them make it incredibly difficult to inspect why things are being rebuilt. I donโ€™t really get it either, Iโ€™ve talked to a lot of people and getting feedback on how the build system is doing its task is one of the biggest complaints I see (othe...

turbid tulip
#

That would be killer for this.

autumn swallowBOT
#

Welcome @woven laurel!

autumn swallowBOT
#

Welcome @frail latch!

frail latch
#

Hello! Thank you for the invitation! I'm going to read the documentation to learn more ๐Ÿ™‚

autumn swallowBOT
#

Welcome @blissful gulch!

heavy gazelle
heavy gazelle
winter linden
winter linden
#

With the ability to connect that back to CUE values (and from there, to Dagger engine operations) we could present something very powerful to end users..

#

I think the first step, though, would be to present a full picture of the DAG to end users, even without details on what was changed or executed this time. Just a static map of the DAG.

turbid tulip
#

Yeah, that'd be really good.

winter linden
#

There was a discussion in universe not long ago, about the idea of generating a standard graphviz output from a given Dagger config, to then visualize with a variety of graphviz-compatible tools and libraries

#

Food for though if anyone is looking for a fun side project ๐Ÿ™‚

silent agate
#

I was noodling on similar ideas recently. Wondering if there was some useful synergy between the CUE value lattice and a graph database...

autumn swallowBOT
#

Welcome @solemn harness!

#

Welcome @fiery anchor!

turbid tulip
fiery anchor
#

Hello - thanks for the invitation! I just finished reading the non-reference docs, which provide a very nice intro. One topic I was surprised to not see addressed is multi-node coordination - a particularly tricky concern for portable CI. Did I miss something obvious or does anyone have pointers on how Dagger will think about that?

winter linden
#

It definitely is a tricky topic. We will add more content down the road. But there is excellent news in the meantime: we delegate this 100% to buildkit ๐Ÿ™‚ So if you can find a solution in buildkit, you solved the problem for Dagger as well

turbid tulip
autumn swallowBOT
#

Welcome @surreal prism!

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @warm flower!

warm flower
#

Hi everyone! ๐Ÿ™‚

autumn swallowBOT
#

Welcome @mossy turret!

autumn swallowBOT
#

Welcome @ionic lotus!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @digital dagger!

autumn swallowBOT
#

Welcome @regal monolith!

unkempt wigeon
# winter linden I found this comment insightful and, although the author is talking about build ...

I think my original comment that went into how/if to visualize the DAG came from, is my wish I can understand how and what I can "stick together" to get a pipeline written and that I thought CUEs value lattice or/and then the validity of the resulting DAG helps. Now, I don't know if that makes sense at all ๐Ÿ˜… but writing the loosely YAML "stuff" often lefts me (perhaps because I haven't read the documentation) lost.

autumn swallowBOT
#

Welcome @oak valve!

oak valve
#

Hey! Thanks for the invite. Super excited to dig into it more (and it's great seeing CUE get more usage )

unkempt wigeon
autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @dark wave!

turbid tulip
#

๐Ÿš€ dagger v0.1.0-alpha.32 is out (as of Wednesday)!

Release highlights:
- We added support for private repos for dagger mod: https://github.com/dagger/dagger/pull/1186
- Much of work since alpha-31 has been focused on building the core engine for our next major design, codenamed Europa.
- Our intent with Europa:
- Dramatically improving the developer experience and ergonomics of using Dagger, and remove some of the patterns that caused issues in configurations in the past.
- The new dagger.#Plan configuration schema is intended to simplify and consolidate inputs and outputs, secrets, and the actions that plans should take to execute CI/CD pipelines.
- The new implementation of our core types is here: https://github.com/dagger/dagger/tree/main/pkg/dagger.io
- This includes low-level primitives for defining a #Plan, filesystem states (#FS), and a number of engine tasks: https://github.com/dagger/dagger/tree/main/pkg/dagger.io/dagger/engine, including running shell commands, getting source code from git, reading and writing files, pulling and pushing containers, and building from a Dockerfile.
- We are working on a new set of universe packages that utilize these low-level types: https://github.com/dagger/dagger/tree/main/pkg/universe.dagger.io
- These are still in very active development, and some of them simply don't work yet.
- You can see examples of how the Dagger team has used Europa in our tests
- For #Plan: https://github.com/dagger/dagger/blob/main/tests/plan.bats + https://github.com/dagger/dagger/tree/main/tests/plan
- For engine Tasks: https://github.com/dagger/dagger/blob/main/tests/tasks.bats + https://github.com/dagger/dagger/tree/main/tests/tasks
- We are also in the process of converting the changelog.com dagger config (found here: https://github.com/thechangelog/changelog.com/blob/master/2021/dagger/prod_image/main.cue) to Europa, you can find our current versions here: https://github.com/dagger/dagger/tree/main/pkg/universe.dagger.io/examples/changelog.com

Complete changelog: https://github.com/dagger/dagger/releases/tag/v0.1.0-alpha.32

Install and Upgrade instructions: https://docs.dagger.io/1001/install/

As usual, if you need any help or spot any bug, please let us know.

autumn swallowBOT
#

Welcome @light quiver!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @scenic fiber!

autumn swallowBOT
#

Welcome @whole apex!

winter linden
#

For anyone interested in this kind of thing: weโ€™re discussing Daggerโ€™s approach to open-source licensing, branding, and how to build a great community AND business. https://twitter.com/solomonstre/status/1483857267011190787

This is the model we chose for https://t.co/8fo2WhpPce. Red Hat proved that by restricting how your trademark is used, you can build a huge open-source business and brand without restricting how your software is used. You just need to design your business model accordingly :) https://t.co/XtmlRiM9UI

#

I suspect that we will get more questions on this topic as we get closer to launch. We have very specific opinions on this topic, and are happy to share them anytime ๐Ÿ™‚

autumn swallowBOT
#

Welcome @slender star!

autumn swallowBOT
#

Welcome @zinc mirage!

autumn swallowBOT
#

Welcome @spark stag!

autumn swallowBOT
#

Welcome @steep shoal!

autumn swallowBOT
#

Welcome @unreal flower!

autumn swallowBOT
#

Welcome @flint lintel!

autumn swallowBOT
#

Welcome @haughty lark!

haughty lark
#

Hi I am trying to learn about how to write custom CUE templates in Dagger

#

Could anyone tell me what this means?

#
#Input: {
    @dagger(input)
    _
    ...
}

#Output: {
    @dagger(output)
    _
    ...
}
#

I think ... already represents an open struct. Why does it have _ here?

winter linden
#

_ allows it to match non-struct values

winter linden
#

These definitions #Input and #Output are kind of special cases, they were intended as convenience wrappers for @dagger() attributes (annotation, same as Go tags). So that you could set those annotations without learning the extra syntax for attributes. Weโ€™re moving away from using CUE attributes, so these definitions will be deprecated in the next release.

#

If you can share more about your use case, Iโ€™m happy to help you find more useful code examples

autumn swallowBOT
#

Welcome @swift barn!

haughty lark
autumn swallowBOT
#

Welcome @quartz arch!

autumn swallowBOT
#

Welcome @royal drum!

autumn swallowBOT
#

Welcome @frank sigil!

autumn swallowBOT
#

Welcome @violet flicker!

violet flicker
#

Hey, folks ๐Ÿ‘‹๐Ÿฝ

Hope youโ€™re having an awesome Friday! Not sure if this is the right channel for intros/hellos. My name is Derek from South Africa. My colleague told me about Dagger and immediately it sounded like something Iโ€™d want us to use.

Iโ€™m on our companyโ€™s security committee and platform team and Iโ€™m hoping that if I can be an early contributor this will help me convince the teams to use Dagger once itโ€™s production ready. I donโ€™t have any experience in Go but Iโ€™m happy to learn. If thereโ€™s any bugs that need help or small features, etc. Iโ€™m happy to help out ๐Ÿ˜ƒ Also more than happy to help out with documentation and other important stuff that people donโ€™t always like doing but is necessary

autumn swallowBOT
#

Welcome @shut jay!

turbid tulip
#

I'm not sure if we've done a good job of splitting out good starter issues, but we could probably find some stuff that would be good starters. Another thing you could do is begin to work on packages that utilize dagger that would be useful at your work. Hopefully that would help you out and it would give us feedback to make dagger even better.

violet flicker
turbid tulip
silent agate
#

@violet flicker welcome! I think the biggest help is in implementing dagger in real world scenarios and providing feedback on bugs or usability (DX) issues

autumn swallowBOT
#

Welcome @swift barn!

haughty lark
#

It looks like dagger relies on docker to run? What if I want to run dagger as a k8s job or pod?

winter linden
#

Everything is run in buildkit - same backend as a docker build

#

So any valid buildkit installation is also a valid Dagger installation. Including running buildkit on top of kubernetes ๐Ÿ™‚

#

You can configure dagger to use any buildkit daemon. By default, it will bootstrap a buildkit installation automatically, on top of a Docker engine. So Docker is a requirement for easy auto-install of buildkit; but not for running Dagger itself

haughty lark
#

Why does it run on buildkit? In my case I just want to use it to render a couple of yaml files and orchestrate applying order..

#

Nothing to do with buildkit

winter linden
#

Well it has nothing to do with Linux either, but youโ€™re still running it on Linux probably ๐Ÿ™‚

#

Joking aside: we use buildkit as a general-purpose VM. It allows you to run any program as a DAG of nodes running in parallel, instead of a sequential list of operations. Itโ€™s a great fit for CICD pipelines in particular.

haughty lark
#

I see. The buildkit is the workflow manager

winter linden
#

Yes. Using buildkit gives you lots of powerful features for free. For example every operation are automatically cached if poosible, so you get lots of performance optimization out of the box.

#

Every input and output is content-addressed, so you can reliably inspect what changed from one run to the next; get a reliable audit trail, etc

haughty lark
#

Nice!
One more question. Is there any way for Dagger to parse yaml files for inputs?

winter linden
#

Yes CUE supports yaml natively. You can do it either statically with cue import (one time conversion of your yaml file to a cue file), or at runtime with something like:

import (
  โ€œencoding/yamlโ€
)

rawYAML: string
data: yaml.Unmarshal(rawYAML)

// Enforce a schema
data: {
  hello: string
  foo: int
}
#

Then the question is: how do you want to pass the yaml file to Dagger?

  • Do you want to pass the raw contents as a string?
  • Do you want to pass a directory, and have Dagger open the file itself?
  • Something else?
haughty lark
#

Pass it as dagger input

#

currently all values are taken as dagger input xxx

winter linden
#

But you can pass either string inputs, or directory inputs

haughty lark
#

I want to take it like dagger input -f app.yaml

winter linden
#

ok

#

So string input

haughty lark
#

Right.

winter linden
#

So in my example below, you can just mark rawYAML as an input, with rawYAML: string & dagger.#Input

Then dagger input text rawYAML -f app.yaml

#

Oh, I forgot about dagger input yaml. If you use that, then your configuration gets simpler:

data: {
  hello: string
  foo: int
}

Then dagger input yaml data -f app.yaml

#

Then the yaml file is implicitely unmarshaled, and merged at the key data. If the contents of the file match the structure of your CUE value, then the merge succeeds

haughty lark
#

Awesome! That's what I am looking for ๐Ÿ™‚

haughty lark
cloud canyon
#

@haughty lark Thank you! Nice talking to you as well, will look into it

haughty lark
#

How can I get the output data of a struct? I only find dagger output list but that only shows struct

haughty lark
#

What does op.#Load mean?

    #up: [
        op.#Load & {
            from: kubernetes.#Kubectl
        },

        op.#WriteFile & {
            dest:    "/kubeconfig"
            content: TestCluster.kubeconfig
        },
autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @vital brook!

turbid tulip
#

๐Ÿš€ dagger v0.1.0 is out!

Important Notes

This is our first minor release. If you are an early Dagger adopter, we recommend that you lock your pipelines to this version, since we intend to start shipping more meaningful (and potentially breaking) changes in 0.2.0 pre-releases, starting with 0.2.0-alpha.1.

Based on all your feedback, we have been working on a simpler and more intuitive configuration schema which we intend to ship as 0.2.0. Internally, we refer to this as Europa. You see our work on this new schema in dagger.io and universe.dagger.io

Release highlights:
- engine.#Source- https://github.com/dagger/dagger/pull/1312
- This allows Dagger packages to use shell scripts, etc. from the filesystem, rather than needing to embed them in CUE (think go:embed for Dagger)
- rename engine.#Build to engine.#Dockerfile - https://github.com/dagger/dagger/pull/1404
- We started implementing Europa-native packages
- alpine package - https://github.com/dagger/dagger/pull/1449
- netlify package - https://github.com/dagger/dagger/pull/1462
- Add engine.#TransformSecret - https://github.com/dagger/dagger/pull/1435
- This allows secrets to be transformed using CUE functions, allowing for unmarshalling of YAML/JSON, stripping of newlines, etc.
- docker.#Build - Fixed up some issues related to CUE structural cycles and definitions.
- nested #Build - https://github.com/dagger/dagger/pull/1468
- This is working better, but we still have some issues we need to dig into and understand better for deeply nested docker.#Build structs.
- docker.#Run - https://github.com/dagger/dagger/pull/1438
- Updated the struct, so that it can be used in docker.#Build
- Fix missing auth in docker.#Push - https://github.com/dagger/dagger/pull/1448
- Re-implement docker registry parsing - https://github.com/dagger/dagger/pull/1454
- Allow hidden Tasks - https://github.com/dagger/dagger/pull/1403
- This allows package authors to hide tasks within a package.
- Port docker.#Copy to hidden fields - https://github.com/dagger/dagger/pull/1410
- Port engine.#Subdir to hidden fields - https://github.com/dagger/dagger/pull/1406
- Support for partially running a DAG - https://github.com/dagger/dagger/pull/1302
- @hoary spoke cleaned up git repository management - https://github.com/dagger/dagger/pull/1431
- Regular weekly releases h/t @heavy gazelle - https://github.com/dagger/dagger/pull/1372

Complete changelog: https://github.com/dagger/dagger/releases/tag/v0.1.0

Install and Upgrade instructions: https://docs.dagger.io/1001/install/

As usual, if you need any help or spot any bug, please let us know.

turbid tulip
#

๐Ÿ’ฅ

autumn swallowBOT
#

Welcome @timber ermine!

autumn swallowBOT
#

Welcome @solar wharf!

#

Welcome @fast cargo!

autumn swallowBOT
#

Welcome @thorn cedar!

autumn swallowBOT
#

Welcome @dull widget!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @fringe gale!

autumn swallowBOT
#

Welcome @glossy cave!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @barren axle!

barren axle
#

Hey folks! I'm tazjin from nixery.dev, tvl.fyi and some other stuff. @heavy gazelle invited me here after some followup discussions we had after recording https://changelog.com/shipit/37

I'm interested in contrasting Dagger with Nix.

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @safe burrow!

heavy gazelle
barren axle
# heavy gazelle Hey! It's great having you here, welcome ๐Ÿ‘‹๐Ÿป I'm looking forward to your though...

@heavy gazelle Thanks! Actually going to dive right in because I came up with a complicated question I didn't ask you yet. Question is long, but I'll try to put a TL;DR at the end ๐Ÿ™‚

There is a concept in some systems about extending a computation graph from within. For example in the gg paper (good summary: https://buttondown.email/nelhage/archive/papers-i-love-gg/ ; the important section is "The compute IR"), a step that models some kind of computation can "return" a "primitive value" (e.g. bytes on disk after running some build command) or it can return another (list of) step(s) to run.

This concept is pretty powerful. Off the top of my head, here are some examples:

  • Nix has this, we call it "import from derivation". It means running something in Nix that generates more Nix code and then importing it into the same execution graph. We use this in TVL as part of our Nix build system for Go (https://code.tvl.fyi/about/nix/buildGo) to have Nix first fetch third-party deps, then run an analysis tool on them, and then import the output of that analysis tool to generate the build plan for the dependency.

  • Google's CI system allows checks to return more checks to run. For example, this lets you write a check which analyses the kinds of files included in your change and generate more checks to run based on that (e.g. language-specific linters).

  • Buildkite has a feature for uploading more build steps from within a build step (https://buildkite.com/docs/agent/v3/cli-pipeline). We use this in our build pipeline generation (https://cs.tvl.fyi/depot/-/tree/nix/buildkite) to go from a pipeline with a single initial step to our fully dynamic CI (e.g. https://buildkite.com/tvl/depot/builds/12075)

Is there an equivalent in Dagger and what does it look like?

(TL;DR: Can a Dagger op (not sure about the term?) dynamically output more ops to run?)

turbid tulip
# barren axle <@!796825768600141844> Thanks! Actually going to dive right in because I came up...

The short version is that it can't currently do that. There are a few limitations in cue/flow that make that difficult (we can't currently change the evaluation tree to add nodes/tasks dynamically). But I'd say that is more of a current limitation than a fundamental limitation. I've been digging into that code base and I'd say it is something we can likely do in the future.

All of that said, I'm curious about how you would imagine doing that. What sorts of operations would you want to have that would add additional steps? I like your example of language-specific linters. Do you have you any thoughts about the interface for that?

winter linden
#

In the case of the gg paper (great paper btw :), if I remember correctly, there are use cases specific to the compile/build use case. For example, dynamically scanning for dependencies between files in a large codebase.

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @grim lance!

barren axle
#

@winter linden yeah, that's a good case! For us the key insight is that this applies at multiple different levels. We're interested in finding a good solution for distributing the graph of our CI builds (which is dynamically generated; adding a new project in our monorepo only consists of adding the source files for the project - the rest is "discovered"). Right now our solution is specific to Buildkite, because they have this feature at the right level.

I'm thinking about the idea of Dagger as "CI-system independent CI definition", in which case we'd likely "compile" our Nix evaluation graph into something Dagger can consume. We're doing this outside of Nix itself because of two reasons:

a) we have steps that are not "pure" (e.g. integration tests), which conflict with Nix's model
b) Nix itself is (currently) not very good at distributing to e.g. multiple separate build hosts - in Buildkite we can "model" that using their build agents

#

It's also interesting because we have customers that use our setup who are currently tied to Buildkite if they want their CI to work the same way, but it would be nice to have an abstraction level there that makes this possible on ~any CI system without losing too much of the UX we have right now

winter linden
#

That sounds like a great fit for Dagger and we would love to help make it happen ๐Ÿ™‚

#

One unfair advantage of Dagger is that we rely on buildkit for the heavy lifting. 2 major benefits in this case:

  1. Compatibility with the container ecosystem without the worst of its baggage (buildkit adds the useful constraints of the DAG model compared to raw docker engine)

  2. We can leverage buildkit infrastructure. Clustering, storage, multi-arch nodes, caching backend.. if someone did it for buildkit it will work out of the box for Dagger

barren axle
#

Buildkit is curiously the most opaque component of this for me. Cue and the DAG engine make sense right away.

I don't fully understand how Buildkit interfaces with tools that build container images on their own. In Nixery for example I have a completely custom builder and layering logic with close to optimal content-based caching (described in the talk https://www.youtube.com/watch?v=pOI9H4oeXqA or in text here: https://tazj.in/blog/nixery-layers).

My vague feeling is that Nixery should probably "compile to" this LLB format when running standalone and not as a registry.

A couple more hours in each day would be useful ๐Ÿ˜…

winter linden
# barren axle Buildkit is curiously the most opaque component of this for me. Cue and the DAG ...

Buildkit takes over the entire build DAG. If you were to integrate Nixery with it, it would be kind of like moving some of your internal data structures to Redis (if that makes sense). Itโ€™s the same functionality you already have (build and layering logic, content-based caching etc) but packaged in its own daemon with its own API and infrastructure.

In practice Nixery would 1) compile LLB and 2) probably submit them on the fly to the buildkit daemon to be resolved. It theory you can decouple those two steps (llb can be serialized to a file) but I donโ€™t know anyone who actually uses that pattern. Perhaps something to be explored

barren axle
#

Intuitively the LLB serialisation would make sense in the Nix case, since then we'd get caching for that for free. Not sure how much that is worth though unless the closure of image contents is humongous. Regardless of that, this might be interesting to experiment with.

On the other topic, I think a first sketch could be actually generating the Cue files from Nix (a bit dirty, but could work as a POC) and then invoking Dagger on the generated files.

winter linden
barren axle
#

I was thinking re: generating Cue - does the Cue code evaluate to some data structure that is then processed, or is there tighter integration with the evaluation? In the former case, it might be easier to output that data structure directly from Nix code instead

winter linden
#

Iโ€™m not sure what your inputs are, but if itโ€™s possible, outputting JSON would be cleaner

#

Nix -> JSON -> CUE

#
  • Execute a nix-specific tool that generates json
  • Execute a Dagger configuration that loads the json
turbid tulip
#

For CUE, the data structure is CUE. The evaluator behind the scenes does translate it into an abstract data type, but it's all defined as golang data structures (and, as such, not available to an end user).

barren axle
#

Okay, so it's not like cue -> ?? proto ?? -> dagger, but more direct?

#

the JSON generation would be very easy - that's what we do right now for Buildkite. Hmmhmm

turbid tulip
#

We're using an evaluation engine in CUE called flow, which allows tasks to be defined by CUE values (typically a field), which progressively concretizes the CUE value lattice.

#

So, the output from a task becomes concrete, which allows another task to start, etc. in a DAG.

winter linden
#

nix+dagger

autumn swallowBOT
#

Welcome @lost bone!

autumn swallowBOT
#

Welcome @coral wedge!

coral wedge
#

Hi happy to join ๐Ÿ˜‰

autumn swallowBOT
#

Welcome @tired robin!

autumn swallowBOT
#

Welcome @twin scaffold!

autumn swallowBOT
#

Welcome @compact magnet!

compact magnet
#

Hey All!

autumn swallowBOT
#

Welcome @rustic shard!

autumn swallowBOT
#

Welcome @sonic patio!

autumn swallowBOT
#

Welcome @blazing moth!

winter linden
umbral glacier
#

Goal:

Implement a system that allows deployment of multiple services to a cluster in a micro-service / service-oriented architecture. There are a bunch of separate services running together to make a cohesive whole. Every service is an app in and of itself and it needs to fulfill the 12-factor app principles.

Build and run server could be completely separate, meaning - the build can happens on one location, while deployment or running the service can happen on another, completely separate location.

Only the build server requires access to the source code as input. The job of the build system is to produce all the needed artifacts for going to production. These artifacts include the containers of the images, the manifests for the cluster - maybe even the description of the infrastructure (as terraform source code maybe?) required to completely run it?

The deployment system takes as input the artifact from the build system and runs it - it spins up infra as needed, applies the manifests to the cluster etc.

Is this a crazy idea? If yes, tell me why? If it's not so crazy - can dagger do this?

wispy tapir
umbral glacier
#

the key point here is the k8s manifests and the infra descriptions being part of the built artifact

#

conceptually this is like a golden image on steroids or something

wispy tapir
#

You can generate your k8s manifests directly from dagger, we also wrote a #Kustomize definition to apply kustomization on already existing yaml, this way you can dynamically update your manifest with the image tag you built previously and so on ๐Ÿ˜‰

umbral glacier
#

Imagine this use-case: a developer is working on a feature for some service x but in order to implement said feature they need to add new infrastructure. Say for example they need to start using a redis or mongo database where previously they didn't. Now they write code that connects to redis into a new branch on github, they test it locally (by providing the connection params to localhost via env variables) but they now want to deploy this to a staging environment in the cloud. I want them to be able to push terraform code, app code and k8s yaml files all on the same branch and have a deployment ready in the cloud.

Basically gitops but not only limited to k8s (like flux or argocd would be) but k8s + infra that sits outside of k8s

#

With the twist that a build stage happens only once per commit and produces a complete deployable artifact of that commit. If you lost the entire git history and source code but still had this artifact you could deploy it to production

wispy tapir
#

With dagger, you can run any kind of commands, from a simple bash script to just anything you want, that is not limited to k8s or anything.
Everything that can be run in a container should work in Dagger.
So what I would do is create a dagger configuration to build my project -> push it to a remote registry, this way even if you lost the source code, you still have the working image in the registry.
And then from that build, I would update the k8s yaml (still from dagger) to use the latest image build and indeed we have a terraform package to apply terraform configuration so I would just pass it as input to deploy and use your package to apply it.
This way the developper can just update the terraform code and that's it.

#

This is how I see it, maybe @heavy gazelle can add more context or share his experience to confirm my words

#

You can also create dependency between task, so you can build -> push -> update yaml & deploy infra

umbral glacier
#

but that all happens as part of one process that combines build + deploy, right?

#

what if I want to build on monday, but deploy what I built on tuesday?

#

I guess I could rephrase this

wispy tapir
#

Ohhhh okay I see

umbral glacier
#

I want the 12 factor app separation of build release run but want it to include infra too

wispy tapir
#

I'm not sure it's available for now but we are working on the possibility to run only one part of the dag, so that should be possible

#

So you could run the build part on monday and the deploy part on tuesday ๐Ÿš€

wispy tapir
#

In my opinion, if it's possible to run a part of the dag, it will be easy to match your need, we are saving outputs (for example the image sha) in a JSON so we could reuse it during deployment

umbral glacier
#

so what I'm thinking about is roughly -> a BUILD is a complete specification of what an application and the infra it needs to run in a point in time. So then an imaginary release process could take as input this build artifact along with any enviroment variables it needs plus things like infra state files to apply this to and presto you got a release

#

you could say it would enable time travel releases

#

that sounds promising!

#

would it be that crazy of an idea to have as build output not just the image shas but also the IaC source describing the infra they need to run on?

#

so the build is a function of source code with some amalgam as output

build(source) -> artifact

and then release/run is a function of that artifact plus related input to a real-world deployment

run(artifact, config, infraState) -> thing is live and running

#

I didn't get enough sleep last night so I could be rambling semi-coherently ๐Ÿ˜‚

wispy tapir
wispy tapir
#

I think you should book a call with the Dagger team to talk about this, we would be happy to help you ๐Ÿ˜„

umbral glacier
#

so the output could literally be a zip file with terraform code in it that a run phase could point terraform apply to? along with kubectl apply etc.

umbral glacier
wispy tapir
umbral glacier
#

I just want a sanity check first - does this thing that I'm thinking about make sense to do at all? Do you see any major issues with this approach?

wispy tapir
wispy tapir
rain oriole
#

@umbral glacier You can also run different plans, one for build and another for deploy, just reference the .cue file with the plan in the CLI. As for outputting, with outputs: directories, you can save any #FS into your local disk, so that includes .zip files or any other file that's produced using a task.

umbral glacier
#

One neat thing you could do with an approach like that is the following scenario:

You have your app running in production. It is a nodejs backend that connects to a postgresql database and runs inside a k8s cluster. The code for your app is all the javascript application source code, the terraform source code that describes an EKS cluster, an RDS instance and the k8s yaml files that describe yours pods and whatnots.

Now, you want to add some async work capabilities and you add in the popular bullmq package for giving you queues and workers etc. But for that to work you need to point it to a redis instance. So you add a redis instance definition inside your terraform source code. You also need to add another pod that runs the workers connecting to redis instance so you make the changes to your manifests by adding the required yml files as well. Now the PR for adding this work is complete. You push it up. A CI pipeline finishes the build phase and produces your artifact. You now have the following options:

  1. Take this artifact and apply it to your existing staging or even production environment. The run phase upon receiving it will run terraform apply and spin up a new redis cluster for you to use, will add a new pod into your running cluster and update all the others. You have now UPGRADED this environment to have this feature.

  2. You can also take this artifact and apply to a brand new environment that doesn't yet exist. Say you give it an empty infra state file. Now the run phase does terraform apply but it notices that it needs to create not just a redis instance, it needs to create also an RDS instance, an EKS cluster etc. You have now spun up a completely new environment with this feature.

Why choose? You could do #2 to test things out first and if satisfied pull the trigger on #1. Or you could even do #2 multiple times for n copies of your complete app (of course they would all get random domains or some other way to differentiate them)

rain oriole
#

Sure! You can have tweaks in your plans for dev, staging and prod. Either different plans that share definitions, or by feature flags using inputs: params, or maybe with partial dags (not ready).

umbral glacier
#

what is a partial dag?

rain oriole
#

It enables you to run only part of your plan.

umbral glacier
#

what is the envisioned use case for partial dags? What i'm describing could also be implemented with different plans right?

rain oriole
#

It depends how much different the plans are. You could have, at the root of your plan's actions, keys for your environments (e.g., dev, staging, prod) and run partially the one you want, instead of the whole plan.

#

If they're similar apart from a few configs, you can set that in inputs.

#

If they're pretty different (dev vs prod maybe), I would rather have different plans.

umbral glacier
#

See I don't want hardcoded environments. I will have as many environments as the number of times I applied the run/release of a build

#

I guess run phase would also need as output something that a destroy phase could take as input to clean the whole thing up

rain oriole
#

By environment I mean type of configs, not instance of that config.

umbral glacier
#

oh ok, gotcha

rain oriole
#

In dev you could be running docker compose, and in prod kubernetes.

umbral glacier
#

ok, got it - what would be the difference between staging and production in that example? staging would have smaller instance sizes or something like that?

rain oriole
#

You tell me. That depends. It could just be the target cluster, which is a simple setting.

umbral glacier
#

ah but IMO the target cluster should be an input of the run phase

rain oriole
#

But your terraform configs are different between those?

umbral glacier
#

no, they wouldn't be in this case

rain oriole
#

Or is it just the difference of using something that's there (prod) vs something new everytime (staging)

umbral glacier
#

basically

#

or prod vs staging could just be how we name and use it

rain oriole
#

Yep, you can have simple settings in your CUE to trigger one behavior vs another in your plan.

heavy gazelle
#

We run a Phoenix app on Kubernetes. Dagger runs inside GitHub Actions.
The pipeline stops when it publishes the resulting container image to Docker Hub.

In Kubernetes, we run a reconciler - https://keel.sh - that triggers deployment updates when there is an update to this image.
In your case, I think that you would want to replace keel.sh with Dagger, and run another pipeline with its own set of rules.

Having a seam between build & deploy is a good idea in my opinion. The / in CI/CD is important, and some people respect it.
While it's OK for a single pipeline to do it all, I understand why you don't want that - I am doing the same thing.
I am also thinking about replacing keel.sh with something else, and while I would want to do it with Dagger, there are a few issues which are not yet solved.

If you decide to use ArgoCD or Flux for K8s, and integrate with Crossplane Terrajet for the Terraform part, I would totally understand that. I partially did that 2 months ago, and while I am moving towards Dagger, I don't have a proven solution to share just yet ๐Ÿ˜‰

I like your thinking @umbral glacier and would be curious to learn more about your use case. A repository to look at would be great.

More context:

umbral glacier
heavy gazelle
#

It's more common among the high-performing teams, which are at the more extreme end of the scale of CI/CD. We most certainly hope that encoding these practices within Dagger will help others to benefit from this approach more.

umbral glacier
#

I like your thinking @umbral glacier and would be curious to learn more about your use case. A repository to look at would be great.

@heavy gazelle I am actually in the process of setting up a CI/CD pipeline for an older system that had none previously. The CI part is done and it stops when container images get published to the registry. The other part, CD, is just getting started and I am a little overwhelmed with all of the options since I don't have much experience in the space and it's my first time setting something like this up. All of this to say - not much of a repository to look at right now but I will definitely try to circle back once I have something

heavy gazelle
#

I understand. I'm a big fan of taking small steps towards better. It helps with the getting overwhelmed part, and focusing more on the fun, exploratory side of it. We now know the direction that you are going towards, it sounds good to me, and the next step is to look at the particulars via some code. Leaving it with you ๐Ÿ‘‹๐Ÿป

autumn swallowBOT
#

Welcome @worn lichen!

autumn swallowBOT
#

Welcome @snow bloom!

autumn swallowBOT
#

Welcome @scarlet crow!

autumn swallowBOT
#

Welcome @silk carbon!

surreal echo
#

If anyone wants to run Europa on Circle via an Orb, I've made this:https://github.com/logicalhq/dagger-orb
(Please note it's a private orb, so you'll have to fork the repo if you want to use it in your own org)

winter linden
#

Wow nice! Thank you @surreal echo !

autumn swallowBOT
#

Welcome @nova robin!

autumn swallowBOT
#

Welcome @cosmic pawn!

coral wedge
#

Hi guys
Glad to join this mind-blowing project and this growing community ๐Ÿ˜„

#

I'm so excited!

winter linden
#

Welcome @coral wedge and thank you for the kind words!

autumn swallowBOT
#

Welcome @earnest ember!

autumn swallowBOT
#

Welcome @fierce stone!

#

Welcome @analog gale!

#

Welcome @abstract nexus!

haughty lark
#

Is there any community meeting that I can join and share it?

swift inlet
winter linden
winter linden
#

If you're watching the live-coding session: use this thread to participate ๐Ÿ™‚

autumn swallowBOT
#

Welcome @placid grove!

autumn swallowBOT
#

Welcome @real garden!

winter linden
#

I love that the numbers are so small ๐Ÿ˜Š Itโ€™s way more fun going from 0 to 100 than from 1000 to 10000 (but that will be fun too)

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @fierce harbor!

fierce harbor
#

Hi all, I got the email to allow early access to dagger but when I go to github I get a 404

#

any ideas?

swift inlet
fierce harbor
#

It didnt work when I originally got the invite either ... I think it might be more than a restart ... no rush of course ๐Ÿ™‚

wraith niche
fierce harbor
#

testbucket

#

dont judge me ๐Ÿ™‚

wraith niche
#

@fierce harbor ok, go to https://github.com/dagger/dagger , you should see the invite pending. Once accepted, the links from the welcome email (docs) should work, let us know

fierce harbor
#

working now! thanks @wraith niche and @swift inlet

autumn swallowBOT
#

Welcome @gloomy prawn!

autumn swallowBOT
#

Welcome @leaden fiber!

autumn swallowBOT
#

Welcome @green bramble!

autumn swallowBOT
#

Welcome @pale fossil!

pale fossil
#

hey @wraith niche , can you resend my invite? it's expired. GH username is benmoss.

nova robin
#

Hi DevOps Pros, I am trying to understand more about the world of devops and would love to learn more about your experiences. If you are passionate about devops and would like to share your knowledge with someone new to the subject, I would like to schedule a quick call with your to discuss the main challenges and problems you are facing.

This is for my own exploration purposes on devOps processes, and on dagger.io, although I will likely share any interesting insights I gain with the dagger folks.

What is in it for you? Well, 30 minutes to brag about your work, and make a new connection, just for the heck of it. ๐Ÿ™‚

DM me if you have the time.

autumn swallowBOT
#

Welcome @halcyon vault!

autumn swallowBOT
#

Welcome @mental peak!

autumn swallowBOT
#

Welcome @random crag!

autumn swallowBOT
#

Welcome @tribal arch!

autumn swallowBOT
#

Welcome @glacial flame!

autumn swallowBOT
#

Welcome @sharp marsh!

autumn swallowBOT
#

Welcome @prisma sparrow!

autumn swallowBOT
#

Welcome @bitter skiff!

autumn swallowBOT
#

Welcome @lofty dagger!

winter linden
haughty lark
autumn swallowBOT
#

Welcome @wary cave!

winter linden
autumn swallowBOT
#

Welcome @abstract arch!

autumn swallowBOT
#

Welcome @zenith wind!

winter linden
#

Hey there @zenith wind good to see you here ๐Ÿ™‚

autumn swallowBOT
#

Welcome @cedar oracle!

#

Welcome @vivid moat!

autumn swallowBOT
#

Welcome @gray dew!

#

Welcome @swift barn!

silent agate
#

We're looking for pilots that would use dagger to deploy AWS infrastructure. Please DM me directly. I will personally help with your implementation of dagger (europa release)

autumn swallowBOT
#

Welcome @wet locust!

haughty lark
winter linden
autumn swallowBOT
#

Welcome @eternal ocean!

autumn swallowBOT
#

Welcome @marble vapor!

autumn swallowBOT
#

Welcome @lost egret!

autumn swallowBOT
#

Welcome @shut silo!

autumn swallowBOT
#

Welcome @neon warren!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @soft lichen!

autumn swallowBOT
#

Welcome @hybrid gorge!

hybrid gorge
#

hey there, thanks for the invitation!

autumn swallowBOT
#

Welcome @sage prism!

sage prism
#

Hola everyone! This is one very interesting project and thanks for the invite

turbid tulip
#

Nice to have you here, @sage prism!

autumn swallowBOT
#

Welcome @regal otter!

winter linden
autumn swallowBOT
#

Welcome @pseudo stream!

pseudo stream
autumn swallowBOT
#

Welcome @hearty kestrel!

autumn swallowBOT
#

Welcome @main trail!

#

Welcome @swift barn!

swift barn
#

Hello, thanks for the invite!

winter linden
#

Welcome ๐Ÿ™‚

autumn swallowBOT
#

Welcome @tepid horizon!

autumn swallowBOT
#

Welcome @clear tiger!

autumn swallowBOT
#

Welcome @fresh dagger!

autumn swallowBOT
#

Welcome @fair plover!

autumn swallowBOT
#

Welcome @bitter oak!

winter linden
#

Hi @everyone. Here it is, finally... 0.2.0-beta.1. The first beta release of Dagger 0.2, codename "Europa"!

In addition to a new version of the dagger CLI, it also features a new website, and new docs (still work in progress). Check it out at https://beta.dagger.io

Dagger 0.2 includes a major overhaul of our developer experience. It is more powerful, and simpler to use, than 0.1... But it's also incompatible! If you have a Dagger 0.1 plan, you will need to migrate it manually, but don't worry, we will help. Ping us here or open an issue, and we will guide you through the process.

Thanks and please send us feedback so we can keep improving!

#

One more note: this release is special because it kicks off our countdown to launch ๐Ÿ™‚ Once Dagger 0.2.0 is officially finished... We will open the community and source code to everyone. Finally!

muted gale
#

Looking forward to showing dagger to more people

haughty lark
#

Looking forward to the new features!!

distant pebble
#

Congrats Dagger team!

patent stirrup
#

Do we have a way to integrate with GCP workflows?

#

Two areas: 1. dagger could execute a workflow. 2. Dagger could possibly run in a workflow (need to validate that this is possible)

swift inlet
# patent stirrup Do we have a way to integrate with GCP workflows?

Hi ๐Ÿ‘‹
We would definitely want that ! ๐Ÿ˜„ It's currently not the case. Can you make an issue out-of-it, to keep track of your finding (2) especially + (1), the spec that you envision for the package. We had a gcp integration in the past, so (1) shall totally be possible. We may take some parts of the previous gpc integration to integrate to this new version

patent stirrup
#

Sure, will do!

autumn swallowBOT
#

Welcome @slow mural!

winter linden
#

We have officially released 0.2.0 ๐Ÿ™‚ Look in your inbox for a detailed release post. Happy testing everyone! Thank you for your support!

autumn swallowBOT
#

Welcome @west frost!

autumn swallowBOT
#

Welcome @ripe crag!

autumn swallowBOT
#

Welcome @jovial trout!

coral wedge
#

Well done guys.

autumn swallowBOT
#

Welcome @blazing horizon!

autumn swallowBOT
#

Welcome @drowsy briar!

winter linden
autumn swallowBOT
#

Welcome @loud glade!

loud glade
#

Helllooo all, especially @winter linden @drifting crown ๐Ÿ˜€

winter linden
#

Yay you made it! Sorry about the glitch

autumn swallowBOT
#

Welcome @zenith remnant!

#

Welcome @hazy hamlet!

hazy hamlet
#

Hello everyone
Happy to be here!!

zenith remnant
#

Hello ๐Ÿ‘‹ Happy to be here too ๐Ÿ™Œ
Let's see if I can finally get my head around dagger ๐Ÿ˜„

autumn swallowBOT
#

Welcome @civic tinsel!

autumn swallowBOT
#

Welcome @boreal fable!

boreal fable
#

Congrats on shipping dagger 0.2! What a giant payload!

autumn swallowBOT
#

Welcome @shut shore!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @sullen spear!

autumn swallowBOT
#

Welcome @humble pasture!

autumn swallowBOT
#

Welcome @scenic tree!

#

Welcome @final swift!

final swift
#

๐Ÿ‘‹ Howdy!

autumn swallowBOT
#

Welcome @earnest granite!

autumn swallowBOT
#

Welcome @mighty meadow!

#

Welcome @fading sluice!

neat anchor
#

ah actually all links sent by mail redirect me to an error page

last pine
#

Strange... @neat anchor could you try to access to docs.dagger.io in a private window please ?

last pine
#

@neat anchor : I found the bug and opened a PR. I let you know when this will be fixed. Thanks

autumn swallowBOT
#

Welcome @verbal canopy!

vestal creek
#

Freaky timing with that comment, @heavy gazelle

autumn swallowBOT
#

Welcome @barren patrol!

autumn swallowBOT
#

Welcome @echo palm!

neat anchor
#

@last pine sorry, didn't see your message. It works fine now! thank you!

last pine
#

my pleasure ๐Ÿ˜‰

autumn swallowBOT
#

Welcome @radiant talon!

radiant talon
#

Kind of a conceptual question, not sure if this is the right place but

#

Somewhere I see dagger potentially helping us is in things like setting up dev environments; fetching containers, fetching secrets, running some other jobs like populating a test database, spinning up a local isntance; is that something that makes sense?

winter linden
#

Yes absolutely. Dagger is perfect for that.

#

It actually started out as a tool to do only that. Then we redesigned it to be more flexible.

autumn swallowBOT
#

Welcome @swift barn!

#

Welcome @muted quest!

autumn swallowBOT
#

Welcome @chilly sonnet!

autumn swallowBOT
#

Welcome @chilly arch!

autumn swallowBOT
#

Welcome @orchid raven!

autumn swallowBOT
#

Welcome @wicked badger!

autumn swallowBOT
#

Welcome @bitter swift!

smoky shard
#

Hiya I like to develop using my local file system and Mac set up because itโ€™s faster and more ergonomic than doing development inside a container convenient. But my CICD and Dagger all run Docker containers. Is there some way to get parity between my local file system for local development and whatโ€™s in the container that dagger and cicd uses?

wispy tapir
#

Hey ๐Ÿ‘‹

Create CI/CD with Dagger required 2 things :

  • A buildkit daemon (launched using docker by dagger if no one is set)
  • A plan (made in cue)

So basically, you can run the daemon in a container but the plan can be in your local system

smoky shard
#

Ah yes that is what Iโ€™m doing. But it means my project dependencies are all in the Docker image. Iโ€™d prefer them on the local file system for development eg: hot reloading, running tests etc.

wispy tapir
#

What are you trying to do with Dagger?

autumn swallowBOT
#

Welcome @stone tulip!

winter linden
autumn swallowBOT
#

Welcome @lilac thicket!

lilac thicket
#

Hey all ๐Ÿ‘‹ Iโ€™ve been dagger-adjacent for a while, but Iโ€™m diving in properly this week ๐Ÿ˜€ Really looking forward to seeing how I can stop building the same bloomingโ€™ pipelines in different systems, over and over again ๐Ÿ˜‚

sharp marsh
#

general feedback for the https://docs.dagger.io/1203/client page. I would personally love for each of the sections to be fully working dagger configurations so I can fiddle with them to learn. As they are today, if I copy/paste (the copy button is there) them into a dagger project they won't work due to missing package and import definitions. Thoughts?

verbal canopy
rain oriole
# verbal canopy Filesystems: You should only write once to any named filesystem. Multiple writes...

Multiple writes to a single filesystem shouldn't even be possible due to the way the CUE api is set. If you have:

client: filesystem: "./dir": write: contents: actions.build.one.output
client: filesystem: "./dir": write: contents: actions.build.two.output

Then those two contents are going to be unified, which should error. Can you explain a bit more how you had it set up? Did you have different paths pointing to the same place on disk?

verbal canopy
mystic mantle
# sharp marsh general feedback for the https://docs.dagger.io/1203/client page. I would person...

Also, it would be great that those would be checked by the CI directly. A little bit like Go that runs the examples in _test.go files, so we know our documentation is up to date with the current dagger implementation: https://go.dev/blog/examples

winter linden
autumn swallowBOT
#

Welcome @toxic trellis!

autumn swallowBOT
#

Welcome @timber wind!

autumn swallowBOT
#

Welcome @analog iron!

autumn swallowBOT
#

Welcome @viral rapids!

autumn swallowBOT
#

Welcome @sage plank!

autumn swallowBOT
#

Welcome @radiant cape!

autumn swallowBOT
#

Welcome @earnest prawn!

cloud canyon
#

dagger v0.2.3 is out ๐Ÿš€ ๐Ÿš€

This release focuses on polishing the CLI and CUE API, notable changes:

  • Move core actions to a subpackage
  • Rename dagger.#Service to dagger.#Socket
  • Move connecting socket to client: network
  • Add docker CLI package

We'll be conducting a bug bash today and tomorrow -- we'd very much appreciate if you could try out the release and the documentation, to report back anything unexpected!

@everyone

autumn swallowBOT
#

Welcome @pastel sluice!

autumn swallowBOT
#

Welcome @ember juniper!

autumn swallowBOT
#

Welcome @neon ice!

#

Welcome @frail bronze!

winter linden
#

Tomorrow we're throwing our first virtual meetup, right here on Discord. It will be an unconference format: bring your topics and questions! The Dagger team will be there to answer your questions, discuss the roadmap, show real-world examples of Dagger, live coding, and more.

Event link: https://discord.gg/ZSnUCNYr?event=958494137127161916

See you soon @everyone!

autumn swallowBOT
#

Welcome @swift barn!

autumn swallowBOT
#

Welcome @steady wasp!

winter linden
autumn swallowBOT
#

Welcome @deep mesa!

#

Welcome @earnest patio!

#

Welcome @inland harness!

#

Welcome @median owl!

median owl
#

yay congrats on the launch!

winter linden
#

Hello everyone! Our little community call is starting in one minute. Participants are muted by default, but raise your hand here, or ask questions if you want to participate and we'll unmute you!

autumn swallowBOT
#

Welcome @vital shoal!

autumn swallowBOT
#

Welcome @lime plover!

cloud canyon
autumn swallowBOT
#

Welcome @ebon meadow!

#

Welcome @nimble iron!

median owl
#

gotta run to a meeting but good to see you all again ๐Ÿ‘‹

verbal canopy
autumn swallowBOT
#

Welcome @reef birch!

#

Welcome @waxen sparrow!

heavy gazelle
autumn swallowBOT
#

Welcome @tawny notch!

verbal canopy
#

I've started testing out using binlog (https://msbuildlog.com/) for MSBuild. One awesome benefit is the Log Viewer tool generates a flame graph of your build.

heavy gazelle
tawny notch
#

hi, saw this amazing project announced on twitter and I just had to come say hi to the community

turbid tulip
#

Welcome, @tawny notch!

autumn swallowBOT
#

Welcome @dawn otter!

#

Welcome @neat rampart!

tawny notch
#

are there any high level introductory technical guides I can look through?

neat rampart
#

Hey everyone! Not sure to where to direct this, but the website currently redirects to two different Discords! The first link is this Discord, and further downthe website says

If you share our definition of fun, come say hi!

This link redirects to a discord with Cyrillic characters in the name. I'm pretty sure this wasn't on purpose ๐Ÿ˜…

winter linden
tawny notch
#

awesome thanks!

neat rampart
#

Pretty sure it's a mistake!

turbid tulip
#

@winter linden @last pine ๐Ÿ‘†๐Ÿป

mystic mantle
#

Good catch @neat rampart

winter linden
#

Thanks! We're fixing it now

neat rampart
#

Np! I'm also a Dev currently looking at new roles, so maybe this is my in ๐Ÿ˜…

winter linden
autumn swallowBOT
#

Welcome @wraith hull!

#

Welcome @tired pulsar!

tired pulsar
#

Hi - I build lots of ETL and DB schema pipelines in the microsoft stack

#

coming in to check what's going on here

turbid tulip
#

Welcome, @tired pulsar!

autumn swallowBOT
#

Welcome @pale current!

#

Welcome @frail dagger!

#

Welcome @swift barn!

#

Welcome @worthy tiger!

#

Welcome @stable grove!

#

Welcome @fringe cargo!

#

Welcome @scenic saddle!

#

Welcome @graceful wigeon!

#

Welcome @swift barn!

#

Welcome @agile anchor!

sharp marsh
autumn swallowBOT
#

Welcome @visual crater!

#

Welcome @shy dust!

#

Welcome @calm heron!

#

Welcome @south sluice!

#

Welcome @faint vapor!