Pkl: Apple's New JSON/YAML Killer (I actually want to use this...)

แชร์
ฝัง
  • เผยแพร่เมื่อ 5 ม.ค. 2025

ความคิดเห็น • 845

  • @Malix_Labs
    @Malix_Labs 11 หลายเดือนก่อน +1605

    They open-sourced it because they want it to be a standard

    • @skrypets
      @skrypets 11 หลายเดือนก่อน +27

      because of 'Mother Nature"

    • @lmao4982
      @lmao4982 11 หลายเดือนก่อน +75

      I mean yeah it would be insane to keep this kind of thing proprietary no?

    • @Malix_Labs
      @Malix_Labs 11 หลายเดือนก่อน +1

      ​@@lmao4982you'd be surprised

    • @no_name4796
      @no_name4796 11 หลายเดือนก่อน +66

      Probably because they want people to freely maintain it.
      I hate corporations abusing open source, but putting a big price to the end user.
      Open source it's great when end users benefit from it. If open source is hidden under 20 meters of proprietary garbage, why is it any different then unpaid labor?

    • @ayoubthegreat
      @ayoubthegreat 11 หลายเดือนก่อน +5

      @@jhuglen whats wrong with it

  • @TheRyulord
    @TheRyulord 11 หลายเดือนก่อน +652

    The fact that Pickle and .pkl are already the name and extension for a common existing file format is driving me insane.

    • @ck-dl4to
      @ck-dl4to 11 หลายเดือนก่อน +41

      No one should use a file extension as identifier.

    • @DemPilafian
      @DemPilafian 11 หลายเดือนก่อน +17

      The fact that pickle ball makes such an annoying popping sound is driving me insane.

    • @monad_tcp
      @monad_tcp 11 หลายเดือนก่อน +16

      ​@@ck-dl4to NTFS had streams and that failed because people hate Metadata inside the file
      Metadata goes in the file system, the name is Metadata, extension and file type also is

    • @KaiHenningsen
      @KaiHenningsen 10 หลายเดือนก่อน +10

      @@monad_tcp NTFS probably had streams because MacOS had resource files.

    • @livioribeiro
      @livioribeiro 10 หลายเดือนก่อน +5

      Swift was already a programming language before Apple release theirs

  • @FIIRdesu
    @FIIRdesu 11 หลายเดือนก่อน +1270

    13:17 "Imagine if your JSON autocompleted and gave you errors when you were editing it"
    You don't even have to imagine, it's already a thing with JSON Schema.

    • @ephektz
      @ephektz 11 หลายเดือนก่อน +139

      He mustn’t have edited a package.json in a while.

    • @CryptoDrewStreams
      @CryptoDrewStreams 11 หลายเดือนก่อน +164

      Within the first 3 mins of this video, I was already screaming JSON Schema. It follows DRY principles, has validation, is standardized, can be transpiled to POCO code in various languages. And JSON Schema files can also be referenced in an OpenAPI/Swagger spec to generate code for entire API endpoints.
      But sure, Apple, do your own thing. Just like they are trying to build the next standard of podcasting when we already have a well-developed Podcasting 2.0 standard.

    • @soniablanche5672
      @soniablanche5672 11 หลายเดือนก่อน +28

      yep and it's supported natively by vscode

    • @fullstack_journey
      @fullstack_journey 11 หลายเดือนก่อน +29

      Typical theo

    • @omri9325
      @omri9325 11 หลายเดือนก่อน +12

      But it doesn't have for-loopsd!!@#!@#

  • @jesse9999999
    @jesse9999999 11 หลายเดือนก่อน +623

    as a person who uses python pickle files every day i find this naming choice very annoying

    • @timothyvandyke9511
      @timothyvandyke9511 11 หลายเดือนก่อน +17

      Literally thought the same thing (but I’ve only used the library like once)

    • @toooes
      @toooes 11 หลายเดือนก่อน +11

      PYTHONISTA: REEEEEEEEEEEEEEEEEE

    • @soupnoodles
      @soupnoodles 11 หลายเดือนก่อน +1

      Youre supposed to name those as ".dat" files

    • @magikarpusedsplash8881
      @magikarpusedsplash8881 11 หลายเดือนก่อน +1

      I found it funny because usually if I wanted to pickle something, there was a better solution assuming I wanted my project to be scalable in some way.
      And to be fair, you're going to choose one or the other, and as far as I know there's no external programs that open pickle files directly so you'll just be opening Apple's .pkl with a text editor and not touching pickles directly anyways.

    • @Axman6
      @Axman6 10 หลายเดือนก่อน +5

      You should probably stop using the security nightmare that is python pickle.

  • @SilentFool602
    @SilentFool602 11 หลายเดือนก่อน +421

    You can tell they want folks to use it because they also released a neovim plugin and aren't just catering to VScode users

    • @lbgstzockt8493
      @lbgstzockt8493 11 หลายเดือนก่อน +12

      Why does the EU live in your head rent-free?@@jhuglen

    • @lbgstzockt8493
      @lbgstzockt8493 11 หลายเดือนก่อน +9

      @@jhuglen Ah okay, I thought you had some weird hate-boner for the EU 😅

    • @jambalaya974
      @jambalaya974 10 หลายเดือนก่อน +1

      the neovim plugin is crap though

  • @jasondclark
    @jasondclark 11 หลายเดือนก่อน +255

    I used to Pickle my Python back in the day.

    • @marwan7614
      @marwan7614 11 หลายเดือนก่อน +23

      Mmm Pickled python.

    • @vikingthedude
      @vikingthedude 11 หลายเดือนก่อน +4

      My mom used to as well

    • @comradepeter87
      @comradepeter87 11 หลายเดือนก่อน +18

      ​@@vikingthedudeYour mom used to pickle his python?

    • @thedoctor5478
      @thedoctor5478 11 หลายเดือนก่อน +10

      I still pickle my python. pkl is a well-known file extension for this. WTF

  • @ahmadaccino
    @ahmadaccino 11 หลายเดือนก่อน +202

    the smartest thing a new standard can do is make it easy to incrementally migrate, and it seems they are doing that

  • @TanukiYT
    @TanukiYT 11 หลายเดือนก่อน +66

    I love that the example password they used was "hunter2" lol

    • @SeafoodFriedRice
      @SeafoodFriedRice 10 หลายเดือนก่อน +21

      What was the password? All I see is *******.

  • @sion123ful
    @sion123ful 11 หลายเดือนก่อน +37

    I work at apple, i joined when it wasn’t open source and i was very skeptical about PCL ( internal it’s called PCL instead of PKL) but it does solve a lot of problems and the IDE integration is great. It has completely replaced helm in our team, it’s much better. I hope eventually helm charts will also be published in PKL.

    • @TVPInterpolation
      @TVPInterpolation 5 หลายเดือนก่อน +1

      if only they wouldve still call it PCL here, as there is quite a confusion in the python community haha

  • @dough-pizza
    @dough-pizza 11 หลายเดือนก่อน +101

    Someone's writing Doom in that

    • @NotNazuh
      @NotNazuh 10 หลายเดือนก่อน +2

      the funny thing is is that you're probably correct

  • @PatrikStutz
    @PatrikStutz 11 หลายเดือนก่อน +113

    Sooo... They didn't know Nix, Nickel, Dhall, CUE, Jsonnet or HCL existed and therefore had to create their own thing? :/ It doesn't even look that good tbh. But yeah, impressive that Apple open sources something. That doesn't happen very often.

    • @DemPilafian
      @DemPilafian 11 หลายเดือนก่อน +3

      What browser did you use to make your comment?

    • @nikkiofthevalley
      @nikkiofthevalley 11 หลายเดือนก่อน +15

      ​@@jhuglenWhy on Earth are you constantly talking about the EU in every single comment?? What about any of this has anything to do with the EU????

    • @game_time1633
      @game_time1633 11 หลายเดือนก่อน

      @@jhuglenbro you’re drunk get off TH-cam 💀

    • @torsten_dev
      @torsten_dev 11 หลายเดือนก่อน +6

      ​@@jhuglen
      The EU just said you need user consent before you store data on their PC for reasons other than purely functional.
      The Industry could have just followed the Do Not Track setting, but they want your data. Not the EU's fault that sites are evil.

    • @ytdlgandalf
      @ytdlgandalf 11 หลายเดือนก่อน

      Cuelang is still rough but the real deal. I'm trying to understand it better and contribute.

  • @dronicx7974
    @dronicx7974 11 หลายเดือนก่อน +117

    I feel bad for people that have to now use this and the pickle module for file saving in python programs

    • @catalystcorp
      @catalystcorp 10 หลายเดือนก่อน +21

      I feel bad for people that have to use python.

    • @techsavvy9258
      @techsavvy9258 10 หลายเดือนก่อน

      Yeah fuck me

    • @X-3K
      @X-3K 10 หลายเดือนก่อน +17

      @@catalystcorpi feel bad for people

    • @gh0stcloud499
      @gh0stcloud499 10 หลายเดือนก่อน +20

      @@X-3KI feel bad

    • @tsvetanvasilev8346
      @tsvetanvasilev8346 10 หลายเดือนก่อน

      @@gh0stcloud499I feel

  • @thegittubaba
    @thegittubaba 11 หลายเดือนก่อน +67

    About the IDE autocompletion 13:30, you do have json-schema.

    • @Gunzy83
      @Gunzy83 11 หลายเดือนก่อน +5

      ​@@jhuglen Wtf are you on about

    • @ParasocialCatgirl
      @ParasocialCatgirl 11 หลายเดือนก่อน +9

      ​@@jhuglenthe easiest comments to delete are the comments that never get made 🙏

    • @iivarimokelainen
      @iivarimokelainen 11 หลายเดือนก่อน

      ​@@jhuglenyou need to get off the internet

    • @DrumMeister
      @DrumMeister 10 หลายเดือนก่อน +1

      It’s time consuming to write, even if tools can help it’s full of boilerplate

  • @Brixster
    @Brixster 11 หลายเดือนก่อน +50

    Regex makes this all the more cursed. Now you can have a string format language inside of a data format language which can now be directly processed inside of your application's language, which means you have a language in a language in a language. I am absolutely digging this! 😂

    • @mortenhattesen
      @mortenhattesen 10 หลายเดือนก่อน +7

      Strictly speaking, RegEx is not a language, it is a pattern matching syntax.
      What would a better alternative have been? Invent yet another string pattern matching syntax for Pkl?

    • @lunakid12
      @lunakid12 9 หลายเดือนก่อน

      ​@@mortenhattesenIt was (basically) a tongue-in-cheek comment.

  • @_fudgepop01
    @_fudgepop01 10 หลายเดือนก่อน +1

    honestly this seems REALLY cool - from the title I thought it was just another way of storing data that's nicer to use than json like hjson or yaml, but no this seems like WAY more!! really cool stuff :D

  • @AndrewTSq
    @AndrewTSq 11 หลายเดือนก่อน +20

    My first thought was it sounds just more complicated to use

    • @justa9560
      @justa9560 11 หลายเดือนก่อน +3

      @@jhuglen You really need to take a nap or some shit man. It's either extreme sleep deprivation, an absurd amount of alcohol, or you're doped the fuck up on psychedelics. Either way, you need a break

    • @ESPViper100
      @ESPViper100 9 หลายเดือนก่อน +2

      That's my second and third thought as well. No, wait, the third is overengineered.

  • @franklerch1012
    @franklerch1012 10 หลายเดือนก่อน +8

    reading an article while recording yourself is soooo creative, original and value adding....

  • @joaodiasconde
    @joaodiasconde 11 หลายเดือนก่อน +57

    I dont want logic in my config files, jesus christ I cant find this appealing at all.

    • @geomorillo
      @geomorillo 11 หลายเดือนก่อน +11

      Really i prefer to validate my jsonf config file in my code, i dont like this and i agree with you, whats with this trend of overcomplicating things....omg, for example in c# i could use a library like fluenvalidation an validate rules for my json's structure with rules like "port" is an int for example .... not needing to define a new language for that 🤣🤣

    • @henlostinky273
      @henlostinky273 11 หลายเดือนก่อน +6

      this, just writing the parser for this was probably some intern's whole summer and it only made the problem worse. JSON is from 2001 and it's not impressive to be slightly better than one part of it 20 years later.

    • @duartecunhaleao
      @duartecunhaleao 10 หลายเดือนก่อน +4

      I would love not to have to write any more validation code along the main code...

    • @joaodiasconde
      @joaodiasconde 10 หลายเดือนก่อน +3

      @@duartecunhaleao but consider that what is 'valid' may change from consumer or other factors and I doubt you are going to skip server/app side validations anyways and just leave it to this config, so you will end up doubling the validations. Also validation should be close to the app code im reading/writing as it is crucial.

    • @Spoonbringer
      @Spoonbringer 10 หลายเดือนก่อน +6

      Seriously. And if you are creating long config files with a lot of repetition just write a script to generate them.

  • @Lemmy4555
    @Lemmy4555 11 หลายเดือนก่อน +25

    As a Typescript developer i don't see much value in this, because a pkl file have roughly the same lines of code of a regular js/ts file used for configuration, but using js/ts doesn't need to install additional binaries or dependencies.
    However i can see some potential for more complex languages like Go/Rust/Java/etc. that are not suited for small "scripts" since they take in account stuff that you don't care when creating a configuration file such as pointers, packages, namespaces, classes, the borrow checker, constructors, errors handling.

    • @dealloc
      @dealloc 10 หลายเดือนก่อน +1

      > but using js/ts doesn't need to install additional binaries or dependencies
      Huh? What world are you living in where JS and TS doesn't require binaries or dependencies?

    • @recepciftci2642
      @recepciftci2642 10 หลายเดือนก่อน +4

      @@dealloc Computer has already NodeJS installed. So you don't need to install anything extra.

    • @dealloc
      @dealloc 10 หลายเดือนก่อน +2

      @@recepciftci2642 What computer? No computer comes with NodeJS preinstalled. You may have Docker images, but then it makes his initial point moot.
      Plus you'd still need to add TSC compiler as a dependency.
      That is besides the point, it's comparing apples to oranges.

    • @MrBa143
      @MrBa143 10 หลายเดือนก่อน

      ​@@dealloc I will help you understand the comment. The comment did not mean that JS and TS doesnt require binaries / dependencies to be installed, the commentor was talking about simply using JS/TS files as a configuration file, thus not having to install any other binaries related to configuration management tools. Sometimes its okay to assume things and not take everything literal, especially in a world in which english is a secondary or tertiary language for many people. Perfect grammar is something alot of us wish we'd have. Sometimes we slip up, and the meaning of a sentence might differ from what we actually had in mind when we wrote it.

    • @dealloc
      @dealloc 10 หลายเดือนก่อน

      @@MrBa143 Then it makes even less sense, because the topic was about Pkl which, as with other similar languages like CUE, solves an entirely different problem compared to declaring a few variables in a JS file.
      No one said that Pkl was made replace your app-specific variables. They exist to solve consistency and type-safe configuration across multiple domains. Which, as we have seen with services like Cloudflare and Amazon, where misconfigurations can have detrimental outcomes, has a problem space.

  • @gatsbysdead
    @gatsbysdead 10 หลายเดือนก่อน +1

    Python’s pickle library: am I a joke to you?

  • @ilonachan
    @ilonachan 11 หลายเดือนก่อน +17

    chatter getting worked up about "version conflicts in config files": that's literally just a thing. The config format (or parts of it) may change over time after all, and it's important to keep track of that. It's great if Pkl can encode these existing problems and provide editor support for solving them... tho I wonder what form that'll take in practice, if and how different versions of a config format might be supported at the same time.

    • @MichaelBabcock
      @MichaelBabcock 10 หลายเดือนก่อน

      There's a difference between changing config files and tracking configuration versions so you can load data from older formats properly.

  • @DeuxisWasTaken
    @DeuxisWasTaken 11 หลายเดือนก่อน +16

    When I saw a configuration language that is "a blend between a static language and a general-purpose programming language" I immediately thought of Nix, a language with similar ideas created for a similar purpose. Nix doesn't seem to do very well outside Nix and NixOS ecosystems though, and Pkl does seem easier to grasp.

    • @miallo
      @miallo 10 หลายเดือนก่อน

      Totally agreed - for my NixOS system that I have been using for almost 4 years now I am happy with the subset of the Nix language that I need to know, but even then it sometimes still is hard for me to understand the syntax. And for programmer that is not used to it I think it is harder to fight with some of the constraints that you will run into when using nix in a very dynamic ecosystem: in the company I work for we are using it e.g. for building some JavaScript stuff and just the amount of work it takes for _some_ of the dependencies to be packaged is just insane (but to be honest, so is what those dependencies are doing on installation...). So yes - I really love NixOS, but I personally am sometimes struggling a bit with the nix language (yes - because I don't use it (or something similar) that often)

    • @dotanuki3371
      @dotanuki3371 10 หลายเดือนก่อน

      @@miallo just learn FP .. here's a hint: you can do everything with foldl'

  • @corscheid
    @corscheid 11 หลายเดือนก่อน +142

    It's basically the SCSS/SASS of config. Slick.

    • @jacoL8
      @jacoL8 11 หลายเดือนก่อน +14

      @@jhuglen hey can you stop spamming replies with this nonsense…
      You are conflating two completely different things… Apple is forced by the eu to conform to certain standards that the eu has set, like using USB-C ports, but that doesn’t mean that the eu has “forced” them to make a config language they developed open source…
      Like.. I really don’t know what you mean by “eu forced them” or “only in eu” here

    • @SwatejTech
      @SwatejTech 11 หลายเดือนก่อน +5

      I'm guessing you are 14 @@jhuglen

    • @sebastianskovnielsen6472
      @sebastianskovnielsen6472 10 หลายเดือนก่อน +2

      @@SwatejTech I wan't to know what he said ):

    • @OverG88
      @OverG88 10 หลายเดือนก่อน

      Actually, it's mostly HOCON.

  • @ssshenkie
    @ssshenkie 10 หลายเดือนก่อน +5

    Cool idea, but I'm having a hard time understanding the actual use case. I have never found myself needing a language agnostic config,
    Both JSON and YAML have schema files which solves auto complete.

    • @dealloc
      @dealloc 10 หลายเดือนก่อน +1

      When you work with environments which practically live on configurations and a mistake can take down a fleet of services, this is _very_ useful.

  • @vitalysuper3193
    @vitalysuper3193 11 หลายเดือนก่อน +2

    Every year you present two vscode killers and three json replacements

  • @ChristopherCricketWallace
    @ChristopherCricketWallace 11 หลายเดือนก่อน +34

    I would rather them put thos energy into fixing the crashing bug in Xcode. Or maybe decoupling that IDE and compiler from MacOS versions so you can work on old apps without having to switch to old Macs with old MacOS versions.

    • @wolfeygamedev1688
      @wolfeygamedev1688 11 หลายเดือนก่อน +8

      lol, apple dev will always be somewhat cursed. Its what they chose when they decided to be super proprietary.

    • @designator7402
      @designator7402 11 หลายเดือนก่อน +4

      >old (anyhting)
      >Apple
      There is no backwards compatibility. There is no tolerance. You will work with the newest version, whether or not it makes sense.

    • @markuskonrad6049
      @markuskonrad6049 11 หลายเดือนก่อน +2

      You do realise Apple has more than 5 engineers and not all of them can meaningfully work on xcode, right?

    • @chri-k
      @chri-k 10 หลายเดือนก่อน +1

      does Apple even use XCode internally?

  • @withindreams
    @withindreams 10 หลายเดือนก่อน +4

    Dude this isn't as big of a problem in JS land. For JSON, we have schemas. For JavaScript and TypeScript, most packages come with a defineConfig out of the box, and if they don't, rest assured somebody has already published an NPM package for that purpose.

  • @kevanschwitzer8585
    @kevanschwitzer8585 11 หลายเดือนก่อน +1

    This is the kind of content I'd subscribe for. Have seen your videos ocassionally, but valuable content like this is subsbscription worthy.

  • @Ali-sc6dh
    @Ali-sc6dh 11 หลายเดือนก่อน +4

    This is so awesome !
    Currently I'm using json config file to validate and get autocomplete on my json files. And I do not have the best experience with it.
    Pkl could be a game changer !

  • @TheKmsaboor
    @TheKmsaboor 11 หลายเดือนก่อน +12

    Yes .properties are still being used especially in default spring boot apps

    • @31redorange08
      @31redorange08 11 หลายเดือนก่อน +12

      Can't blame him. He lives in a frontend bubble.

    • @shubitoxX
      @shubitoxX 11 หลายเดือนก่อน +2

      you can use yaml configs which are more readable for larger configs

    • @TheKmsaboor
      @TheKmsaboor 11 หลายเดือนก่อน +2

      @shubitoxX I know I just wished my department used YAML more often 😂

  • @victorperezasuaje255
    @victorperezasuaje255 11 หลายเดือนก่อน +71

    Pkl feels like Typescript meets SASS

    • @scottamolinari
      @scottamolinari 11 หลายเดือนก่อน

      I was about to say something similar.

    • @cobrasys
      @cobrasys 10 หลายเดือนก่อน

      Very true.

  • @patricknelson
    @patricknelson 11 หลายเดือนก่อน +20

    All the Python folks are hissing about this (don’t blame ‘em, they’ve been using “pickle” for serialization for ages).
    Anyway - I wonder if at Apple, all their Kubernetes cluster manifests are written in Pkl files. Hmm… that’d be interesting to look at!

  • @3ombieautopilot
    @3ombieautopilot 11 หลายเดือนก่อน +9

    There's another configuration language I like which is Dhall. For those who love Haskell, Rust and etc.

    • @PRIMARYATIAS
      @PRIMARYATIAS 10 หลายเดือนก่อน

      Unfortunately it seems only the Haskell bindings are maintained and non of the other languages.

  • @BastianInukChristensen
    @BastianInukChristensen 11 หลายเดือนก่อน +3

    1:26, Apple has an official Swift LSP for VSCode btw

  • @stumblinzz
    @stumblinzz 10 หลายเดือนก่อน +2

    I'm going to keep using JSON, avoid YAML, never use XML on principal and now avoid using Pkl. Sounds good!

  • @JoshuaBarone
    @JoshuaBarone 11 หลายเดือนก่อน +41

    How would you compare this to Cue? Seems like they are solving the same problems

    • @WeaponBalalaika
      @WeaponBalalaika 11 หลายเดือนก่อน +2

      Yes, definitely! cue seems more pure and pkl more eng oriented.
      They clearly share underlying abstraction.

    • @codingjake
      @codingjake 10 หลายเดือนก่อน

      I was thinking the same thing

    • @DryBones111
      @DryBones111 10 หลายเดือนก่อน +1

      Cue looks more powerful to me. The built in scripting engine in Cue is brilliant.

    • @brodriguez11000
      @brodriguez11000 10 หลายเดือนก่อน

      @@DryBones111 Hopefully no security holes.

  • @mohitkumar-jv2bx
    @mohitkumar-jv2bx 11 หลายเดือนก่อน

    I am loving that theo has returned back to his roots in terms of tye content he is putting out.

  • @jocdiazm
    @jocdiazm 11 หลายเดือนก่อน +50

    Honey, I shrunk the JSON!

    • @terabit7400
      @terabit7400 11 หลายเดือนก่อน

      Don’t worry, you have a great personality ❤

    • @mortenhattesen
      @mortenhattesen 10 หลายเดือนก่อน

      Did you end up with YAML?

  • @PieJee1
    @PieJee1 10 หลายเดือนก่อน +1

    When i heard about pkl i was not interested thinking we already have enough tools, but the features shown here have some features. I can imagine using this to share a configuration between a frontend js and a backend rust/php/c application.

  • @chhihihi
    @chhihihi 11 หลายเดือนก่อน +3

    Being a big fan of comptime in Zig, this will work beautifully. Types in more complex use cases are in desperate need of logic that can be resolved during the compilation of a particular program.

  • @rafaelnegron_web
    @rafaelnegron_web 11 หลายเดือนก่อน

    I feel like that laugh at 3:49 was a genuine Theo, almost like he broke character for a second and had a real chuckle. Great content! Keep it up.

  • @omri9325
    @omri9325 11 หลายเดือนก่อน +13

    This is very very cursed, could not expect less from Apple

  • @nicgrobler1519
    @nicgrobler1519 10 หลายเดือนก่อน

    adding ‘logic’ to config is like building a house of cards, except where the cards are made of s**t

  • @_RafaelKr
    @_RafaelKr 10 หลายเดือนก่อน

    Awesome, finally I can write my Ansible configs in a sane way. Not the full config, but what I define in my Inventory.

  • @excitedbox5705
    @excitedbox5705 11 หลายเดือนก่อน +4

    So C macros for config files? something like Cmake? This is just another syntax to add to the collection I have to use once every few weeks. Between all these scripting languages, config formats, CLIs, programming languages, etc we are expected to know is nearing 100+.

    • @soniablanche5672
      @soniablanche5672 11 หลายเดือนก่อน

      you can actually use C macros in any languages, but nobody does it because it would confuse newbies who have no idea what a preprocessor is
      EDIT: also your IDE would complain about syntax errors lol

    • @dealloc
      @dealloc 10 หลายเดือนก่อน

      Definitely not like CMake. Thankfully.

  • @qandstuff
    @qandstuff 10 หลายเดือนก่อน

    That’s really interesting, thanks for doing a video on this.

  • @carmineingaldi47
    @carmineingaldi47 10 หลายเดือนก่อน +2

    It seems they tried to recreate Terraform's HCL language, but without Terraform behind. Still I don't see it's usage overlapping wit json/yaml/toml or whatever. Let's see 3 use cases:
    1. Transport format: it doesn't seem suitable (if I need schema oriented stuff and validation why not using binary formats such as thrift,avro or protobuffers?)
    2. app configuration: imho I still would go for something simple and execute logic in my application instead of adding an additional step in my build process for compiling and packaging
    3. Build configuration: do i really need standardization?eg If I'm in the jvm ecosystem I use gradle with groovy or kts and there is one in a billion cases where I need to transfer this configuration to another stack. Yes it takes more mental energy to learn all the tools and languages in order to be a polyglot developer but there is not so much to do unless you don't want to invent a an ecosystem agnostic deps/build management system...and good luck with that!

  • @torb-no
    @torb-no 10 หลายเดือนก่อน +3

    Wouldn’t say say Apple dislike JavaScript when they have integrated JavaScript support all over the place in their products.
    But yeah, Pkl looks cool! Always great to see more safety in languages. Thanks for showcasing it.

  • @virkony
    @virkony 9 หลายเดือนก่อน

    Nickel also have constraints and documentation. And Nix is really cool in merging things and have inter-dependent pluggable modules of configurations.

  • @zephyr7k
    @zephyr7k 11 หลายเดือนก่อน +10

    I can't wait to see this for Terraform

    • @gearboxworks
      @gearboxworks 11 หลายเดือนก่อน

      Of course a third party might do it, but it's not likely to get first-class support from Hashicorp since they defined their own config language in HCL.
      It *might* make Hashicorp listen to users more and address some of the issues with HCL, though.

    • @LaoZhao11
      @LaoZhao11 10 หลายเดือนก่อน

      I agree with your point of view!!!

    • @pqnet84
      @pqnet84 9 หลายเดือนก่อน

      Have you tried cdktf?

  • @ArizeOW
    @ArizeOW 10 หลายเดือนก่อน +7

    "Pickle" sounds like "Pickel" which is German for "Pimple". Can't wait to hear my coworkers say "Create a pimple file for this project!". For that reason, I'm out 😆

  • @DeuxisWasTaken
    @DeuxisWasTaken 11 หลายเดือนก่อน +3

    They thankfully realised that the only way to have it adopted is to not only open source it but provide extensions to major editors, even VS Code. It's a good call, if they tried to make something proprietary, it would die painfully.
    Pkl seems cool, but it smells of something that will be infamous for quirks and hard to make parsers like YAML. Time will tell I guess, I do like it and hope it catches on and ends up being good.

  • @nO_d3N1AL
    @nO_d3N1AL 10 หลายเดือนก่อน

    This came out of nowhere, they basically made a very accessible and powerful modelling language with generators and all... incredible

  • @devinlauderdale9635
    @devinlauderdale9635 5 หลายเดือนก่อน

    Theo this is exactly the approach Hashicorp tried to take with HCL

  • @katrinabryce
    @katrinabryce 10 หลายเดือนก่อน

    7:52 - The Zip Code rule will break in the UK, were our equivalent, postcodes are a string in three sections. The first section is one or two letters, represinting the main postcode region, the next is the postcode district, which is 1 or 2 numbers, or a number followed by a letter. Then there is a space, then a number and two letters.

    • @chri-k
      @chri-k 10 หลายเดือนก่อน

      well, of course a rule targeting US postal codes will break when given something that is not a US postal code

  • @sergiotortosabenedito8604
    @sergiotortosabenedito8604 10 หลายเดือนก่อน +1

    Honestly, I've already seen all of this before. There's a language much smaller called Nickel, same concept but it's based on FP (perfect for config) and it's already past 1.0.0.

  • @HiImKyle
    @HiImKyle 11 หลายเดือนก่อน +4

    So it doesn't replace or "kill" anything, it just makes making those things more usable? I don't think I'm understanding it right

    • @yoanhg421
      @yoanhg421 11 หลายเดือนก่อน +3

      Clickbait

    • @felixw841
      @felixw841 11 หลายเดือนก่อน +2

      Well, both. There's the json/yaml/whatever generators in the CLI itself. With those, you could only ever *write* PKL from now on and add a pkl step to your build process which translates your pkl config your desired format. There's also the interpreter/compiler implementation for different languages, so you could also load pkl files directly from through one of the supported languages (Go, Java, Kotlin, Swift) without the intermediate step to json/yaml/...

    • @HiImKyle
      @HiImKyle 10 หลายเดือนก่อน +2

      @@felixw841 But whats wrong with json schema?

  • @Ebiko
    @Ebiko 10 หลายเดือนก่อน +4

    So from my understanding, this is supposed to help checking out projects, where the default config is ommitted from the repository, but you still want a default config to be created on first run, like an ENV bootstrap ?
    Or what is this useful for ?

  • @austinsiu2351
    @austinsiu2351 11 หลายเดือนก่อน +4

    I'm afraid that someone is going to craft some overly complex config with this syntax, becoming hard to understand and edit by others

  • @markolson8569
    @markolson8569 10 หลายเดือนก่อน +1

    I swear people undervalue the importance of ease of writing a parser. JSON was designed to be easy to parse; this obviously is not

  • @enderger5308
    @enderger5308 11 หลายเดือนก่อน +3

    This concept has already been executed in the form of Dhall and Nickel. Nice to see another competitor, but I’ll stick with Dhall.

    • @gearboxworks
      @gearboxworks 11 หลายเดือนก่อน

      Had not heard of DHall or Nickel. Just found their websites and notice that while DHall has a VS Code plug-in, they have no support for JetBrains IDEs. So for that reason alone Pkl is more attractive to me, since I'm spend most of my days in GoLand.

  • @HaraldEngels
    @HaraldEngels 10 หลายเดือนก่อน

    Cool, if that should become available for PHP I will use this straight away. Thanks for sharing.

  • @Mikenight120
    @Mikenight120 10 หลายเดือนก่อน

    The fact Go is considered as the first 4, shows Go is going places🔥

  • @parlor3115
    @parlor3115 10 หลายเดือนก่อน +1

    I'm all in for built-in declarative validation rules, but built-in programming will make it hard to maintain readability (you don't know the result until the file is executed / compiled). Still will give it a go, though

  • @Rudxain
    @Rudxain 11 หลายเดือนก่อน +1

    2:01 I wish Rust had built-in syntax for that. Ranged Ints are cool and all, but it should be built-in for any lang like Rust

  • @emo4123
    @emo4123 11 หลายเดือนก่อน +2

    apple and open source in the same sentence is funny af

  • @froxx93
    @froxx93 10 หลายเดือนก่อน

    That gives me strong Proto vibes. Looks cool. Especially for data APIs

  • @AloisMahdal
    @AloisMahdal 10 หลายเดือนก่อน +1

    sure validation is PITA, but why solve it only for file-based config? what about envvars, CLI params and other places such as HTTP endpoints?

  • @dzivojelic
    @dzivojelic 9 หลายเดือนก่อน

    once again reinventing the wheel 😅😅

  • @kdihalas
    @kdihalas 10 หลายเดือนก่อน +1

    So they recreated DHALL?

  • @jugendhacker2833
    @jugendhacker2833 10 หลายเดือนก่อน

    Gives me xkcd 927 vibes... "One standard to rule them all"

    • @jugendhacker2833
      @jugendhacker2833 10 หลายเดือนก่อน

      Oh and what could possibly go wrong if you have a config language that could actually contain logic 🤦

    • @charliecarrot
      @charliecarrot 10 หลายเดือนก่อน

      Does it give you those vibes because he showed that exact xkcd comic at 3:46?

    • @jugendhacker2833
      @jugendhacker2833 10 หลายเดือนก่อน

      ​@@charliecarrotoh I did not even notice that 😅

  • @tombuckley91
    @tombuckley91 10 หลายเดือนก่อน

    I knew Silicon Valleys fondness of pickleball was going to spill over into the collective unconscious.

  • @asimpletune
    @asimpletune 10 หลายเดือนก่อน

    I like how the guy from Super Troopers agrees with me that PKL is probably the path forward in terms of configuration languages. It encodes a lot of type information, so it follows that with PKL is at least capable to generating any static configuration that requires less information. On the other hand, the fact that it is limited as a programming language guarantees that it will remain focused and stay easy to read.

  • @VincentFree
    @VincentFree 10 หลายเดือนก่อน +1

    Don't think kotlin support is mainly about android. Kotlin is used to build ios apps and apps across the Apple eco system. Also it's just a better java and it's able to interop with java so it seems like low hanging fruit though if it's true multi platform kotlin it'll be a bit more that java -> kotlin.
    Happy to see Go support as a first class supported language btw!

  • @Jebediah_w
    @Jebediah_w 10 หลายเดือนก่อน

    This feels like a great format for openapi honestly. It's easy to generate clients for APIs if you share the pkl files

  • @MSparta-HD
    @MSparta-HD 10 หลายเดือนก่อน

    Seems pretty nice for testing purposes too.
    Could define data structure in pkl and create tests that are invalid.
    If you also could import data restrictions from pkl into the code, that would be awesome.
    Like defining data structure in pkl and define constraits on the data there, and using data described in the structure in the code would then import the constraints too.
    Though exporting logic out of the code is not necessarily that good, but maybe could use some autocomplete function in IDE instead.

  • @mkaufmandev
    @mkaufmandev 10 หลายเดือนก่อน

    Did I miss a way to fix iterating over and parsing arrays and/or objects and mixes of the two? JavaScript's nested for loops or for ins or Lodash etc.. to get properties and values is stupid. Did I miss where Pkl fixes this? The casting of obj/array just to iterate and put in the correct order and other things? Thanks for the video nonetheless.

  • @asmod4n
    @asmod4n 10 หลายเดือนก่อน

    Til now I’ve just used URLs for configuration, this looks like the first replacement which actually adds useful functionality beyond that.

  • @RobFisherUK
    @RobFisherUK 10 หลายเดือนก่อน

    I've made a bunch of Python tools that all use YAML for config and despite anchors and my own hack for including files, DRY is not straightforward. I'd happily have a bunch of pkl files for my config if there was a way of getting the output into a Python dictionary.

  • @gearboxworks
    @gearboxworks 11 หลายเดือนก่อน +1

    So, they created Cascading Configuration Language; they should have named it CCL.
    Given how maintainable the seemed-like-a-good-idea-at-the-time CSS turned out to be, I am not so sure that we should consider them creating a cascading configuration language to be a good thing... 🤷‍♂️
    #jmtcw

  • @Danny-zn8hd
    @Danny-zn8hd 10 หลายเดือนก่อน

    A few years ago Apple introduced a conditional and declarative configuration mobile device management model to set conditional parameters to be set on the iOS, MacOS operating systems. This seems like the underlying programming framework is pKL.

  • @masamaeda9217
    @masamaeda9217 5 หลายเดือนก่อน

    I've been using Dhall for the last 5 or 6 years, I honestly think the only reason it hasn't caught on is it came from a functional programming background.

  • @prozacgodgamedev
    @prozacgodgamedev 10 หลายเดือนก่อน

    I tried something tangentially similar to this - I had a half hearted attempt years ago at SQL -> yaml for minecraft server (modded)
    The idea was I would normalize all configuration into a database, and then through a FUSE filesystem mounted over your config folder, it would magically generate confs to read and accept changes written to it. I never finished it but it seemed like a cool idea.

  • @oserodal2702
    @oserodal2702 11 หลายเดือนก่อน +2

    Apple reinventing Nix was unexpected to say the least.

  • @LoudMouth_
    @LoudMouth_ 11 หลายเดือนก่อน

    he turned JSON into a pkl, funniest config language I've ever seen

  • @prozacgodgamedev
    @prozacgodgamedev 10 หลายเดือนก่อน

    do we get a PKL - SQL Table? oh wait, you're covering that right after I asked... damn

  • @Thorax232
    @Thorax232 10 หลายเดือนก่อน

    JetBrains editors already have a decent understanding of common config files. package.json for example has the autocomplete that's shown here (it will even do lookups for dependency versions). next.config.js has this too.
    But I understand the value of codifying this into something common.

  • @pifpafize
    @pifpafize 9 หลายเดือนก่อน

    wow thats soooo cool! solves alot of things that i wrote my own stuff for..

  • @mortenhattesen
    @mortenhattesen 10 หลายเดือนก่อน

    It's like what CMAKE is to Make (and other build systems).
    A meta-configuration language/syntax to generate/validate configuration files

  • @mattmmilli8287
    @mattmmilli8287 10 หลายเดือนก่อน +1

    ngl the most interesting part to me is standardizing the way runtime json gets generated 😮 it’s an easy task but cool not to have to decipher whatever madness someone cooks up to do it

  • @ivailogeimara
    @ivailogeimara 11 หลายเดือนก่อน +1

    Why would you create a new language with regex support and use strings for regex that need to be escaped? They could use the perl/js regex syntax of a statement surrounded by 2 slashes.

  • @Avantarius
    @Avantarius 10 หลายเดือนก่อน +1

    This looks very much like the next log4j vulnerability waiting to happen. I'm always surprised how simple things like logging or configuring can become so overengineered. Also validating configuration options in the config rather than at it's use site strikes me as similar to validating user-submitted data only on the browser side and not the server side... it just feels wrong.

  • @anthonvanderneut
    @anthonvanderneut 10 หลายเดือนก่อน

    I went over the source code of Pkl and although it support non-string keys in mappings (i.e. more like msgpack than JSON), it looks like very much it only support a subset of YAML 1.1. Since the YAML 1.2 has been out since 2009, that might have to do with the state of YAML parsers/dumpers in the Java/Kotlin, world and not necessarily a conscious choice by the developers. That unfortunately makes it only a potential replacement for a subset of YAML supporting applications, and also not a potential replacement for Python's pickle format.

  • @stevefan8283
    @stevefan8283 11 หลายเดือนก่อน +1

    Sad that they don't have out of the box dotnet support. Just raised an issue about that.

  • @seannewell397
    @seannewell397 10 หลายเดือนก่อน +2

    Is it a less powerful nix?

  • @joseph_p
    @joseph_p 10 หลายเดือนก่อน

    I could see this being useful for generating docker compose files.

  • @EvanBoldt
    @EvanBoldt 10 หลายเดือนก่อน

    I’ve found myself wondering why config files can’t have type hinting. Like being able to see what options are available for a certain property.

    • @liam8398
      @liam8398 10 หลายเดือนก่อน

      that's what IDEs are for

  • @bart2019
    @bart2019 10 หลายเดือนก่อน +1

    If they keep extending it this way, they'll eventually end up with full blown JavaScript.

  • @MeriaDuck
    @MeriaDuck 10 หลายเดือนก่อน +2

    Classes, functions, loops and annotations; surely they did not reinvent C# or Java?!
    So to prevent using, say, groovy to do this, we now need pkl. That's just replacing 💩 with new 💩.
    All this smells too much like XML with xml schema. But a bit better, because XML is a massive 💩🙃

  • @hopskipjumpfly
    @hopskipjumpfly 11 หลายเดือนก่อน +1

    Now can you please do that video on why you love Xcode? 😛