1"use strict";(self.webpackChunkblog=self.webpackChunkblog||[]).push([["2203"],{14152(e,n,t){t.r(n),t.d(n,{assets:()=>l,contentTitle:()=>r,default:()=>h,frontMatter:()=>a,metadata:()=>o,toc:()=>d});var o=t(61621),i=t(64558),s=t(43747);let a={slug:"liftoff",title:"We Have Liftoff!",description:"Cosmonic launches Developer Preview \u2014 go from napkin sketch to production WebAssembly app in minutes. Built on wasmCloud, the CNCF application runtime.",date:new Date("2022-09-29T04:00:00.000Z"),image:"./rocket_launch.webp",authors:"kevin",tags:["wasm","webassembly","product"],about:"Cosmonic",mentions:["WebAssembly","CosmonicControl","wasmCloud","CNCF","Go","BytecodeAlliance"]},r,l={image:t(29042).A,authorsImageUrls:[void 0]},d=[{value:"The Road So Far",id:"the-road-so-far",level:2},{value:"Traveling the Unpaved Road",id:"traveling-the-unpaved-road",level:3},{value:"Drinking our own Champagne",id:"drinking-our-own-champagne",level:3},{value:"What is Cosmonic?",id:"what-is-cosmonic",level:2},{value:"Get Started!",id:"get-started",level:2}];function c(e){let n={a:"a",admonition:"admonition",em:"em",h2:"h2",h3:"h3",li:"li",p:"p",strong:"strong",ul:"ul",...(0,s.R)(),...e.components};return(0,i.jsxs)(i.Fragment,{children:[(0,i.jsxs)(n.p,{children:["Cosmonic has entered the ",(0,i.jsx)(n.strong,{children:"Developer Preview"})," phase and is now inviting users to deploy their\nideas."]}),"\n","\n",(0,i.jsxs)(n.p,{children:["Back in 2018, only a few heretics like myself had truly embraced WebAssembly as a game-changing\ntechnology. I'd tried to convince a few people of the coming change, but most of them figured I'd\nspent too much time near the coffee makers. That is, until I crossed paths with ",(0,i.jsx)(n.strong,{children:"Liam Randall"}),"\nwhile working for a large financial company."]}),"\n",(0,i.jsxs)(n.p,{children:["Liam and I had each done our tours of duty in large enterprises. We'd ",(0,i.jsx)(n.em,{children:"seen things"}),", you know?\nTerrible things. We'd seen how long it takes for a large company to react to a vulnerability\ndetected in some obscure Java dependency three levels deep in a dependency tree. Multiply that time\nand effort by the thousands and the splinter becomes a spear. I used to go from team to team,\nconsulting on building microservices. Each time, I saw the same pattern:"]}),"\n",(0,i.jsxs)(n.ul,{children:["\n",(0,i.jsx)(n.li,{children:"Copy and paste boilerplate from a template"}),"\n",(0,i.jsxs)(n.li,{children:["Tightly couple to web servers, database clients, message brokers, tracing, metrics, logging, ",(0,i.jsx)(n.em,{children:"ad\nnauseam"})," ..."]}),"\n",(0,i.jsx)(n.li,{children:"Diverge from the template"}),"\n",(0,i.jsx)(n.li,{children:"Become a maintenance nightmare, with 90% of the reason for change/recompile/redeploy having\nnothing to do with the core features"}),"\n",(0,i.jsx)(n.li,{children:"Ultimately end up with a re-design/re-architect phase because the development/iteration version of\nthe app doesn't scale right in production"}),"\n"]}),"\n",(0,i.jsx)(n.p,{children:"I've always had side projects and ideas and dreams of software I wanted to build. Most of the time,\nI'd end up tossing those ideas aside because the friction, frustration, effort, and often money, to\nget from my napkin sketch to production was just too much."}),"\n",(0,i.jsx)(n.h2,{id:"the-road-so-far",children:"The Road So Far"}),"\n",(0,i.jsx)(n.p,{children:"I wanted something as brain-dead simple as taking my idea and convert
1ing it into an application. To\nfit into a tweet, I described it as converting napkin drawings into shipping software. Or, as a\nfunction: f(\u{1F4D2}) = \u{1F680}"}),"\n",(0,i.jsxs)(n.p,{children:["All the friction and difficulties aside, ",(0,i.jsx)(n.em,{children:"software development wasn't fun anymore"}),". It had lost the\njoy I used to feel a long time ago. I had expected to lose the feeling of ",(0,i.jsx)(n.em,{children:"awe"})," over time as all\nthis technology became the daily routine that paid my bills, but I wanted...",(0,i.jsx)(n.em,{children:"needed"})," software\ndevelopment to be ",(0,i.jsx)(n.em,{children:"delightful"})," again."]}),"\n",(0,i.jsxs)(n.p,{children:["So we set out on this journey to improve the lives of developers. To make software development\n",(0,i.jsx)(n.em,{children:"joyful"}),". We sketched out this vision we had of a canvas on which developers could ",(0,i.jsx)(n.em,{children:"draw"}),' their\napplications. It should feel like the design process with a "ship it" button at the end.']}),"\n",(0,i.jsx)(n.h3,{id:"traveling-the-unpaved-road",children:"Traveling the Unpaved Road"}),"\n",(0,i.jsxs)(n.p,{children:["Nothing like that existed for WebAssembly, let alone for the commonly used languages and platforms.\nWe were going to have to build everything from the ground up. Normally when you set out to build a\nproduct, there are a number of giants on whose shoulders you can stand to gain advantages. Most of\nthe time, ",(0,i.jsx)(n.em,{children:"someone"})," has come before you and paved the road to your destination."]}),"\n",(0,i.jsx)(n.p,{children:"This is not the case for Cosmonic and WebAssembly in general. While there are some well-worn ruts in\nthe dirt made by pioneers like Fastly, Cloudflare, the Bytecode Alliance, and even the\nRust+WebAssembly community, today much of this is uncharted territory."}),"\n",(0,i.jsx)(n.p,{children:"As we've built Cosmonic from our own napkin sketches, we've had to build our own tooling, create our\nown environments, learn our own hard lessons, and make a number of contributions to various open\nsource projects. At times it felt very much like we were building the bridge as we crossed it. If we\nstopped to look down, in classic Looney Tunes fashion, we'd suddenly become aware of gravity and\nplummet to our doom."}),"\n",(0,i.jsxs)(n.p,{children:["Thus the open source project ",(0,i.jsx)(n.a,{href:"https://wasmcloud.com",children:"wasmCloud"})," was born. This the shoulder of a\ngiant that we built in the open in order to improve and give back to the WebAssembly community and\nto make Cosmonic possible. wasmCloud is an application runtime that hosts components written as\nWebAssembly modules. It can spread compute over disparate infrastructures and connect Wasm modules\nwith ",(0,i.jsx)(n.a,{href:"https://docs.cosmonic.com/glossary#provider",children:"capability providers"})," that expose ",(0,i.jsx)(n.em,{children:"loosely coupled\ncontracts"})," for things like database clients, logging, message brokers, etc. More importantly, it's\nsupposed to make development ",(0,i.jsx)(n.em,{children:"fun"})," and ",(0,i.jsx)(n.em,{children:"easy"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["As outlined in ",(0,i.jsx)(n.a,{href:"https://wasmcloud.com/blog/road_to_ubiquity/",children:"this blog post"}),", wasmCloud is in it\nfor the long haul and is planning on embracing more and more standards as they solidify. wasmCloud\nultimately became part of the ",(0,i.jsx)(n.a,{href:"https://www.cncf.io/",children:"Cloud Native Computing Foundation"}),", hoping to\nimprove its chances to contribute positively to the distributed systems development community."]}),"\n",(0,i.jsxs)(n.p,{children:["In the beginning, there we just a few of us, but ultimately the idea of Cosmonic would coalesce into\nan amazing, mind-blowing product and the incredible team that I get to work with every day. Never\nbefore have I been surrounded by such talented, passionate people who are all so devoted to bringing\n",(0,i.jsx)(n.em,{children:"joy"})," to distributed computing and ruthless in their pursuit of quality."]}),"\n",(0,i.jsx)(n.h3,{id:"drinking-our-own-champagne",children:"Drinking our own Champagne"}),"\n",(0,i.jsxs)(n.p,{children:["When we started out, one of our core tenets was that ",(0,i.jsx)(n.em,{children:"Cosmonic must be as fun to build as it is to\nuse"}),". I had this rule because we were going to build Cosmonic almost entirely out of wasmCloud\ncomponents. This would not only provide a powerful stress test and shakedown of the open source\nproject, but it would immer
1se everyone on the team in the wasmCloud+Cosmonic developer experience.\nProviding a ",(0,i.jsx)(n.em,{children:"great"})," developer experience is one of our highest priorities."]}),"\n",(0,i.jsx)(n.p,{children:"When you launch the Cosmonic application and you see the hosts in your infrastructure view and the\nactors, providers, links, and wormholes on your logic view\u2014all of that is supported by wasmCloud\nactors deployed to wasmCloud hosts communicating over lattices."}),"\n",(0,i.jsx)(n.p,{children:"Stay tuned as we publish a ton more blog posts diving deep into the technical details of how we\nbuilt Cosmonic."}),"\n",(0,i.jsx)(n.h2,{id:"what-is-cosmonic",children:"What is Cosmonic?"}),"\n",(0,i.jsxs)(n.p,{children:["Cosmonic is the culmination of a shared dream of a return to the halcyon days of ",(0,i.jsx)(n.em,{children:"joyful"})," and ",(0,i.jsx)(n.em,{children:"easy"}),"\ndevelopment, designed to meet the demands of today's highly distributed cloud, edge, and IoT\napplications."]}),"\n",(0,i.jsxs)(n.p,{children:["Today, when you set out to build an application, you not only tightly couple your deployment\nartifact to database clients, loggers, file systems, configuration, tracing, and more, but you also\nend up being coupled to your ",(0,i.jsx)(n.em,{children:"scale profile"}),"."]}),"\n",(0,i.jsxs)(n.p,{children:["What typically works fine on a workstation often needs to be completely re-architected to run at\nscale in production. Not so with Cosmonic! With Cosmonic, you can define your business logic, run\nand test it all in a local monolith against local resources, and then deploy it and scale it\nglobally with resiliency and redundancy without rebuilding. ",(0,i.jsx)(n.em,{children:"The scale of your application should be\na runtime knob, not a design-time commitment"}),"."]}),"\n",(0,i.jsx)(n.p,{children:"Spreading your compute out to the edge, to devices, to cloud back-ends, and across multiple\ninfrastructures or cloud providers is something you should be able to do with no fear and just a few\nbutton clicks on your canvas."}),"\n",(0,i.jsx)(n.p,{children:"This developer preview is just the beginning of our journey to building the best distributed\napplication development platform."}),"\n",(0,i.jsx)(n.h2,{id:"get-started",children:"Get Started!"}),"\n",(0,i.jsx)(n.admonition,{title:"Ready to start building distributed applications?",type:"cta"})]})}function h(e={}){let{wrapper:n}={...(0,s.R)(),...e.components};return n?(0,i.jsx)(n,{...e,children:(0,i.jsx)(c,{...e})}):c(e)}},29042(e,n,t){t.d(n,{A:()=>o});let o=t.p+"assets/images/rocket_launch-9a4f328f4f0f831506a115528dc4bf68.webp"},43747(e,n,t){t.d(n,{R:()=>a,x:()=>r});var o=t(1102);let i={},s=o.createContext(i);function a(e){let n=o.useContext(s);return o.useMemo(function(){return"function"==typeof e?e(n):{...n,...e}},[n,e])}function r(e){let n;return n=e.disableParentContext?"function"==typeof e.components?e.components(i):e.components||i:a(e.components),o.createElement(s.Provider,{value:n},e.children)}},61621(e){e.exports=JSON.parse('{"permalink":"/blog/liftoff","source":"@site/content/posts/liftoff/index.mdx","title":"We Have Liftoff!","description":"Cosmonic launches Developer Preview \u2014 go from napkin sketch to production WebAssembly app in minutes. Built on wasmCloud, the CNCF application runtime.","date":"2022-09-29T04:00:00.000Z","tags":[{"inline":true,"label":"wasm","permalink":"/blog/tags/wasm"},{"inline":true,"label":"webassembly","permalink":"/blog/tags/webassembly"},{"inline":true,"label":"product","permalink":"/blog/tags/product"}],"readingTime":5.92,"hasTruncateMarker":true,"authors":[{"name":"Kevin Hoffman","title":"Technology Advisor, Co-Founder Emeritus","url":"https://github.com/autodidaddict","socials":{"github":"https://github.com/autodidaddict","linkedin":"https://www.linkedin.com/in/kevinshoffman/","x":"https://x.com/kevinhoffman"},"imageURL":"https://github.com/autodidaddict.png","key":"kevin","page":null}],"frontMatter":{"slug":"liftoff","title":"We Have Liftoff!","description":"Cosmonic launches Developer Preview \u2014 go from napkin sketch to production WebAssembly app in minutes. Built on wasmCloud, the CNCF application runtime.","date":"2022-09-29T04:00:00.000Z","image":"./rocket_launch.webp","authors":"kevin","tags":["wasm","webassembly","product"],"about":"Cosmonic","mentions":["WebAssembly","CosmonicControl","wasmCloud","CNCF","Go","BytecodeAlliance"]},"unlisted":false,"prevItem":{"title":"Cosmonic Raises $8.5M for Cloud Native Wasm","permalink":"/blog/cosmonic-announces-8-5-million-seed-funding"},"nextItem":{"title":"Mitigate Supply Chain Risk with WebAssembly","permalink":"/blog/mitigating-supply-chain-crisis-with-webassembly"}}')}}]);
Line numbers count LF bytes from the start of the resource, as the search results do. Vendor segments are library code the classifier recognised; they are stored but not indexed. Bytes are shown as Latin1 characters, one per byte.