<?xml version="1.0" encoding="UTF-8"?><rss version="2.0" xmlns:content="http://purl.org/rss/1.0/modules/content/" xmlns:webfeeds="http://webfeeds.org/rss/1.0" xmlns:atom="http://www.w3.org/2005/Atom"><channel><title>DDEV Blog</title><description>Posts about DDEV, Docker, and local development.</description><link>https://ddev.com/blog/</link><language>en-us</language><atom:link href="https://ddev.com/blog/rss.xml" rel="self" type="application/rss+xml"/><lastBuildDate>Tue, 16 Dec 2025 01:19:32 GMT</lastBuildDate><webfeeds:icon>https://ddev.com/favicon/icon.svg</webfeeds:icon><webfeeds:cover image="https://ddev.com/img/og-default.png"/><webfeeds:accentColor>02A8E2</webfeeds:accentColor><webfeeds:logo>https://ddev.com/favicon/type-only.svg</webfeeds:logo><item><title>Thanks to Upsun, and Your Help is Needed Now!</title><link>https://ddev.com/blog/upsun-thank-you-new-sponsors-needed</link><guid isPermaLink="true">https://ddev.com/blog/upsun-thank-you-new-sponsors-needed</guid><description>A thank-you to Upsun for years of support and ongoing support, but recognition that we need new sponsors after their support level decreases again next month.</description><pubDate>Mon, 08 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/12/upsun-ddev.png&quot; alt=&quot;Upsun and DDEV Logos&quot;&gt;&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt; &lt;a href=&quot;https://upsun.com&quot;&gt;Upsun&lt;/a&gt; has been (and remains) a great sponsor of DDEV, but is lowering their support level next month. We need you to fill the gap!&lt;/p&gt;
&lt;p&gt;I&amp;#39;m sure you remember how much Upsun (formerly Platform.sh) has helped the DDEV project along the way. When we were about to lose the ability to use the &amp;quot;DDEV&amp;quot; name, they stepped in and solved the problem. Then they &lt;a href=&quot;platform-sh-becomes-a-lead-sponsor-of-ddev.md&quot;&gt;sponsored DDEV&lt;/a&gt; at a very high level for a couple of years, and in 2025 at a &lt;a href=&quot;platform-sh-ddev-funding-changes.md&quot;&gt;lower level&lt;/a&gt;. They have also managed the DDEV trademark and are now transferring it to the rapidly maturing &lt;a href=&quot;https://ddev.com/foundation&quot;&gt;DDEV Foundation&lt;/a&gt;. We appreciate their significant ongoing support very much, and fully recognize and appreciate their critical role in our history.&lt;/p&gt;
&lt;p&gt;Starting next month, Upsun will be lowering their sponsorship level to $1000/month. They are still one of our most significant supporters, but this leaves a significant gap in our funding.&lt;/p&gt;
&lt;p&gt;Starting in January, we&amp;#39;ll be at about 53% of our sponsorship goal, down from 70% as of December 2025. The current sponsorship level is about $8300/month; with the decrease from Upsun it will drop to about $6300/month. That&amp;#39;s a big hole to fill, and we&amp;#39;re counting on you to help!&lt;/p&gt;
&lt;p&gt;In 2025, the DDEV Foundation (through your support) paid between $8,000-$10,000 per month to developers working on the project for you. Without additional funding, we&amp;#39;re estimating a shortfall of about $2000 a month.&lt;/p&gt;
&lt;h2&gt;How You Can Help&lt;/h2&gt;
&lt;p&gt;DDEV is free and open-source because sponsors like you make it possible. Whether you&amp;#39;re an individual developer, an agency using DDEV for client work, or an organization that depends on DDEV, now is the time to contribute.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Ways to sponsor:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;GitHub Sponsors&lt;/a&gt;&lt;/strong&gt; - Quick and easy, starting at any amount, personal or organizational.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Support contracts&lt;/strong&gt; - Get priority support while funding development&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Custom invoicing&lt;/strong&gt; - We work with your procurement process&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;One-time contributions&lt;/strong&gt; - Every bit helps!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://ddev.com/contact&quot;&gt;Contact us&lt;/a&gt; to discuss sponsorship options that work for your organization.&lt;/p&gt;
&lt;h2&gt;Why This Matters&lt;/h2&gt;
&lt;p&gt;DDEV serves nearly 20,000 developers and teams worldwide every week. Your sponsorship ensures continued development, maintenance, security updates, and community support. When you sponsor DDEV, you&amp;#39;re investing in a tool that saves your team countless hours and makes local development reliable and consistent.&lt;/p&gt;
&lt;p&gt;Let&amp;#39;s work together to keep DDEV strong and sustainable. Thank you for being part of this community!&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Claude Code was used for editing and ideas helped with this post.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>The DDEV Foundation Now Has a Board of Directors!</title><link>https://ddev.com/blog/board-of-directors-established</link><guid isPermaLink="true">https://ddev.com/blog/board-of-directors-established</guid><description>On our path to improved governance and financial sustainability, we&apos;re proud to announce that the DDEV Foundation now has a Board of Directors.</description><pubDate>Fri, 05 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/06/ddev-sustainability.jpg&quot; alt=&quot;Pillars of DDEV Sustainability, Governance, Community, Finance, Transparency&quot;&gt;&lt;p&gt;We&amp;#39;re excited to announce that the DDEV Foundation has officially established a Board of Directors! This is a significant milestone in our journey toward enhanced governance and long-term sustainability for the DDEV project.&lt;/p&gt;
&lt;p&gt;Today we filed an amended &lt;a href=&quot;https://www.sos.state.co.us/biz/ViewImage.do?fileId=20258242147&amp;masterFileId=20211820326&quot;&gt;Articles of Incorporation&lt;/a&gt; with the Secretary of State of Colorado, which includes the Board of Directors.&lt;/p&gt;
&lt;h2&gt;Introducing the New Board&lt;/h2&gt;
&lt;h3&gt;Michael Anello (&lt;a href=&quot;https://github.com/ultimike&quot;&gt;@ultimike&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/12/mike-anello-headshot.jpg&quot; alt=&quot;Mike Anello headshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;Mike Anello is a seasoned Drupal developer with over 15 years of experience. He specializes in Drupal consulting and training through his business, ensuring clients leverage Drupal&amp;#39;s full potential. Mike is a notable community contributor and advocate, sharing his expertise and insights widely. Mike is already serving as the Treasurer of the Foundation.&lt;/p&gt;
&lt;h3&gt;Jen Lampton (&lt;a href=&quot;https://github.com/jenlampton&quot;&gt;@jenlampton&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/12/jen-lampton-headshot.png&quot; alt=&quot;Jen Lampton headshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;Jen Lampton has been building websites since 1997 and participating in Open Source communities since 2006. She is a co-founder of Backdrop CMS and a provisional member of the Drupal security team. Jen currently maintains dozens of Open Source projects and contributes to other projects (including DDEV!) as it applies to her work.&lt;/p&gt;
&lt;h3&gt;Benni Mack (&lt;a href=&quot;https://github.com/bmack&quot;&gt;@bmack&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/12/benni-mack-headshot.png&quot; alt=&quot;Benni Mack headshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;Benni Mack is a long-time TYPO3 core developer and contributor, serving as TYPO3 CMS Team Lead. He brings extensive experience in open source project governance and community building. Benni is passionate about developer experience and has been instrumental in modernizing TYPO3&amp;#39;s development practices.&lt;/p&gt;
&lt;h3&gt;Andrew Berry (&lt;a href=&quot;https://github.com/deviantintegral&quot;&gt;@deviantintegral&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/12/andrew-berry-headshot.jpg&quot; alt=&quot;Andrew Berry headshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;Andrew Berry has been a member and contributor in the Drupal community since 2006. He is also the VP of Technology at Lullabot, where teams &lt;a href=&quot;https://architecture.lullabot.com/adr/20211207-ddev-locals/&quot;&gt;rely on DDEV for local development&lt;/a&gt;. When not doing Drupal and DDEV, Andrew spends his time working on home automation and related open source projects.&lt;/p&gt;
&lt;h3&gt;Randy Fay (&lt;a href=&quot;https://github.com/rfay&quot;&gt;@rfay&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/12/randy-fay-headshot.jpg&quot; alt=&quot;Randy Fay headshot&quot;&gt;&lt;/p&gt;
&lt;p&gt;Randy is the original maintainer of DDEV, enjoying it since 2016. He has deep roots in the Drupal community and has done loads of traveling by bike.&lt;/p&gt;
&lt;h2&gt;Our Vision: Sustainability and Financial Stability for the Project&lt;/h2&gt;
&lt;p&gt;Improved governance is one of our key long-term goals for the project, and was a &lt;a href=&quot;2025-plans.md&quot;&gt;key goal for 2025&lt;/a&gt;. We know that this will be an ongoing process that we&amp;#39;ll have to grow into, and we invite your participation. We meet every two months as a group, and the entire community is invited. Subscribe to the &lt;a href=&quot;https://github.com/orgs/ddev/discussions/categories/ddev-advisory-group&quot;&gt;meeting announcements and summaries&lt;/a&gt; and &lt;a href=&quot;https://ddev.com/contact&quot;&gt;ask for a calendar invitation&lt;/a&gt; if you&amp;#39;d like. These meetings are also announced in the monthly &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course the key long-term goal is sustainability in general. We don&amp;#39;t want to depend on any single maintainer, and we want to ensure that DDEV can continue to thrive and grow for years to come. Financial sustainability is a key part of that, but just one part. Read more about our &lt;a href=&quot;sustainability-for-ddev.md&quot;&gt;path to sustainability&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Share Your Thoughts!&lt;/h2&gt;
&lt;p&gt;Do you have additional ideas, suggestions, or insight into how DDEV&amp;#39;s future could be more sustainable? We would sure love to &lt;a href=&quot;https://ddev.com/contact&quot;&gt;hear from you&lt;/a&gt;! Or get active and join our &lt;a href=&quot;https://github.com/orgs/ddev/discussions/categories/ddev-advisory-group&quot;&gt;DDEV Advisory Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Do you have questions or want to talk (about sponsoring or anything else)? &lt;a href=&quot;https://ddev.com/contact/&quot;&gt;Contact us!&lt;/a&gt; or join us in &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Have you signed up for the monthly &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt;? We&amp;#39;d love to have you.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Claude Code was used for editing and formatting in the blog post.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Announcements</category></item><item><title>Power Through Blackouts: How DDEV Community Helped Me in Ukraine</title><link>https://ddev.com/blog/power-through-blackouts-ddev-community-support</link><guid isPermaLink="true">https://ddev.com/blog/power-through-blackouts-ddev-community-support</guid><description>Working as a DDEV maintainer during wartime blackouts in Ukraine, and how the DDEV community&apos;s support made it possible to continue contributing through power challenges.</description><pubDate>Mon, 01 Dec 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/11/ecoflow-delta-2-delta-3.jpg&quot; alt=&quot;EcoFlow DELTA 2 and DELTA 3 power stations sponsored by DDEV community&quot;&gt;&lt;p&gt;Since Russia&amp;#39;s full-scale invasion of Ukraine in 2022, Russian forces have been systematically targeting our civilian power infrastructure. These attacks cause blackouts that can last hours or days, making it difficult to work, live normally, or even survive the winter. In November 2025, these attacks got much worse.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m a DDEV maintainer living in Kremenchuk, Ukraine. I&amp;#39;m Stanislav Zhuk, but you can call me Stas. I became a DDEV maintainer in October 2023, and you can read more about my background in the &lt;a href=&quot;introducing-maintainer-stas.md&quot;&gt;introduction post&lt;/a&gt;. I work a typical five-day week, usually from afternoon to evening, which lets me overlap with Randy&amp;#39;s timezone.&lt;/p&gt;
&lt;p&gt;This is my story of how your support helped me keep working through Russian attacks on our infrastructure, and why it matters so much.&lt;/p&gt;
&lt;h2&gt;Where Is Kremenchuk?&lt;/h2&gt;
&lt;p&gt;Kremenchuk is an industrial city in central Ukraine on the banks of the Dnieper River.&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe src=&quot;https://www.google.com/maps/embed?pb=!1m18!1m12!1m3!1d163792.42791563695!2d33.33258837822418!3d49.06253597268899!2m3!1f0!2f0!3f0!3m2!1i1024!2i768!4f13.1!3m3!1m2!1s0x40d751c89822e669%3A0x52e2019915e44908!2sKremenchuk%2C%20Poltava%20Oblast%2C%20Ukraine!5e0!3m2!1sen!2s!4v1732537200000!5m2!1sen!2s&quot; width=&quot;600&quot; height=&quot;450&quot; style=&quot;border:0;&quot; allowfullscreen=&quot;&quot; loading=&quot;lazy&quot; referrerpolicy=&quot;no-referrer-when-downgrade&quot;&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;The Current Situation&lt;/h2&gt;
&lt;p&gt;In November 2025, Russians heavily attacked Kremenchuk&amp;#39;s infrastructure. We had no electricity, water, or central heating for almost a whole day. Now we have blackouts every day - typically 1.5-2 hours with electricity, then 3-5 hours without it, and the cycle repeats. There&amp;#39;s no sign of when this will get better.&lt;/p&gt;
&lt;p&gt;This is the reality we live in: you can never know when and where the next strike will happen. I read the news every day, and every day civilians die. I try to focus on other things to stay sane, but the threat is constant.&lt;/p&gt;
&lt;p&gt;Working during these conditions needs careful planning. For work, I need to keep my laptop running and have internet with acceptable speed. For home, I need to power the refrigerator during long blackouts so food doesn&amp;#39;t spoil. Some things I cannot control: water supply and central heating. I have an electric radiator, but it uses too much power to run from battery stations during long outages.&lt;/p&gt;
&lt;h2&gt;Surviving Through Russian Attacks on Infrastructure&lt;/h2&gt;
&lt;h3&gt;2022: The Beginning&lt;/h3&gt;
&lt;p&gt;When Russian attacks on our power infrastructure started in fall 2022, I wasn&amp;#39;t ready for long blackouts. I had a couple of small powerbanks for mobile phones and bought several portable lanterns so I wouldn&amp;#39;t sit in the dark. I still use them.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/11/portable-lanterns-2022.jpg&quot; alt=&quot;Portable lanterns for blackouts&quot;&gt;&lt;/p&gt;
&lt;p&gt;The market was crazy at that time - prices went very high and it was hard to find equipment. I didn&amp;#39;t buy anything big then, just waited for things to calm down.&lt;/p&gt;
&lt;h3&gt;2023-2024: Building Capacity&lt;/h3&gt;
&lt;p&gt;After the first wave of attacks on Ukrainian infrastructure ended and prices went back to normal, I bought two more powerful powerbanks to run my laptop. They got me through 2023 and the first half of 2024. Now I use them to charge mobile phones.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/11/powerbanks-laptop-2023.jpg&quot; alt=&quot;Powerbanks for laptop&quot;&gt;&lt;/p&gt;
&lt;p&gt;The second problem was internet during blackouts. I switched to a fiber optic provider and bought two UPS units: SKE UPS Mini POE 60W for the router and Marsriva Smart Mini UPS KP5 for the ONA (Optical Network Adapter). Together they give me stable internet for about 8-9 hours when there&amp;#39;s no power.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/11/internet-ups-front.jpg&quot; alt=&quot;UPS units - front view&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/11/internet-ups-back.jpg&quot; alt=&quot;UPS units - back view&quot;&gt;&lt;/p&gt;
&lt;h3&gt;2024: First Community Support&lt;/h3&gt;
&lt;p&gt;In 2024, Russian attacks on infrastructure came back. Thanks to all of you, an &lt;strong&gt;EcoFlow DELTA 2 was sponsored ($1,170)&lt;/strong&gt;, and I bought it at a local shop. This changed everything. Instead of dealing with multiple devices and cables, I just plug one socket into the EcoFlow and have power for the whole room: laptop, external display, lights, and more.&lt;/p&gt;
&lt;p&gt;This made things much easier. With one power station, I could work through blackouts without constantly worrying about my battery dying.&lt;/p&gt;
&lt;h3&gt;November 2025: Facing Harder Russian Attacks&lt;/h3&gt;
&lt;p&gt;The Russian attacks in November 2025 are much harder than in 2022. They strike more often and cause more damage to our infrastructure.&lt;/p&gt;
&lt;p&gt;You helped again. An &lt;strong&gt;EcoFlow DELTA 3 ($910)&lt;/strong&gt; was sponsored. The market changed, and these units got cheaper. Now I don&amp;#39;t worry about whether DELTA 2 can charge fully in the short windows when we have electricity. I can power the refrigerator during very long blackouts and work on DDEV at the same time.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/11/ecoflow-delta-2-delta-3.jpg&quot; alt=&quot;EcoFlow DELTA 2 and DELTA 3 power stations&quot;&gt;&lt;/p&gt;
&lt;p&gt;Having two power stations makes me feel much more confident during these hard war times. I can:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Keep one station charging while using the other&lt;/li&gt;
&lt;li&gt;Run both laptop and refrigerator at the same time during long outages&lt;/li&gt;
&lt;li&gt;Work without worrying about power levels all the time&lt;/li&gt;
&lt;li&gt;Focus on DDEV work instead of managing power&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;The Impact of Your Support&lt;/h2&gt;
&lt;p&gt;Your support has been really important. Without these power stations, I couldn&amp;#39;t do my work as a DDEV maintainer during blackouts. You didn&amp;#39;t just give me equipment - you gave me the ability to keep contributing and keep helping the project and its users, even in these hard times.&lt;/p&gt;
&lt;p&gt;Thank you for supporting Ukraine and understanding how important our situation is to Europe and the world. Your support means more than just equipment - it&amp;#39;s a reminder that we&amp;#39;re not alone.&lt;/p&gt;
&lt;p&gt;This support is more than just hardware. It shows what open source communities can be: people helping each other through hard times, so we can keep building together.&lt;/p&gt;
&lt;h2&gt;Looking Forward&lt;/h2&gt;
&lt;p&gt;I don&amp;#39;t know when things will get better. But I know I have what I need to keep working, thanks to you. Every contribution makes a real difference in keeping DDEV maintained and supported.&lt;/p&gt;
&lt;p&gt;If you want to support DDEV, visit &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;DDEV&amp;#39;s GitHub Sponsors page&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;I&amp;#39;m grateful for everyone who supports DDEV. Your help lets me keep working, keep contributing, and keep helping this community grow, even in the darkest times.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;This article was edited and refined with assistance from Claude Code.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>Fritz!Box Routers and DDEV</title><link>https://ddev.com/blog/fritzbox-routers-and-ddev</link><guid isPermaLink="true">https://ddev.com/blog/fritzbox-routers-and-ddev</guid><description>Solving DNS Rebinding issues with Fritz!Box routers (also spelled &quot;Fritzbox&quot; or &quot;Fritz Box&quot;)</description><pubDate>Tue, 18 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/11/FritzBox-DNS-Rebind-Schutz.png&quot; alt=&quot;Fritz!Box router network settings showing DNS rebinding protection options&quot;&gt;&lt;p&gt;DDEV is designed so that most people never have to change the configuration of their local workstation, and that includes not having to edit their hosts file. All the details are in &lt;a href=&quot;ddev-name-resolution-wildcards.md&quot;&gt;DNS Name Resolution and Wildcards&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;However, one particular brand of router, the Fritz!Box, has a different DNS configuration than most other routers, and it includes DNS Rebinding Protection that blocks local development domains.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; &lt;em&gt;If you use a Fritz!Box router, add &lt;code&gt;ddev.site&lt;/code&gt; to the router&amp;#39;s DNS Rebinding Protection exceptions.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;The Problem&lt;/h2&gt;
&lt;p&gt;When you first set up DDEV with a Fritz!Box router, you might encounter a failure to resolve the domain name when trying to access your &lt;code&gt;*.ddev.site&lt;/code&gt; project, even though your site is accessible via the &lt;code&gt;127.0.0.1&lt;/code&gt; direct URL given in &lt;code&gt;ddev describe&lt;/code&gt;. This happens because Fritz!Box routers enable DNS Rebinding Protection that suppresses DNS responses pointing to your own network.&lt;/p&gt;
&lt;h2&gt;What is DNS Rebinding Protection?&lt;/h2&gt;
&lt;p&gt;DNS Rebinding Protection is a security feature that guards against a sophisticated attack technique. In a DNS rebinding attack, a malicious website tricks your browser into accessing services on your local network (like your computer, router, printer, or other devices) by manipulating DNS responses. Here&amp;#39;s how the attack works:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;You visit a malicious website that includes JavaScript code&lt;/li&gt;
&lt;li&gt;The website&amp;#39;s DNS initially resolves to the attacker&amp;#39;s server&lt;/li&gt;
&lt;li&gt;The attacker then changes the DNS to point to a local IP address like &lt;code&gt;127.0.0.1&lt;/code&gt; or &lt;code&gt;192.168.1.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;The JavaScript code in your browser can now access local services, potentially extracting sensitive data or changing settings&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;Fritz!Box routers protect against this by blocking DNS lookups that resolve to local IP addresses like &lt;code&gt;127.0.0.1&lt;/code&gt;, &lt;code&gt;192.168.x.x&lt;/code&gt;, and other private network ranges. While this security feature protects against real attacks, it also blocks legitimate local development domains (like DDEV&amp;#39;s &lt;code&gt;ddev.site&lt;/code&gt;).&lt;/p&gt;
&lt;h2&gt;Why DDEV is Safe&lt;/h2&gt;
&lt;p&gt;DDEV&amp;#39;s use of &lt;code&gt;127.0.0.1&lt;/code&gt; and the &lt;code&gt;ddev.site&lt;/code&gt; domain is intentional and safe—it&amp;#39;s not a DNS rebinding attack. Here&amp;#39;s why:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;You control the configuration&lt;/strong&gt;: You explicitly install and configure DDEV on your own machine&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Local-only access&lt;/strong&gt;: DDEV projects only respond to requests from your own computer (&lt;code&gt;127.0.0.1&lt;/code&gt;), not from external networks&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Transparent operation&lt;/strong&gt;: DDEV openly documents exactly how it uses DNS and local networking&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The Fritz!Box can&amp;#39;t distinguish between a legitimate local development tool like DDEV and a potential DNS rebinding attack—both use domain names that resolve to &lt;code&gt;127.0.0.1&lt;/code&gt;. That&amp;#39;s why you need to explicitly allow &lt;code&gt;ddev.site&lt;/code&gt; as an exception.&lt;/p&gt;
&lt;h2&gt;The Solution&lt;/h2&gt;
&lt;p&gt;Rather than relying on DDEV&amp;#39;s hosts file fallback, it&amp;#39;s better to solve the underlying DNS problem by configuring your Fritz!Box router to allow the &lt;code&gt;ddev.site&lt;/code&gt; domain.&lt;/p&gt;
&lt;p&gt;Here&amp;#39;s how to fix it:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Access your Fritz!Box router settings - the factory defaults are &lt;code&gt;http://fritz.box&lt;/code&gt; and &lt;code&gt;http://192.168.178.1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Navigate to &lt;strong&gt;Home Network&lt;/strong&gt; (Heimnetz) &amp;gt; &lt;strong&gt;Network&lt;/strong&gt; (Netzwerk) &amp;gt; &lt;strong&gt;Network Settings&lt;/strong&gt; (Netzwerkeinstellungen)&lt;/li&gt;
&lt;li&gt;Look for the DNS rebinding protection section&lt;/li&gt;
&lt;li&gt;Add &lt;code&gt;ddev.site&lt;/code&gt; to the exceptions list&lt;/li&gt;
&lt;li&gt;Save your settings&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/11/FritzBox-DNS-Rebind-Schutz-callouts.png&quot; alt=&quot;Fritz!Box DNS Rebinding Protection Settings with callouts showing where to add exceptions&quot;&gt;&lt;/p&gt;
&lt;p&gt;After making this change, DDEV&amp;#39;s DNS resolution will work as expected, and you can access your projects using the standard &lt;code&gt;.ddev.site&lt;/code&gt; URLs.&lt;/p&gt;
&lt;h2&gt;Alternative Solutions&lt;/h2&gt;
&lt;p&gt;If you prefer not to modify your router settings, or you do not have access to them, you have two other options:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Configure your computer to use a less restrictive DNS provider&lt;/strong&gt; such as Cloudflare&amp;#39;s public DNS (&lt;code&gt;1.1.1.1&lt;/code&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Use DDEV&amp;#39;s hosts file fallback&lt;/strong&gt; (this requires superuser privileges and modifies system files)&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The router configuration approach is recommended because it preserves DDEV&amp;#39;s design principle of not requiring system file modifications.&lt;/p&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/networking/#restrictive-dns-servers-especially-fritzbox-routers&quot;&gt;DDEV Documentation on Restrictive DNS Servers&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.npostnik.de/allgemein/ddev-neues-modem-fritzbox-und-dns_probe_finished_nxdomain/&quot;&gt;German blog post detailing the Fritz!Box issue&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Read all the details about DNS Name Resolution in &lt;a href=&quot;ddev-name-resolution-wildcards.md&quot;&gt;DNS Name Resolution and Wildcards&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ch.fritz.com/service/wissensdatenbank/dok/FRITZ-App-Fon/1_Benutzeroberflache-der-FRITZ-Box-aufrufen/&quot;&gt;Article in the Fritz! knowledge base (in German) how to access the admin interface of a Fritz!Box&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contacting Fritz!Box Support to Ask for &lt;code&gt;ddev.site&lt;/code&gt; to be added to their exceptions&lt;/h2&gt;
&lt;p&gt;If you want to request that AVM (the makers of Fritz!Box) consider adding &lt;code&gt;ddev.site&lt;/code&gt; to their default DNS Rebinding Protection exceptions, consider contacting their support team. A friend of DDEV has already done this, but more requests may help.&lt;/p&gt;
&lt;h2&gt;Thanks!&lt;/h2&gt;
&lt;p&gt;Thanks to &lt;a href=&quot;https://my.typo3.org/u/ischmittis&quot;&gt;Ingo Schmitt&lt;/a&gt; for investigating and demonstrating the fix. Thanks to &lt;a href=&quot;https://www.npostnik.de/ueber-mich/&quot;&gt;npostnik&lt;/a&gt; for already having documented this in a German blog post.&lt;/p&gt;
&lt;h2&gt;Keep in touch!&lt;/h2&gt;
&lt;p&gt;We&amp;#39;d love to hear your experience. Join us in &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt; or &lt;a href=&quot;https://github.com/ddev/ddev/issues&quot;&gt;open an issue&lt;/a&gt; if you have success (or failure 😀). We&amp;#39;re always trying to make DDEV better for you.&lt;/p&gt;
&lt;p&gt;Assisted in compilation and editing by Claude Code.&lt;/p&gt;
</content:encoded><category>TechNotes</category></item><item><title>DDEV November 2025 Newsletter</title><link>https://ddev.com/blog/ddev-november-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-november-2025-newsletter</guid><description>Board of Directors announced, Claude Code with DDEV, community tutorials, DrupalCon Vienna highlights, and upcoming training sessions</description><pubDate>Mon, 17 Nov 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/11/Autumn Colors in Steamboat Springs Colorado.jpg&quot; alt=&quot;Autumn Colors in Steamboat Springs, Colorado&quot;&gt;&lt;p&gt;💕 A &lt;a href=&quot;https://ryanstubbs.co.uk/2025/11/a-love-letter-to-ddev/&quot;&gt;Love Letter to DDEV&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;As the year winds down, it&amp;#39;s time to get serious about 2026 planning 📋. We&amp;#39;ll have a meeting in the next few weeks talking about priorities for the new year. See some &lt;a href=&quot;https://github.com/orgs/ddev/projects/10&quot;&gt;WIP proposals&lt;/a&gt; and &lt;a href=&quot;https://ddev.com/contact&quot;&gt;contact us any time with your opinions↗&lt;/a&gt; or to get an invitation to the meeting.&lt;/p&gt;
&lt;h2&gt;What&amp;#39;s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Claude Code AI-assisted PRs for DDEV Training&lt;/strong&gt; → Learn how to use Claude Code to create pull requests for DDEV &lt;a href=&quot;claude-code-ai-pr-for-ddev-contributor-training.md&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A Love Letter to DDEV&lt;/strong&gt;: Ryan Stubbs shares his appreciation for DDEV and its impact on development workflows &lt;a href=&quot;https://ryanstubbs.co.uk/2025/11/a-love-letter-to-ddev/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Claude Code Plugins for Drupal/DDEV&lt;/strong&gt;: Community member Luděk Kvapil has created custom Claude Code commands and plugins for DDEV and Drupal development workflows &lt;a href=&quot;https://github.com/siva01c/claude-plugins&quot;&gt;View on GitHub↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Profiling Your Drupal App with New Relic and DDEV&lt;/strong&gt;: Practical guide session from DrupalCon Vienna 2025 &lt;a href=&quot;https://events.drupal.org/vienna2025/session/profiling-your-drupal-app-new-relic-ddev-practical-guide&quot;&gt;Session details↗&lt;/a&gt; • &lt;a href=&quot;https://www.youtube.com/watch?v=S5oPq1FqB1I&amp;list=PLpeDXSh4nHjR5zd_mBGhzW4YBwuv5zs3d&amp;index=113&quot;&gt;Watch on YouTube↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Video Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drupal CMS und Core für Projektentwicklung unter Windows 11 von Null installieren (German)&lt;/strong&gt;: Complete guide to installing Drupal CMS and Drupal Core for project development on Windows 11 from scratch &lt;a href=&quot;https://www.youtube.com/watch?v=AwORq6A07pc&quot;&gt;Watch on YouTube↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Drupal 11 für Entwickler:innen und Sitebuilder:innen (German)&lt;/strong&gt;: Udemy course for Drupal 11 developers and site builders &lt;a href=&quot;https://www.udemy.com/course/drupal-11-fur-entwicklerinnen-und-sitebuilderinnen/?couponCode=MT251103G2&quot;&gt;Enroll with coupon↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;DDEV Training Continues&lt;/h2&gt;
&lt;p&gt;Join us for upcoming training sessions for contributors and users.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;November 20, 2025 at 10:00 US ET / 16:00 CET — Using DDEV on Windows with WSL2&lt;/strong&gt;
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Using%20DDEV%20in%20Windows%20WSL&amp;dates=20251120T150000Z/20251120T160000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-11-20.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;January 22, 2026 at 10:00 US ET / 16:00 CET — Mutagen, syncing, problems, upload_dirs for direct bind mounts&lt;/strong&gt;
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Mutagen%2C%20syncing%2C%20problems%2C%20upload_dirs%20for%20direct%20bind%20mounts&amp;dates=20260122T150000Z/20260122T160000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2026-01-22.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;February 26, 2026 at 10:00 US ET / 16:00 CET — Git bisect for fun and profit&lt;/strong&gt;
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Git%20bisect%20for%20fun%20and%20profit&amp;dates=20260226T150000Z/20260226T160000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2026-02-26.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;March 26, 2026 at 10:00 US ET / 15:00 CET — Using &lt;code&gt;git worktree&lt;/code&gt; with DDEV projects and with DDEV itself&lt;/strong&gt;
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Using%20git%20worktree%20with%20DDEV%20projects%20and%20with%20DDEV%20itself&amp;dates=20260326T140000Z/20260326T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2026-03-26.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;April 23, 2026 at 10:00 US ET / 16:00 CEST — Creating, maintaining and testing add-ons&lt;/strong&gt;
2026-updated version of our popular add‑on training. &lt;a href=&quot;https://www.youtube.com/watch?v=TmXqQe48iqE&quot;&gt;Previous session recording↗&lt;/a&gt;
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Creating%2C%20maintaining%20and%20testing%20add-ons&amp;dates=20260423T140000Z/20260423T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2026-04-23.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zoom Join Info:
Link: &lt;a href=&quot;https://us02web.zoom.us/j/7315692237?pwd=RHR6NUkwb0g5WXIzS2NOcXRucCthZz09&quot;&gt;Join Zoom Meeting&lt;/a&gt;
Passcode: 12345&lt;/p&gt;
&lt;h2&gt;Events &amp;amp; Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DrupalCon EU in Vienna&lt;/strong&gt; — Randy hosted multiple Birds-of-a-Feather (BoF) sessions at &lt;a href=&quot;https://events.drupal.org/vienna2025&quot;&gt;DrupalCon EU in Vienna↗&lt;/a&gt; thanks to sponsorship from &lt;a href=&quot;https://www.tag1consulting.com/&quot;&gt;Tag1↗&lt;/a&gt; and &lt;a href=&quot;https://upsun.com&quot;&gt;Upsun↗&lt;/a&gt;. Sessions included DDEV Office Hours, &lt;a href=&quot;https://ddev.com/blog/claude-code-ai-pr-for-ddev-contributor-training/&quot;&gt;Contributing to DDEV using Claude Code↗&lt;/a&gt;, &lt;a href=&quot;https://ddev.com/blog/watch-ddev-local-from-scratch-with-windows-wsl2/&quot;&gt;Using DDEV on Windows↗&lt;/a&gt;, DDEV new features, and Git Bisect for Fun and Profit. Watch the &lt;a href=&quot;https://drupal.tv/events/florida-drupalcamp-2025/divide-and-conquer-systematic-approach-troubleshooting-issues&quot;&gt;Git Bisect: Divide and Conquer troubleshooting presentation↗&lt;/a&gt; from Florida DrupalCamp.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV workshops at TYPO3Camp RheinRuhr 2025&lt;/strong&gt; — Randy presented DDEV training at TYPO3Camp RheinRuhr in Germany (Nov 7–9). &lt;a href=&quot;https://rfay.github.io/ddev-from-beginning/&quot;&gt;View training materials↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Governance: We have a Board!&lt;/h2&gt;
&lt;p&gt;The DDEV Foundation now has a formal board. Join us for our annual extended advisory group and board meeting (public; all are welcome): Watch for a blog post about the new board members! (Or &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7590&quot;&gt;sneak peak&lt;/a&gt; by reading the meeting notes.)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;January 14, 2026 at 8:00 AM US Mountain Time / 4:00 PM CET — DDEV Extended Advisory Group and Board Meeting&lt;/strong&gt;
Annual 2-hour review of 2025 and plans for 2026
&lt;a href=&quot;https://github.com/orgs/ddev/discussions/7863&quot;&gt;Discussion details↗&lt;/a&gt; •
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=DDEV%20Extended%20Advisory%20Group%20and%20Board%20Meeting&amp;dates=20260114T160000Z/20260114T180000Z&amp;details=Annual%202-hour%20review%20of%202025%20and%20plans%20for%202026.%0AAgenda%3A%0A-%20DDEV%20Trademark%20transfer%20progress%0A-%202026%20goals%20for%20board%20consideration%0A-%202025%20year-end%20review%20feedback%0A-%20Financial%20summary%20and%20planning%20discussion%0A%0AMeeting%20details%3A%20https%3A%2F%2Fgithub.com%2Forgs%2Fddev%2Fdiscussions%2F7863&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2026-01-14.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Update&lt;/h2&gt;
&lt;p&gt;As of today, the monthly sponsorship commitment is up to 70% of our goal, at $8,376. Thank you! That&amp;#39;s up from 69% and $8,231 last month. → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Stay in the Loop—Follow Us and Join the Conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compiled and edited with assistance from Claude Code and Copilot.&lt;/p&gt;
</content:encoded><category>Newsletters</category></item><item><title>DDEV October 2025 Newsletter</title><link>https://ddev.com/blog/ddev-october-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-october-2025-newsletter</guid><description>New Upsun add-on, quality tools for Drupal with Aljibe, community tutorials, upcoming training, and governance updates</description><pubDate>Mon, 13 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/10/nancy-lewis-2025-10-newsletter.jpeg&quot; alt=&quot;Community, Tools, Growth: Our gateway to the future, by Nancy Lewis&quot;&gt;&lt;p&gt;🚀 October brings new tools, community contributions, and training opportunities! 🌟
Have ideas for DDEV in 2026? &lt;a href=&quot;https://ddev.com/contact&quot;&gt;Contact us↗&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What&amp;#39;s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Upsun/Platform.sh Add-on Released&lt;/strong&gt; → Configure your local project to match its Upsun equivalent with the new official add-on &lt;a href=&quot;ddev-upsun-platformsh-addon.md&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV on Linux in 10 Minutes&lt;/strong&gt; → Quick-start guide for Linux users &lt;a href=&quot;ddev-on-linux-in-10-minutes.md&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contributing to ddev.com Training&lt;/strong&gt; → Learn how to write and contribute blog posts &lt;a href=&quot;contributing-to-ddev-com.md&quot;&gt;Watch↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Highlights&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Metadrop Releases Aljibe&lt;/strong&gt;: Quality and testing toolkit for Drupal development with DDEV &lt;a href=&quot;https://metadrop.net/en/articles/aljibe-quality-and-testing-drupal-developments-ddev&quot;&gt;Read more↗&lt;/a&gt; • &lt;a href=&quot;https://www.thedroptimes.com/54668/metadrop-releases-aljibe-qa-and-testing-toolkit-drupal-development-with-ddev&quot;&gt;The Drop Times coverage↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WordPress Development with &lt;code&gt;ddev pull&lt;/code&gt;&lt;/strong&gt;: Guide to using &lt;code&gt;ddev pull&lt;/code&gt; for WordPress projects &lt;a href=&quot;https://www.koehnlein.dev/en/blog/2025/wordpress-ddev-pull/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;WebHaven Now Powered by DDEV&lt;/strong&gt;: Development workflow success story &lt;a href=&quot;https://webhaven.io/blog/webhaven-now-powered-ddev-local-development&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV and PHPStorm&amp;#39;s Node.js Remote Interpreter&lt;/strong&gt;: Workflow guide for ESLint, Prettier, and more &lt;a href=&quot;https://kitemetric.com/blogs/ddev-and-phpstorm-s-nodejs-remote-interpreter-a-smooth-workflow-for-eslint-prettier-and-more&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Video Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Eureka Tutoriales: Instala WordPress en local con DDEV en 10 minutos (Spanish)&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=muk1Rs_3X64&quot;&gt;Watch↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Eureka Tutoriales: Instala phpMyAdmin y Adminer en DDEV (Spanish)&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=n2vIoFSet2Y&quot;&gt;Watch↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Setting up your local environment to work with the Mautic Documentation&lt;/strong&gt; &lt;a href=&quot;https://www.youtube.com/watch?v=Hnzp-aJ4NWA&quot;&gt;Watch↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;DDEV Training Continues&lt;/h2&gt;
&lt;p&gt;Join us for upcoming training sessions for contributors and users. Guest blog contributions are welcome—learn more in our October 9th training session recording!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;November 20, 2025 at 10:00 US ET / 16:00 CET — Using DDEV in Windows WSL&lt;/strong&gt;
&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Using%20DDEV%20in%20Windows%20WSL&amp;dates=20251120T150000Z/20251120T160000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-11-20.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zoom Join Info:
Link: &lt;a href=&quot;https://us02web.zoom.us/j/7315692237?pwd=RHR6NUkwb0g5WXIzS2NOcXRucCthZz09&quot;&gt;Join Zoom Meeting&lt;/a&gt;
Passcode: 12345&lt;/p&gt;
&lt;h2&gt;Events &amp;amp; Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;CakeFest in Madrid&lt;/strong&gt; — Randy presented a DDEV workshop at &lt;a href=&quot;https://cakefest.org/&quot;&gt;CakeFest&lt;/a&gt; in Madrid. Thanks to everyone who attended!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DrupalCon EU in Vienna&lt;/strong&gt; — Randy will be at &lt;a href=&quot;https://events.drupal.org/vienna2025&quot;&gt;DrupalCon EU in Vienna&lt;/a&gt; thanks to sponsorship from &lt;a href=&quot;https://www.tag1consulting.com/&quot;&gt;Tag1&lt;/a&gt; and &lt;a href=&quot;https://upsun.com&quot;&gt;Upsun&lt;/a&gt;. Catch me to chat about DDEV, join Birds-of-a-Feather sessions, or connect if you&amp;#39;re in the Vienna area. &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;Make an appointment&lt;/a&gt; to make sure we see each other!&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;DDEV Training at TYPO3Camp RheinRuhr&lt;/h2&gt;
&lt;p&gt;Randy will be presenting DDEV training at &lt;a href=&quot;https://www.typo3camp-rheinruhr.de/workshops&quot;&gt;TYPO3Camp RheinRuhr&lt;/a&gt; in Germany November 7-9. Join us to learn about DDEV or connect if you&amp;#39;re in the area!&lt;/p&gt;
&lt;h2&gt;Governance: We have a Board!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;A Board for DDEV Foundation!&lt;/strong&gt; — Join us for the &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7590&quot;&gt;November 5 Advisory Group Meeting&lt;/a&gt; for&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/document/d/1MXatsz2FMBSnllnUArNCv562x0T2-EF1OwqsFEU9_-M/edit?usp=sharing&quot;&gt;Final discussion of updated Articles of Incorporation&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Introduction of new Board members.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Update&lt;/h2&gt;
&lt;p&gt;As of the v1.24.8 release the daily reminders of DDEV sponsorship status on &lt;code&gt;ddev start&lt;/code&gt; have been successful, and we&amp;#39;ve had a number of new sponsors, thank you! Your contributions help us maintain and grow DDEV for the entire community. As of today, the monthly sponsorship commitment is up to 69% of our goal, at $8,231. Thank you! That&amp;#39;s up from 66% and $7,958 last month. → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Stay in the Loop—Follow Us and Join the Conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Compiled and edited with assistance from Claude Code.&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>Contributor Training: Contributing to ddev.com</title><link>https://ddev.com/blog/contributing-to-ddev-com</link><guid isPermaLink="true">https://ddev.com/blog/contributing-to-ddev-com</guid><description>Learn how to contribute to ddev.com by fixing errors and writing blog posts.</description><pubDate>Fri, 10 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/10/contributing-to-ddev-com.png&quot; alt=&quot;Contributing to ddev.com - community collaboration banner&quot;&gt;&lt;p&gt;Here&amp;#39;s our October 9, 2025 &lt;a href=&quot;https://ddev.com/blog/category/training&quot;&gt;Contributor Training&lt;/a&gt; on contributing to ddev.com:&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/A-rsZ7SG_bg?si=G1BMxy1-2C1eL012&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;Key Topics&lt;/h2&gt;
&lt;h3&gt;Quick Edits via GitHub (&lt;a href=&quot;https://www.youtube.com/watch?v=A-rsZ7SG_bg&amp;t=251s&quot;&gt;4:11&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;The easiest way to fix errors or update content is to click the pencil icon on any blog post. This takes you directly to GitHub where you can make edits and create a pull request—all without checking out the repository locally.&lt;/p&gt;
&lt;h3&gt;Writing Blog Posts (&lt;a href=&quot;https://www.youtube.com/watch?v=A-rsZ7SG_bg&amp;t=773s&quot;&gt;12:53&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Community blog posts are encouraged! Share your expertise, workarounds, and solutions. Start by opening an issue to discuss your blog post idea with the community. Then copy a similar blog post from &lt;code&gt;src/content/blog&lt;/code&gt; and adapt it with your content.&lt;/p&gt;
&lt;h3&gt;Author Profiles (&lt;a href=&quot;https://www.youtube.com/watch?v=A-rsZ7SG_bg&amp;t=1080s&quot;&gt;18:00&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Add your author profile to &lt;code&gt;src/content/authors/&lt;/code&gt; with your name, first name, and optional avatar URL. The avatar can be from Gravatar, the image directory, or your own site.&lt;/p&gt;
&lt;h3&gt;Local Preview (&lt;a href=&quot;https://www.youtube.com/watch?v=A-rsZ7SG_bg&amp;t=1606s&quot;&gt;26:46&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Run &lt;code&gt;ddev start&lt;/code&gt; to preview your changes locally with hot module reloading at the URL shown in the startup output.&lt;/p&gt;
&lt;h3&gt;Quality Checks (&lt;a href=&quot;https://www.youtube.com/watch?v=A-rsZ7SG_bg&amp;t=2115s&quot;&gt;35:15&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Every pull request automatically runs:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Prettier&lt;/strong&gt; for code formatting&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Textlint&lt;/strong&gt; for content consistency and terminology&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The linter rules are defined in &lt;code&gt;.textlintrc&lt;/code&gt; and enforce consistent usage of terms like &amp;quot;ARM64&amp;quot;, &amp;quot;Bash&amp;quot;, and &amp;quot;phpMyAdmin&amp;quot;.&lt;/p&gt;
&lt;h3&gt;Preview Deployments (&lt;a href=&quot;https://www.youtube.com/watch?v=A-rsZ7SG_bg&amp;t=1935s&quot;&gt;32:15&lt;/a&gt;)&lt;/h3&gt;
&lt;p&gt;Each pull request automatically creates a preview deployment on Cloudflare Pages, allowing you and reviewers to see exactly how the changes will look on the live site.&lt;/p&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://rfay.github.io/contributing-to-ddev.com/&quot;&gt;Presentation Slides&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev.com&quot;&gt;ddev.com Repository&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;ddev-website-for-contributors.md&quot;&gt;DDEV Website For Contributors&lt;/a&gt; blog post&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contributions welcome!&lt;/h2&gt;
&lt;p&gt;Your suggestions to improve this blog are welcome. You can do a PR to this blog adding your techniques. Info and a training session on how to do a PR to anything in ddev.com is at &lt;a href=&quot;ddev-website-for-contributors.md&quot;&gt;DDEV Website For Contributors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt; for information about upcoming user and contributor training sessions.&lt;/p&gt;
&lt;p&gt;Claude Code did almost all of the collation of the information in this blog from the YouTube video and the &lt;a href=&quot;https://rfay.github.io/contributing-to-ddev.com&quot;&gt;presentation materials&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Training</category><category>Guides</category></item><item><title>DDEV on Linux in 10 Minutes</title><link>https://ddev.com/blog/ddev-on-linux-in-10-minutes</link><guid isPermaLink="true">https://ddev.com/blog/ddev-on-linux-in-10-minutes</guid><description>DDEV works great on Linux, we&apos;ll set it up from scratch in just 10 minutes..</description><pubDate>Mon, 06 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/10/banner-ddev-10-minutes-linux.svg&quot; alt=&quot;DDEV on Linux in 10 Minutes&quot;&gt;&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/14JvCVbn1qs?si=uxr_xUmpi6I3u7ks&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;&lt;em&gt;This screencast walks you through setting up a complete DDEV development environment on Linux, starting completely from scratch. Whether you&amp;#39;re new to DDEV or local development environments in general, this step-by-step guide will get you up and running quickly.&lt;/em&gt;&lt;/p&gt;
&lt;h2&gt;Video Outline&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;Here&amp;#39;s the video table of contents (opens on YouTube):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=0&quot;&gt;0:00&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Install Docker CE (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=30&quot;&gt;0:30&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Docker Post-Installation (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=107&quot;&gt;1:47&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Install DDEV (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=154&quot;&gt;2:34&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Configure HTTPS Certificates (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=200&quot;&gt;3:20&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Create Project (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=225&quot;&gt;3:45&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Project Startup (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=300&quot;&gt;5:00&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Launch Project (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=412&quot;&gt;6:52&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Install PhpStorm (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=490&quot;&gt;8:10&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Configure Xdebug (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=656&quot;&gt;10:56&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Test Step Debugging (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=734&quot;&gt;12:14&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Recap (&lt;a href=&quot;https://youtu.be/14JvCVbn1qs?t=799&quot;&gt;13:19&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What Happens in This Screencast&lt;/h2&gt;
&lt;p&gt;Here&amp;#39;s what happens in this screencast. You can do it yourself in just a few minutes. We&amp;#39;re using &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;DDEV&amp;#39;s get-started&lt;/a&gt;, but of course there is far more detail in the &lt;a href=&quot;https://docs.ddev.com&quot;&gt;DDEV docs&lt;/a&gt;, explaining how to use other distros or other install techniques.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Install Docker CE. Use the &lt;code&gt;apt&lt;/code&gt; repository technique from &lt;a href=&quot;https://docs.docker.com/engine/install/ubuntu/#install-using-the-repository&quot;&gt;Docker&amp;#39;s docs&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;Do the post-install one-time action:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo usermod -aG docker $USER`
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;We could log out and log back in, but instead for now:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;newgrp docker
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;2&quot;&gt;
&lt;li&gt;Install DDEV, using the &lt;code&gt;apt&lt;/code&gt; repository technique from &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;get-started&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ddev --version&lt;/code&gt; shows us being working fine with current stable.&lt;/li&gt;
&lt;/ul&gt;
&lt;ol start=&quot;3&quot;&gt;
&lt;li&gt;One-time &lt;code&gt;mkcert -install&lt;/code&gt; helps your browser trust DDEV&amp;#39;s HTTPS certificates.&lt;/li&gt;
&lt;li&gt;Check out a project. I used &lt;a href=&quot;https://github.com/rfay/d11&quot;&gt;rfay/d11&lt;/a&gt;, a trivial demo Drupal 11 project. (DDEV&amp;#39;s &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/&quot;&gt;quickstarts show many different project types&lt;/a&gt; with quick startup.)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev config&lt;/code&gt; the project. Most of the time you can take the defaults. But most of use use a non-interactive command like &lt;code&gt;ddev config --project-type=drupal11 --docroot=web&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev start&lt;/code&gt; the project. The first time on a new system you get the downloading of the Docker images.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev composer install&lt;/code&gt; for most projects&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev launch&lt;/code&gt; and install with the web UI. On another project I might have used &lt;code&gt;ddev import-db&lt;/code&gt; to load a database dump instead of doing an install.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo snap install --classic phpstorm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Open the project and set a breakpoint in &lt;code&gt;web/index.php&lt;/code&gt;.&lt;/li&gt;
&lt;li&gt;Click the &amp;quot;Listen for PHP Debug Connection&amp;quot; button in PhpStorm.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev xdebug on&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Visit the site in the browser. PhpStorm wakes up and asks us to map the code from the host/workstation side to the mount point in the container. The default usually works.&lt;/li&gt;
&lt;li&gt;Debug, step over, step in, view variables, etc.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Key Things to Know&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Use your own IDE, including VS Code:&lt;/strong&gt; I used PhpStorm here, but &lt;a href=&quot;https://docs.ddev.com/en/stable/users/debugging-profiling/step-debugging/#ide-setup&quot;&gt;VS Code works great&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;This demo used Ubuntu, but people use lots of distros:&lt;/strong&gt; The differences for major platforms are shown in the docs, but the ideas are all the same, and people use all of them, including other Debian/Ubuntu, Fedora, and Arch Linux distros.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Cross-Platform Compatibility:&lt;/strong&gt; DDEV works the same on macOS, Linux, Traditional Windows, and WSL2, see &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;Getting Started&lt;/a&gt;. Your whole team can work on their preferred environment without friction. See &lt;a href=&quot;watch-new-windows-installer.md&quot;&gt;DDEV on Windows in 10 Minutes&lt;/a&gt; and &lt;a href=&quot;watch-ddev-local-from-scratch-with-macos.md&quot;&gt;DDEV on macOS from Scratch&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support for almost any PHP-based project and many Node.js environments&lt;/strong&gt; DDEV supports development of &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/&quot;&gt;so many different web environments&lt;/a&gt;, so you&amp;#39;re not stuck with using separate tools for different CMSs.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;More Extensive Docs&lt;/strong&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com&quot;&gt;DDEV Docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/&quot;&gt;DDEV Quickstarts&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/&quot;&gt;DDEV Installation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/configuration/config/&quot;&gt;DDEV Configuration&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/debugging-profiling/step-debugging/&quot;&gt;Step-Debugging&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/faq/&quot;&gt;DDEV FAQ&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Support the DDEV Project:&lt;/strong&gt; DDEV is fully open-source and free to use, and run by the nonprofit DDEV Foundation. We ask you to help make us a sustainable project by sponsoring yourself or getting your organization to sponsor the project. &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Sponsor us on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Questions? Issues? We&amp;#39;re here to help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Discord is great for real-time help: &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Join our Discord&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;💬 &lt;a href=&quot;https://ddev.com/contact&quot;&gt;Contact us&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Have you signed up for the monthly &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt;? We&amp;#39;d love to have you.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;Claude Code was used in editing this blog and in preparing video outline, etc. Canva AI helped with the banner image.&lt;/p&gt;
</content:encoded><category>DevOps</category><category>Videos</category></item><item><title>Upsun Support for DDEV in a New Add-on</title><link>https://ddev.com/blog/ddev-upsun-platformsh-addon</link><guid isPermaLink="true">https://ddev.com/blog/ddev-upsun-platformsh-addon</guid><description>New DDEV Add-on supports Upsun Flex and Upsun Fixed (Platform.sh-style configuration)</description><pubDate>Thu, 02 Oct 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/10/upsun-formerly-platform.sh.jpeg&quot; alt=&quot;Sophisticated upsun support for DDEV&quot;&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;We&amp;#39;re proud to announce that DDEV now has an &lt;a href=&quot;https://github.com/ddev/ddev-upsun&quot;&gt;Upsun add-on&lt;/a&gt; with extensive support for Upsun Flex and Upsun Fixed (Platform.sh-style configuration)!&lt;/p&gt;
&lt;p&gt;Although DDEV has had &lt;code&gt;ddev pull upsun&lt;/code&gt; support for Upsun projects for a couple of years, the add-on provides a more complete integration. It reads your Upsun configuration and automatically configures matching services in your local DDEV project, mirroring what your upstream project uses.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;Getting started is straightforward:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;In your existing Upsun project directory, run:&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev config
ddev add-on get ddev/ddev-upsun
ddev start
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;The add-on will read your &lt;code&gt;.upsun/config.yaml&lt;/code&gt; or &lt;code&gt;.platform.app.yaml&lt;/code&gt; and configure your local environment automatically.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;For more details, see the &lt;a href=&quot;https://github.com/ddev/ddev-upsun#readme&quot;&gt;README&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;What the &lt;code&gt;ddev-upsun&lt;/code&gt; Add-on Does&lt;/h2&gt;
&lt;p&gt;When you do a &lt;code&gt;ddev add-on get ddev/ddev-upsun&lt;/code&gt; the add-on reads your &lt;code&gt;.upsun/config.yaml&lt;/code&gt; or &lt;code&gt;.platform.app.yaml&lt;/code&gt; file and configures your DDEV project to match the upstream environment. This requires careful translation between Upsun&amp;#39;s cloud architecture and DDEV&amp;#39;s local environment.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Use the same PHP version and extensions.&lt;/li&gt;
&lt;li&gt;Use the same database type and version (supporting multiple versions of MariaDB, MySQL, and PostgreSQL).&lt;/li&gt;
&lt;li&gt;Detect the use of Redis, Memcache, and Opensearch and configure DDEV add-ons to mimic the Upsun configuration.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Why &lt;code&gt;ddev-upsun&lt;/code&gt; Matters&lt;/h2&gt;
&lt;p&gt;Although many Upsun-hosted sites are basic nginx-fpm-database sites that DDEV has easily supported for years, the more complex ones have required special handling, like having to explicitly set PHP version, database type, etc. Now the add-on can do much of that for you.&lt;/p&gt;
&lt;p&gt;For example, if your Upsun project uses PostgreSQL 15 with Redis and a specific PHP version, previously you&amp;#39;d need to manually configure each in your &lt;code&gt;.ddev/config.yaml&lt;/code&gt;. Now, the add-on detects and configures all of this automatically.&lt;/p&gt;
&lt;p&gt;Upsun is a great platform for developers, and so many of you use it in the new &amp;quot;Flex&amp;quot; style and the previous &amp;quot;Fixed&amp;quot; style (Platform.sh-style). The add-on makes it easy to use both with a single add-on.&lt;/p&gt;
&lt;p&gt;And of course Upsun is the lead sponsor of DDEV, so we always delight in making it work for you.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;The Future of &lt;code&gt;ddev-upsun&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;A sophisticated platform like Upsun has many possibilities, and we want most things to work on most projects. The scope will be limited to PHP for now. However, we want to add:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Versioning for add-ons (Redis version will be supported in &lt;code&gt;ddev/ddev-redis&lt;/code&gt; add-on, for example).&lt;/li&gt;
&lt;li&gt;More service support, like Elasticsearch and Solr.&lt;/li&gt;
&lt;li&gt;Even more extensive automated tests. Currently we have a very extensive set of tests based on a Drupal setup, but want to add tests for other frameworks and CMSes.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;How We Got Here (PHP Add-ons)&lt;/h2&gt;
&lt;p&gt;DDEV v1.24.8 (required) adds &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/creating-add-ons/#php-based-actions-new&quot;&gt;support for add-ons written mostly in PHP&lt;/a&gt;. Originally, all add-ons were written in Bash, with Go templating. It worked great for so many simple add-ons, but was way too complicated for sophisticated ones. PHP is a familiar and powerful language for many add-on developers, so now provides a much more expressive way to write complex add-ons.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/ddev/ddev-platformsh&quot;&gt;ddev-platformsh&lt;/a&gt; add-on forced the issue on this. Every time we went back to it to maintain it we had to remember how Go templates worked and sort out complex Bash logic. Bash and Go templates are a lousy combination for maintainability. PHP should be much better. The &lt;code&gt;ddev-upsun&lt;/code&gt; add-on will replace &lt;code&gt;ddev-platformsh&lt;/code&gt; and supports both the Flex and Fixed Upsun configurations.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;re currently using the &lt;code&gt;ddev/ddev-platformsh&lt;/code&gt; add-on, you can migrate to &lt;code&gt;ddev-upsun&lt;/code&gt; by removing the old add-on with &lt;code&gt;ddev add-on remove ddev-platformsh&lt;/code&gt; and adding the new one with &lt;code&gt;ddev add-on get ddev/ddev-upsun&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;What&amp;#39;s Next&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Check out the &lt;a href=&quot;https://github.com/ddev/ddev-upsun#readme&quot;&gt;full documentation&lt;/a&gt; for advanced configuration options.&lt;/li&gt;
&lt;li&gt;We&amp;#39;d love your feedback — open issues or contribute PRs if you encounter any edge case.&lt;/li&gt;
&lt;li&gt;If you like it, give us a star on &lt;a href=&quot;https://github.com/ddev/ddev-upsun&quot;&gt;GitHub&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Gratitude&lt;/h2&gt;
&lt;p&gt;Thanks as always to Upsun for their financial support and for the great products, and for access to testing accounts. Their continued support makes DDEV development possible.&lt;/p&gt;
&lt;p&gt;If you&amp;#39;re not already an Upsun user, try an &lt;a href=&quot;https://upsun.com/flexible-developer-experience/&quot;&gt;Upsun free trial&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Stay in the Loop—Follow Us and Join the Conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Reviewed with assistance from DDEV Contributors and Claude Code.&lt;/p&gt;
</content:encoded><category>Announcements</category><category>Guides</category></item><item><title>Contributor Training: Using Claude Code for a DDEV PR</title><link>https://ddev.com/blog/claude-code-ai-pr-for-ddev-contributor-training</link><guid isPermaLink="true">https://ddev.com/blog/claude-code-ai-pr-for-ddev-contributor-training</guid><description>Contributor training demonstrating use of Claude Code for a DDEV PR.</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/09/claude-code-ddev-banner.png&quot; alt=&quot;Claude AI and DDEV collaboration banner for contributor training&quot;&gt;&lt;p&gt;Here&amp;#39;s our August 21, 2025 &lt;a href=&quot;https://ddev.com/blog/category/training&quot;&gt;Contributor Training&lt;/a&gt; on using Claude Code AI for a DDEV PR:&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/sUSHF4V7yzs?si=t102XbCqHz6XBJvF&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;Big Picture&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The most amazing thing about Claude Code as an &lt;strong&gt;agent&lt;/strong&gt; is that it can do things and respond to them, on your machine, and using the internet, with your permission. That puts it way ahead of any other AI I&amp;#39;ve used. It can run tests and respond to the results (and fix things). It can create a commit or a PR.&lt;/li&gt;
&lt;li&gt;Used with respect, AI can be really powerful, a whole new level of abstraction in software development, maybe a bit like having an IDE when you were previously using just a line editor.&lt;/li&gt;
&lt;li&gt;AI excels at repetitive tasks, but only you have &lt;strong&gt;judgment&lt;/strong&gt;. It&amp;#39;s phenomenal at repeating patterns that it&amp;#39;s been trained on, and often good at imitating patterns that you point out to it.&lt;/li&gt;
&lt;li&gt;It&amp;#39;s a pretty good collaborator for those of us who work mostly alone.&lt;/li&gt;
&lt;li&gt;When I don&amp;#39;t have the energy to approach a problem from scratch, sometimes just explaining it to Claude Code and asking for a plan gets me started. I&amp;#39;ve taken on quite a number of DDEV bugs/features this way and got to them instead of procrastinating another year or two.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Guardrails&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Your code is your code. Build it with guardrails that will help keep it under control. Tests and static analysis are great guardrails. (DDEV has hundreds of automated tests and &lt;code&gt;make staticrequired&lt;/code&gt; for static analysis.)&lt;/li&gt;
&lt;li&gt;Control, read, and manually test the code yourself.&lt;/li&gt;
&lt;li&gt;Consider getting a different AI to do a review.&lt;/li&gt;
&lt;li&gt;Always try to get another human to do a review.&lt;/li&gt;
&lt;li&gt;AI is &lt;em&gt;fantastic&lt;/em&gt; at creating new tests, but don&amp;#39;t let it touch the existing tests.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Structure and Strategy&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;For complex initiatives, explain the entire goal in detail to Claude and then get it to write a PRD, then commit the PRD into the repository. That way you&amp;#39;ll have a high-quality set of context to use.&lt;/li&gt;
&lt;li&gt;Put all your general directives in a &lt;code&gt;CLAUDE.md&lt;/code&gt; file like &lt;a href=&quot;https://github.com/ddev/ddev/blob/main/CLAUDE.md&quot;&gt;DDEV&amp;#39;s CLAUDE.md&lt;/a&gt;. Their docs claim that directives like this will be used properly to guide Claude&amp;#39;s behavior, and it does help, but Claude does not seem to be strictly obedient and I often have to remind it of basic DDEV precepts.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.task-master.dev/&quot;&gt;TaskMaster AI&lt;/a&gt; is a pretty good structural tool. You can give it a PRD and have it create a task list, then Claude can use it to navigate that task list. This would have been a great tool long before AI, but I rarely used that much structure in my coding before using this tool and AI.&lt;/li&gt;
&lt;li&gt;Every time you accomplish a bit of something, make a commit or have Claude make a commit. That way you can roll it back, or review just one item. (This works for you as a human also.) Thanks &lt;a href=&quot;https://www.drupal.org/u/shaal&quot;&gt;@shaal&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Capabilities&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;I was amazed to find that Claude could create an issue or PR for me, and certainly do commits. It can also comment on an issue or PR. I don&amp;#39;t let it do those things without permission. (It seems to know how to use the &lt;code&gt;gh&lt;/code&gt; utility to do these things; you need to have that installed and configured.)&lt;/li&gt;
&lt;li&gt;I have definitely learned some things from Claude. It has used the Go &lt;code&gt;t.Run()&lt;/code&gt; much more effectively for clearer subtests than I had ever done before. And it seems to use a bit more modern Go in general, so that&amp;#39;s a plus.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Problems&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The current billing situation for Claude is confusing. It&amp;#39;s based on the number of tokens you&amp;#39;re using, but it doesn&amp;#39;t give you feedback until you&amp;#39;ve almost used it all up. Then (on the $20/month plan) you&amp;#39;re not able to use it for a number of hours, which seems to be arbitrary. You can spend more for a higher monthly plan, and you can also pay-as-you-go for tokens. I haven&amp;#39;t done either of those. Clear context (&lt;code&gt;/clear&lt;/code&gt;) at key points to limit the amount of context you&amp;#39;re carrying forward and limit the number of tokens you&amp;#39;re using.&lt;/li&gt;
&lt;li&gt;Claude can get stuck and go in circles, like other AI. Clear context to try to get around that. Have an overall plan to get around it.&lt;/li&gt;
&lt;li&gt;I&amp;#39;m annoyed by how verbose and flowery the commit/issue/PR language is sometimes, but have tried to calm it down using directives in the &lt;code&gt;CLAUDE.md&lt;/code&gt; file, but without success. It also is complimenting me all the time and always agreeing with what I say. I haven&amp;#39;t been able to calm that down either.&lt;/li&gt;
&lt;li&gt;I find that the amount of code I can create quickly for a significant feature is amazing. But then I have to understand it. And since I didn&amp;#39;t create it at the micro level, it can be exhausting to work with.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Demonstration&lt;/h2&gt;
&lt;p&gt;In this demonstration (see screencast) we asked Claude to work on &lt;a href=&quot;https://github.com/ddev/ddev/issues/7424&quot;&gt;this issue about &lt;code&gt;ddev launch&lt;/code&gt;&lt;/a&gt; and we asked it to create a PR for us. It generated &lt;a href=&quot;https://github.com/ddev/ddev/pull/7548&quot;&gt;this PR&lt;/a&gt; to resolve the problem. It was a trivial issue with a trivial solution, but the path to create it was similar to the path for a more complex situation.&lt;/p&gt;
&lt;h2&gt;Responsible AI Usage and Disclosure&lt;/h2&gt;
&lt;p&gt;This isn&amp;#39;t an adequate place to discuss responsible AI, but:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Acknowledge the use of AI. Claude is happy to add a tag onto every commit or comment.&lt;/li&gt;
&lt;li&gt;Take responsibility for what you build.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.anthropic.com/claude-code&quot;&gt;Claude Code AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.task-master.dev/&quot;&gt;TaskMaster AI&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://rfay.github.io/ddev-claude-presentation/&quot;&gt;Slides&lt;/a&gt; and supporting &lt;a href=&quot;https://github.com/rfay/ddev-claude-presentation&quot;&gt;repository&lt;/a&gt; built on &lt;a href=&quot;https://revealjs.com/&quot;&gt;reveal.js&lt;/a&gt;, created using Claude.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.coursera.org/learn/claude-code&quot;&gt;Coursera Claude Code Course&lt;/a&gt;: I took this as a free course; it didn&amp;#39;t take too long and I learned a lot that I would not have known otherwise.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Conclusions&lt;/h2&gt;
&lt;p&gt;Yes, AI can make us really lazy. And it can make us stupid. Those valid concerns were also leveled against the calculator and the computer, of course. People thought that using the &lt;code&gt;C&lt;/code&gt; language instead of assembler was giving up control. It was. We have to learn how to use this technology, use it right, and grow with it.&lt;/p&gt;
&lt;p&gt;Build guardrails. Pay attention. Know what your code does. Enjoy the ride!&lt;/p&gt;
&lt;h2&gt;Contributions welcome!&lt;/h2&gt;
&lt;p&gt;Your suggestions to improve this blog are welcome. You can do a PR to this blog adding your techniques. Info and a training session on how to do a PR to anything in ddev.com is at &lt;a href=&quot;ddev-website-for-contributors.md&quot;&gt;DDEV Website For Contributors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt; for information about upcoming user and contributor training sessions.&lt;/p&gt;
&lt;p&gt;Edited with assistance from Claude Code and Codex; banner image generated by Claude.&lt;/p&gt;
</content:encoded><category>Training</category><category>Guides</category></item><item><title>DDEV September 2025 Newsletter</title><link>https://ddev.com/blog/ddev-september-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-september-2025-newsletter</guid><description>Training sessions, CakeFest workshop in Madrid, DrupalCon Vienna, governance proposal, and community updates</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/09/almost-everybody-loves-ddev.svg&quot; alt=&quot;Survey results showing widespread love for DDEV in the developer community&quot;&gt;&lt;p&gt;🚀 Our sprint to finish out 2025 has begun! 🌟
Tell us what you need for 2025–2026. &lt;a href=&quot;https://ddev.com/contact&quot;&gt;Contact us↗&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;What’s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Tailscale for DDEV: Simple and Secure Project Sharing&lt;/strong&gt; → &lt;a href=&quot;tailscale-router-ddev-addon.md&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Contributor Training: DDEV PR using Claude Code AI&lt;/strong&gt; → &lt;a href=&quot;claude-code-ai-pr-for-ddev-contributor-training.md&quot;&gt;Watch↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV Advisory Group Meeting&lt;/strong&gt; → &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7579&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;2025 Drupal Developer Survey&lt;/strong&gt;: &amp;quot;Almost everybody loves DDEV&amp;quot; &lt;a href=&quot;https://www.ironstar.io/devsurvey25/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Mike Anello: Reclaim Docker disk space when using DDEV&lt;/strong&gt; &lt;a href=&quot;https://www.drupaleasy.com/quicktips/reclaim-docker-disk-space-when-using-ddev&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;DDEV Training Has Started Up Again!&lt;/h2&gt;
&lt;p&gt;We&amp;#39;re doing training again this season, all are invited. Some sessions are more focused on contributors and maintainers, and others for all users. This month we&amp;#39;ll talk about the key magic of hostname resolution, debugging, and DNS. This is critical for everybody in the web world, not just for DDEV users. Join us whatever your experience level is.&lt;/p&gt;
&lt;p&gt;See the full schedule below.&lt;/p&gt;
&lt;h3&gt;Upcoming DDEV Live Contributor and User Training Sessions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;September 18, 2025 at 10:00 US ET / 16:00 CEST — Hostname Resolution and Debugging for DDEV Users&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Hostname%20resolution%20and%20debugging%20for%20DDEV%20users&amp;dates=20250918T140000Z/20250918T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-09-18.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;October 9, 2025 at 10:00 US ET / 16:00 CEST — How and Why to Contribute a Blog to ddev.com&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=How%20and%20Why%20to%20contribute%20a%20blog%20to%20ddev.com&amp;dates=20251009T140000Z/20251009T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-10-09.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;November 20, 2025 at 10:00 US ET / 16:00 CET — Using DDEV in Windows WSL&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Using%20DDEV%20in%20Windows%20WSL&amp;dates=20251120T150000Z/20251120T160000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-11-20.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zoom Join Info:&lt;br&gt;Link: &lt;a href=&quot;https://us02web.zoom.us/j/7315692237?pwd=RHR6NUkwb0g5WXIzS2NOcXRucCthZz09&quot;&gt;Join Zoom Meeting&lt;/a&gt;&lt;br&gt;Passcode: 12345&lt;/p&gt;
&lt;h2&gt;Events &amp;amp; Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Join Us at CakeFest in Madrid&lt;/strong&gt; — Randy will be doing a workshop on DDEV at &lt;a href=&quot;https://cakefest.org/&quot;&gt;CakeFest in Madrid&lt;/a&gt;. See you there! Or if you&amp;#39;re just in the Madrid area, let&amp;#39;s do a get-together.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;See Us at DrupalCon EU in Vienna&lt;/strong&gt; — Randy will be at &lt;a href=&quot;https://events.drupal.org/vienna2025&quot;&gt;DrupalCon EU in Vienna&lt;/a&gt; thanks to sponsorship from &lt;a href=&quot;https://www.tag1consulting.com/&quot;&gt;Tag1&lt;/a&gt; and &lt;a href=&quot;https://upsun.com&quot;&gt;Platform.sh/Upsun&lt;/a&gt;. Please say hi. Let&amp;#39;s talk about anything you might want to talk about. I normally do a bunch of Birds-of-a-Feather sessions. Or if you live in the Vienna area, let&amp;#39;s do a get-together.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Governance &amp;amp; Roadmap&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Formal Governance Proposal&lt;/strong&gt; — We&amp;#39;ve been working on a &lt;a href=&quot;https://docs.google.com/document/d/1MXatsz2FMBSnllnUArNCv562x0T2-EF1OwqsFEU9_-M/edit?usp=sharing&quot;&gt;formal governance proposal&lt;/a&gt;. We&amp;#39;d love your comments and engagement.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Informal Nominations for the DDEV Foundation Board&lt;/strong&gt; — Would you like to nominate someone (or yourself)? Ping us via any of our &lt;a href=&quot;https://ddev.com/contact/&quot;&gt;contact methods&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Status&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monthly average income&lt;/strong&gt; up from $7,878 to $7,958 (66% of $12,000 goal). Every contribution helps sustain our work—thank you! → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Stay in the Loop—Follow Us and Join the Conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Edited with assistance from Claude Code and Codex; banner image generated by Claude.&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>Tailscale for DDEV: Simple and Secure Project Sharing</title><link>https://ddev.com/blog/tailscale-router-ddev-addon</link><guid isPermaLink="true">https://ddev.com/blog/tailscale-router-ddev-addon</guid><description>Tired of temporary sharing links? Learn how to use the ddev-tailscale-router add-on to get a stable, secure, and private URL for your DDEV projects.</description><pubDate>Tue, 09 Sep 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/08/ddev_tailscale_flowchart.svg&quot; alt=&quot;DDEV Tailscale Router Cover Image&quot;&gt;&lt;p&gt;I&amp;#39;ve found that DDEV&amp;#39;s &lt;a href=&quot;https://docs.ddev.com/en/stable/users/topics/sharing/&quot;&gt;&lt;code&gt;ddev share&lt;/code&gt;&lt;/a&gt; command is a great way to quickly share my local development environment. However, since it uses ngrok, it requires ngrok to be installed on the host system and generates a new, random URL every time unless you use a &lt;a href=&quot;https://docs.ddev.com/en/stable/users/topics/sharing/#setting-up-a-stable-ngrok-domain&quot;&gt;stable domain&lt;/a&gt;. As an alternative, I&amp;#39;ve created the &lt;a href=&quot;https://github.com/atj4me/ddev-tailscale-router&quot;&gt;&lt;code&gt;ddev-tailscale-router&lt;/code&gt;&lt;/a&gt; add-on.&lt;/p&gt;
&lt;p&gt;This add-on uses &lt;a href=&quot;https://tailscale.com/&quot;&gt;Tailscale&lt;/a&gt;, a VPN service that creates a private and secure network between your devices. It is free for personal use and doesn&amp;#39;t require any additional software to be installed on your host system!&lt;/p&gt;
&lt;p&gt;As a result, you get a stable, human-readable URL for each of your DDEV projects, which you can access from any device on your Tailscale network.&lt;/p&gt;
&lt;p&gt;I&amp;#39;ve found this approach to be particularly useful for:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Cross-device testing:&lt;/strong&gt; I can easily test my sites on my phone or tablet without being on the same Wi-Fi network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Stable webhook URLs:&lt;/strong&gt; I can use the permanent Tailscale URL as a reliable endpoint for webhooks, such as those from payment gateways.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Team collaboration:&lt;/strong&gt; I can share my development environment with team members so they can see my work in progress.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;How it Works&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;ddev-tailscale-router&lt;/code&gt; add-on works by installing Tailscale directly into your DDEV project&amp;#39;s web container using userspace networking. This approach provides better macOS compatibility and improved reliability compared to running a separate container. The add-on automatically connects to your Tailscale network and securely proxies requests to your project.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Update:&lt;/strong&gt; Version 3.0.0 brought significant architectural improvements! The add-on now uses YAML-based configuration, improved command structure, and better error handling. If you&amp;#39;re upgrading from an earlier version, see the &lt;a href=&quot;https://github.com/atj4me/ddev-tailscale-router/releases/tag/v3.0.0&quot;&gt;migration instructions&lt;/a&gt; in the release notes.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Prerequisites&lt;/h3&gt;
&lt;p&gt;Before installing the add-on, you need to set up Tailscale:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Install Tailscale&lt;/strong&gt; on at least two devices (phone, tablet, or computer) by following the &lt;a href=&quot;https://tailscale.com/download&quot;&gt;installation guide&lt;/a&gt;. This is required to generate an auth key.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Enable HTTPS&lt;/strong&gt; by following the &lt;a href=&quot;https://tailscale.com/kb/1153/enabling-https&quot;&gt;Tailscale HTTPS documentation&lt;/a&gt;. This is required for TLS certificate generation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Generate an auth key&lt;/strong&gt; by following the &lt;a href=&quot;https://tailscale.com/kb/1085/auth-keys&quot;&gt;Tailscale auth keys documentation&lt;/a&gt;. Ephemeral, reusable keys are recommended.&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Installation&lt;/h3&gt;
&lt;p&gt;To get started, follow these steps:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;First, &lt;strong&gt;set up your auth key&lt;/strong&gt; (recommended approach):
Add the auth key to your shell environment:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;echo &amp;#39;export TS_AUTHKEY=tskey-auth-your-key-here&amp;#39; &amp;gt;&amp;gt; ~/.bashrc
source ~/.bashrc
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Replace &lt;code&gt;~/.bashrc&lt;/code&gt; with &lt;code&gt;~/.zshrc&lt;/code&gt; if you use Zsh, or your relevant shell configuration file.&lt;/p&gt;
&lt;p&gt;Alternatively, you can use interactive authentication after installation by running &lt;code&gt;ddev tailscale login&lt;/code&gt; after your project starts.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Next, &lt;strong&gt;install the add-on:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev add-on get atj4me/ddev-tailscale-router
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Finally, &lt;strong&gt;restart DDEV:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev restart
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Using Your Tailscale URL&lt;/h3&gt;
&lt;p&gt;Once installation is complete, you need to start sharing your project:&lt;/p&gt;
&lt;p&gt;Start sharing your project:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale share
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Launch your project&amp;#39;s Tailscale URL in browser:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale launch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Get your project&amp;#39;s Tailscale URL:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale url
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Your project&amp;#39;s permanent Tailscale URL will look like: &lt;code&gt;https://&amp;lt;project-name&amp;gt;.&amp;lt;your-tailnet&amp;gt;.ts.net&lt;/code&gt;. You can also find it in your Tailscale admin console.&lt;/p&gt;
&lt;p&gt;To see all available commands and options, run &lt;code&gt;ddev tailscale help&lt;/code&gt;. This will show you both the DDEV-specific shortcuts and all native Tailscale CLI commands that you can use.&lt;/p&gt;
&lt;h3&gt;Public vs. Private Mode&lt;/h3&gt;
&lt;p&gt;The add-on offers two modes for sharing your project:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Private (default):&lt;/strong&gt; Your project is only accessible to devices on your Tailscale network.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Public:&lt;/strong&gt; Your project is accessible to anyone on the internet.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To switch between modes:&lt;/p&gt;
&lt;p&gt;Share publicly (accessible to anyone on the internet):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale share --public
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Share privately (default, only accessible to your Tailscale devices):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale share
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Stop sharing:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale stop
&lt;/code&gt;&lt;/pre&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Note:&lt;/strong&gt; For public access, you need to configure your &lt;a href=&quot;https://tailscale.com/kb/1223/funnel#funnel-node-attribute&quot;&gt;Access Control List (ACL)&lt;/a&gt; to enable Funnel. See the &lt;a href=&quot;https://tailscale.com/kb/1223/funnel&quot;&gt;Tailscale Funnel documentation&lt;/a&gt; for details on setting up the required ACL policy.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h3&gt;Uninstalling the Add-on&lt;/h3&gt;
&lt;p&gt;If you need to remove the add-on from your project:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Stop any active sharing:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev tailscale stop
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Remove the add-on:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev add-on remove tailscale-router
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Restart DDEV:&lt;/strong&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev restart
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Additional Resources&lt;/h3&gt;
&lt;p&gt;Here are some additional resources that you might find helpful:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/&quot;&gt;Tailscale&lt;/a&gt;&lt;/strong&gt;: A VPN service that creates a private and secure network between your devices.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/download&quot;&gt;Tailscale Download&lt;/a&gt;&lt;/strong&gt;: Installation guide for Tailscale on various platforms.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/kb/1153/enabling-https&quot;&gt;Tailscale: Enabling HTTPS&lt;/a&gt;&lt;/strong&gt;: Official documentation on enabling HTTPS for TLS certificate generation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/kb/1085/auth-keys&quot;&gt;Tailscale Auth Keys&lt;/a&gt;&lt;/strong&gt;: Detailed information about creating and managing auth keys.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/kb/1223/funnel&quot;&gt;Tailscale Funnel&lt;/a&gt;&lt;/strong&gt;: Documentation on enabling public access to your Tailscale services.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://tailscale.com/kb/1054/dns&quot;&gt;Tailscale DNS&lt;/a&gt;&lt;/strong&gt;: DNS in Tailscale&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.ddev.com/en/latest/users/usage/commands/#dotenv&quot;&gt;DDEV dotenv&lt;/a&gt;&lt;/strong&gt;: Documentation on managing environment variables with DDEV.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.ddev.com/en/latest/users/usage/sharing/&quot;&gt;DDEV Docs: Sharing&lt;/a&gt;&lt;/strong&gt;: The official DDEV documentation on how to share your projects.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Medium: &lt;a href=&quot;https://medium.com/@josephajithampi/my-journey-with-php-dev-environments-1da9f2806ee9&quot;&gt;My Journey with PHP Dev Environments&lt;/a&gt;&lt;/strong&gt;: A blog post on setting up a PHP development environment.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;LinkedIn: &lt;a href=&quot;https://www.linkedin.com/pulse/day-my-development-environment-nearly-broke-me-how-i-thampi-joseph-ildhc/&quot;&gt;The Day My Development Environment Nearly Broke Me&lt;/a&gt;&lt;/strong&gt;: An article on the importance of a reliable development environment.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;I hope this add-on helps streamline your development workflow! If you run into any issues or have suggestions for improvements, feel free to open an issue on the &lt;a href=&quot;https://github.com/atj4me/ddev-tailscale-router/issues&quot;&gt;GitHub repository&lt;/a&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;This blog post was updated with the assistance of GitHub Copilot (Claude). I used it to help update the content based on the latest add-on changes, improve accuracy, and maintain consistency. The original version was written with assistance from Amazon Q and Google Gemini.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Add-ons</category><category>Guides</category><category>TechNotes</category></item><item><title>DDEV August 2025 Newsletter</title><link>https://ddev.com/blog/ddev-august-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-august-2025-newsletter</guid><description>Highlights: DDEV v1.24.7 release, Contributor Training starts up again, Security priorities (ddev-hostname), New Windows installer, New VS Code extension release, Drupal Camp Colorado, Laracon US, Passbolt environment setup, Tailscale troubleshooting, Magento 2 quickstart, Stripe donation form, DrupalCon attendance, Local AI with Ollama, and informal Board nominations.</description><pubDate>Tue, 12 Aug 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/08/laracon-photo.jpg&quot; alt=&quot;Nuno Maduro at Laracon US 2025&quot;&gt;&lt;p&gt;🚀 Dive into August 2025 with DDEV! 🌟&lt;br&gt;This month: v1.24.7 release, Contributor Training starts up again, ddev-hostname security, new Windows installer, VS Code extension, DrupalCamp Colorado, Laracon US highlights, Passbolt environment, Tailscale troubleshooting, Magento 2 setup, DrupalCon Vienna, Ollama AI, and Board nominations.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;What’s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DDEV v1.24.7 Released&lt;/strong&gt; — Includes Windows Installer and MariaDB 11.8 update → &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.7&quot;&gt;Release notes↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New Windows Installer Available&lt;/strong&gt; — Install DDEV on WSL2 or traditional Windows with the new installer → &lt;a href=&quot;https://ddev.com/blog/watch-new-windows-installer&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV From Scratch with Windows WSL2&lt;/strong&gt; — Step-by-step video guide to get started with DDEV on Windows WSL2 → &lt;a href=&quot;https://ddev.com/blog/watch-ddev-local-from-scratch-with-windows-wsl2&quot;&gt;Watch guide↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Security Priorities: Strengthening &lt;code&gt;ddev-hostname&lt;/code&gt;&lt;/strong&gt; — Recent improvements securing host-file updates and future plans → &lt;a href=&quot;https://ddev.com/blog/ddev-hostname-security-improvements&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV VS Code Extension v3.0 Released&lt;/strong&gt; — New container commands, auto config reload, improved IDE integration, and remote-host support → &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=biati.ddev-manager&quot;&gt;Get it on Marketplace↗&lt;/a&gt;&lt;br&gt;Learn about “Expose Commands From Container” → &lt;a href=&quot;https://github.com/ddev/vscode-ddev-manager/wiki/Expose-from-Container&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;My Go-To Setup for Local Drupal Development with DDEV and Colima&lt;/strong&gt;&lt;br&gt;John Picozzi’s Colima + DDEV workflow for Drupal projects. → &lt;a href=&quot;https://picozzi.com/notebook/2025/jul/my-go-setup-local-drupal-development-ddev-and-colima&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Passbolt: Your Local Development Environment in Minutes&lt;/strong&gt;&lt;br&gt;Quick-start guide to run Passbolt in DDEV. → &lt;a href=&quot;https://www.passbolt.com/blog/set-up-your-local-passbolt-development-environment-in-minutes-with-ddev&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;When Tailscale Nearly Broke My Dev Environment&lt;/strong&gt;&lt;br&gt;Joseph Thampi’s story and tips for using Tailscale with DDEV. → &lt;a href=&quot;https://www.linkedin.com/pulse/day-my-development-environment-nearly-broke-me-how-i-thampi-joseph-ildhc/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV + Magento 2: Quickstart Setup&lt;/strong&gt;&lt;br&gt;Automate Magento 2 installs with DDEV. → &lt;a href=&quot;https://github.com/jellesiderius/ddev-magento2-setup&quot;&gt;View on GitHub↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Creating a Simple Donation Form in Drupal with Stripe &amp;amp; Webforms&lt;/strong&gt;&lt;br&gt;Setup payments in minutes with DDEV and Webform. → &lt;a href=&quot;https://picozzi.com/notebook/2025/jul/creating-simple-donation-form-drupal-stripe-and-webforms&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Free Local AI with Ollama &amp;amp; DDEV&lt;/strong&gt;&lt;br&gt;How to Set Up Ollama as a Free, Local AI Provider for Your local Drupal Development. → &lt;a href=&quot;https://www.linkedin.com/pulse/how-set-up-ollama-free-local-ai-provider-your-drupal-rakesh-james-gedje/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;DDEV Training Starting Up Again!&lt;/h2&gt;
&lt;p&gt;We&amp;#39;re going to do training again this season, all are invited. Some sessions are more focused on contributors and maintainers, and others at all users. First up this month will be a session on using Claude Code to implement a DDEV feature or fix a bug. This will be using DDEV as an example, but probably anybody who works with code anywhere will profit from the approach.&lt;/p&gt;
&lt;p&gt;See the full schedule below.&lt;/p&gt;
&lt;h3&gt;Upcoming DDEV Live Contributor and User Training Sessions&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;August 21, 2025 at 10:00 US ET / 16:00 CEST — Using Claude Code AI in DDEV Development&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Using%20Claude%20Code%20AI%20in%20DDEV%20Development&amp;dates=20250821T140000Z/20250821T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-08-21.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;September 18, 2025 at 10:00 US ET / 16:00 CEST — Hostname Resolution and Debugging for DDEV Users&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Hostname%20resolution%20and%20debugging%20for%20DDEV%20users&amp;dates=20250918T140000Z/20250918T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-09-18.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;October 9, 2025 at 10:00 US ET / 16:00 CEST — How and Why to Contribute a Blog to ddev.com&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=How%20and%20Why%20to%20contribute%20a%20blog%20to%20ddev.com&amp;dates=20251009T140000Z/20251009T150000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-10-09.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;November 20, 2025 at 10:00 US ET / 16:00 CET — Using DDEV in Windows WSL&lt;/strong&gt;&lt;br&gt;&lt;a href=&quot;https://calendar.google.com/calendar/render?action=TEMPLATE&amp;text=Using%20DDEV%20in%20Windows%20WSL&amp;dates=20251120T150000Z/20251120T160000Z&amp;details=Join%20the%20DDEV%20training%20session%20via%20Zoom.%0ALink%3A%20https%3A%2F%2Fus02web.zoom.us%2Fj%2F7315692237%3Fpwd%3DRHR6NUkwb0g5WXIzS2NOcXRucCthZz09%0AMeeting%20ID%3A%20731%20569%202237%0APasscode%3A%2012345&amp;location=Online&amp;trp=true&quot;&gt;Add to Google Calendar&lt;/a&gt; •
&lt;a href=&quot;https://ddev.com/files/ics/ddev-2025-11-20.ics&quot;&gt;Download .ics&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Zoom Join Info:&lt;br&gt;Link: &lt;a href=&quot;https://us02web.zoom.us/j/7315692237?pwd=RHR6NUkwb0g5WXIzS2NOcXRucCthZz09&quot;&gt;Join Zoom Meeting&lt;/a&gt;&lt;br&gt;Passcode: 12345&lt;/p&gt;
&lt;h2&gt;Events &amp;amp; Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DrupalCamp Colorado&lt;/strong&gt;&lt;br&gt;I got to see old friends, met new people, and attended great sessions that refreshed my Drupal knowledge at DrupalCamp Colorado.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Laracon US 2025: Younger, Bigger, Friendlier&lt;/strong&gt;&lt;br&gt;Since Laracon was right after DrupalCamp Colorado and in Denver I went to learn from the vibrant Laravel community. It was a big, highly produced event with lots of friendly people and immense emphasis on community. Folks seemed younger on average than in the Drupal world. I didn&amp;#39;t learn a lot about Laravel, but there were great general sessions that inspired me to start using Git worktrees and some new AI techniques.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;See Us at DrupalCon EU in Vienna&lt;/strong&gt;&lt;br&gt;Randy will be at &lt;a href=&quot;https://events.drupal.org/vienna2025&quot;&gt;DrupalCon EU in Vienna&lt;/a&gt; thanks to sponsorship from &lt;a href=&quot;https://www.tag1consulting.com/&quot;&gt;Tag1&lt;/a&gt; and &lt;a href=&quot;https://upsun.com&quot;&gt;Platform.sh/Upsun&lt;/a&gt;. Please say hi. Let&amp;#39;s talk about anything you might want to talk about. I normally do a bunch of Birds-of-a-Feather sessions.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Governance &amp;amp; Roadmap&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Informal Nominations for the DDEV Foundation Board&lt;/strong&gt;&lt;br&gt;At the upcoming &lt;a href=&quot;https://github.com/orgs/ddev/discussions/categories/ddev-advisory-group&quot;&gt;DDEV Advisory Group&lt;/a&gt; meetings (in September and November) we&amp;#39;ll be implementing an actual Board of Directors for the DDEV Foundation. Would you like to nominate someone (or yourself)? Ping us via any of our &lt;a href=&quot;https://ddev.com/contact/&quot;&gt;contact methods&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Status&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monthly average income&lt;/strong&gt; up from $7,759 to $7,878 (66% of $12,000 goal). Every contribution helps sustain our work—thank you! → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Stay in the Loop—Follow Us and Join the Conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>Watch: DDEV from scratch with Windows WSL2</title><link>https://ddev.com/blog/watch-ddev-local-from-scratch-with-windows-wsl2</link><guid isPermaLink="true">https://ddev.com/blog/watch-ddev-local-from-scratch-with-windows-wsl2</guid><description>Screencast guide to running DDEV on Windows with WSL2, starting from scratch. Learn how to set up WSL2, Docker Desktop, and DDEV and use them for development.</description><pubDate>Fri, 25 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/07/ddev-from-scratch-wsl2.png&quot; alt=&quot;DDEV From Scratch on WSL2&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Want just the 10-minute version of a DDEV WSL2 Install?&lt;/strong&gt; Check out the &lt;a href=&quot;watch-new-windows-installer.md&quot;&gt;New GUI Installer: Get DDEV Running on Windows in Just 10 Minutes&lt;/a&gt; for a quicker setup using the GUI installer.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Using Linux or macOS?&lt;/strong&gt; See &lt;a href=&quot;ddev-on-linux-in-10-minutes.md&quot;&gt;DDEV on Linux in 10 Minutes&lt;/a&gt; or &lt;a href=&quot;watch-ddev-local-from-scratch-with-macos.md&quot;&gt;DDEV on macOS from Scratch&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/1dr_4gPtFlQ?si=ZFjBU-6CcbsVI3SX&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;This screencast walks you through setting up a complete DDEV development environment on Windows using WSL2, starting completely from scratch. Whether you&amp;#39;re new to DDEV, WSL2, or local development environments in general, this step-by-step guide will get you up and running quickly.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;We also did a &lt;a href=&quot;https://youtu.be/dcKXa23cFmg?si=NDXSHscN2blOJpL1&quot;&gt;DDEV Contributor/User Training on Windows with WSL2&lt;/a&gt; in November, 2025 which did a casual walkthrough of this information.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;h2&gt;What You&amp;#39;ll Learn&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;DDEV Fundamentals&lt;/strong&gt;: Understanding what DDEV is and why it&amp;#39;s become the go-to solution for local web development. The video explains that DDEV is a Docker-based local development environment aimed at web developers, mostly PHP and Node developers. Key benefits include:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Developers can run websites on their local computer with almost no configuration&lt;/li&gt;
&lt;li&gt;Multiple projects can run simultaneously, each with different configurations&lt;/li&gt;
&lt;li&gt;Docker handles all the heavy lifting, so you don&amp;#39;t even need PHP or Composer or Node on your host computer&lt;/li&gt;
&lt;li&gt;First-class support across macOS, Linux, Windows, and WSL2 - it works the same on every platform&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;WSL2 Setup and Benefits&lt;/strong&gt;: WSL2 (&lt;a href=&quot;https://learn.microsoft.com/en-us/windows/wsl/&quot;&gt;Windows Subsystem for Linux version 2&lt;/a&gt;) transforms Windows development by providing a real Linux kernel running alongside Windows. The video covers the key advantages and considerations:&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Advantages:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Complete Linux environment on your Windows machine - fast and capable&lt;/li&gt;
&lt;li&gt;Amazingly fast web serving with DDEV/Docker CE&lt;/li&gt;
&lt;li&gt;You&amp;#39;re working with an environment much like the one you&amp;#39;ll deploy to&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Considerations:&lt;/em&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Linux on your Windows machine means yet another system to learn and remember&lt;/li&gt;
&lt;li&gt;Context switches between Windows and WSL2 environments&lt;/li&gt;
&lt;li&gt;You must work in the WSL2 filesystem rather than Windows filesystem (optimized for web apps, not Microsoft Word)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Complete Installation Process&lt;/strong&gt;: The video covers &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;every step&lt;/a&gt; of the installation process, including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setting up WSL2 from scratch using the &lt;code&gt;wsl --install&lt;/code&gt; command&lt;/li&gt;
&lt;li&gt;Running the new DDEV Windows installer that automatically configures your distro for Docker CE&lt;/li&gt;
&lt;li&gt;Understanding why you need to work in the WSL2 file system instead of the Windows NTFS filesystem for optimal performance&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Real-World Usage&lt;/strong&gt;: Beyond just installation, you&amp;#39;ll see DDEV in action with:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Creating a simple PHP project and launching it with trusted HTTPS certificates&lt;/li&gt;
&lt;li&gt;Installing Drupal 11 using &lt;code&gt;ddev composer create-project&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Essential DDEV commands like &lt;code&gt;ddev describe&lt;/code&gt;, &lt;code&gt;ddev snapshot&lt;/code&gt;, and &lt;code&gt;ddev export-db&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Advanced IDE integration with both PhpStorm and VS Code, including Xdebug debugging&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Professional Development Features&lt;/strong&gt;: The video demonstrates advanced workflows including:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setting up Xdebug debugging in both PhpStorm and VS Code&lt;/li&gt;
&lt;li&gt;Working with DDEV projects from within WSL2-integrated IDEs&lt;/li&gt;
&lt;li&gt;Understanding Docker Desktop vs Docker CE trade-offs for professional development&lt;/li&gt;
&lt;li&gt;Best practices for file system performance and cross-platform compatibility&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;This screencast follows the official DDEV &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#ddev-installation-windows&quot;&gt;WSL2 Installation Docs&lt;/a&gt;, but provides additional context, troubleshooting tips, and real-world examples to ensure your success.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Here&amp;#39;s the video table of contents (opens on YouTube):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Introduction and What is DDEV? (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=0&quot;&gt;0:00&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;What is WSL2? (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=116&quot;&gt;1:56&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;WSL2 Advantages and Disadvantages (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=170&quot;&gt;2:50&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;WSL2 Installation Process (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=330&quot;&gt;5:30&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;DDEV Windows Installer and Docker Setup (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=774&quot;&gt;12:54&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Creating a Simple PHP Project (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=974&quot;&gt;16:14&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Creating a Drupal 11 Project with Composer (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=1287&quot;&gt;21:27&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Essential DDEV Commands (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=1614&quot;&gt;25:25&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;PhpStorm Integration and Xdebug Setup (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=1838&quot;&gt;30:38&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;VS Code Integration and Debugging (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=2362&quot;&gt;39:22&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Docker Desktop vs Docker CE Discussion (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=2815&quot;&gt;46:55&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;What about Traditional Windows? (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=2946&quot;&gt;49:06&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Wrap-up and Community Resources (&lt;a href=&quot;https://youtu.be/1dr_4gPtFlQ?t=3012&quot;&gt;50:12&lt;/a&gt;)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Additional Resources&lt;/h2&gt;
&lt;h3&gt;📺 Video Materials&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.google.com/presentation/d/1oCn7E1Bk0J9E14jiZ7tdvD80jBlibnc3f7PPJMEtqss/edit?usp=sharing&quot;&gt;Video slides and table of contents&lt;/a&gt; - The slides used in the video&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;📖 Documentation&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/&quot;&gt;DDEV documentation&lt;/a&gt; - Complete DDEV documentation&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#ddev-installation-windows&quot;&gt;WSL2 and DDEV Installation docs&lt;/a&gt; - Official installation guide&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;💬 Community Support&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;DDEV Discord&lt;/a&gt; - Join the DDEV community on Discord for real-time support and discussion&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://stackoverflow.com/questions/tagged/ddev&quot;&gt;DDEV Stack Overflow&lt;/a&gt; - Q&amp;amp;A with the community&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues&quot;&gt;DDEV issue queue&lt;/a&gt; - Bug reports and feature requests&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.drupal.org/community/contributor-guide/reference-information/talk/tools/slack&quot;&gt;Drupal Slack&lt;/a&gt; - &lt;code&gt;#ddev&lt;/code&gt; channel&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;🔧 Development&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev&quot;&gt;DDEV Project Repository&lt;/a&gt; - Source code and releases&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Guides</category><category>Videos</category></item><item><title>Enhanced Security with DDEV&apos;s New `ddev-hostname` Binary</title><link>https://ddev.com/blog/ddev-hostname-security-improvements</link><guid isPermaLink="true">https://ddev.com/blog/ddev-hostname-security-improvements</guid><description>DDEV v1.24.7 introduces a new dedicated `ddev-hostname` binary that improves security by minimizing elevated privileges and simplifies WSL2 setup with the new ddev-wsl2 package.</description><pubDate>Tue, 22 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/07/ddev-hostname-security.jpg&quot; alt=&quot;DDEV v1.24.7 introduces enhanced security with the dedicated ddev-hostname binary&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;TL;DR&lt;/strong&gt;: The new binary &lt;code&gt;ddev-hostname&lt;/code&gt; shipped with DDEV now takes care of &lt;code&gt;hosts&lt;/code&gt; file editing when needed. &lt;code&gt;hosts&lt;/code&gt; editing only happens when you use a non-&lt;code&gt;ddev.site&lt;/code&gt; URL.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;One of the core principles of secure software development is the &lt;strong&gt;principle of least privilege&lt;/strong&gt;: give a program only the minimal permissions it needs to do its job. With DDEV v1.24.7, we&amp;#39;ve taken a significant step forward in applying this principle to how DDEV manages hostname resolution on your development machine.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;If you don&amp;#39;t use an alternate top-level-domain (TLD) or custom FQDNs, you won&amp;#39;t notice any changes here.&lt;/strong&gt; Read on, but DDEV will continue to work as it always has for most users.&lt;/p&gt;
&lt;h2&gt;Why DDEV Sometimes Needs Elevated Privileges&lt;/h2&gt;
&lt;p&gt;Most of the time, DDEV projects work seamlessly with URLs like &lt;code&gt;https://yourproject.ddev.site&lt;/code&gt; without any special setup. That&amp;#39;s because DDEV maintains DNS records for &lt;code&gt;ddev.site&lt;/code&gt; and all its subdomains that resolve to &lt;code&gt;127.0.0.1&lt;/code&gt; (your local machine). As long as you have an internet connection, your browser can look up these hostnames automatically.&lt;/p&gt;
&lt;p&gt;However, there are situations where DDEV needs to edit your system&amp;#39;s &lt;code&gt;hosts&lt;/code&gt; file (&lt;code&gt;/etc/hosts&lt;/code&gt; on Linux/macOS or &lt;code&gt;C:\Windows\System32\drivers\etc\hosts&lt;/code&gt; on Windows):&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;When you don&amp;#39;t have an internet connection&lt;/li&gt;
&lt;li&gt;When your DNS is broken or blocks &lt;code&gt;127.0.0.1&lt;/code&gt; resolution (DNS rebinding protection)&lt;/li&gt;
&lt;li&gt;When you use custom hostnames with &lt;code&gt;additional_fqdns&lt;/code&gt; that aren&amp;#39;t under &lt;code&gt;ddev.site&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;When you&amp;#39;ve configured a &lt;code&gt;project_tld&lt;/code&gt; other than the default &lt;code&gt;ddev.site&lt;/code&gt; or disabled DNS with &lt;code&gt;use_dns_when_possible: false&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;For a deeper dive into how DDEV hostname resolution works, see our detailed guide on &lt;a href=&quot;ddev-name-resolution-wildcards.md&quot;&gt;DDEV name resolution and wildcards&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;The Security Challenge: Minimal Elevated Access&lt;/h2&gt;
&lt;p&gt;When DDEV does need to edit the &lt;code&gt;hosts&lt;/code&gt; file, it requires elevated permissions (root on Linux/macOS, Administrator on Windows). This is the &lt;strong&gt;only&lt;/strong&gt; thing DDEV does with elevated privileges—but from a security perspective, how we handle that elevation matters a lot.&lt;/p&gt;
&lt;p&gt;Previously, the main DDEV binary—which handles containers, databases, files, and many other tasks—also had to manage hostname editing with elevated permissions. When you elevate privileges for one specific task (editing &lt;code&gt;hosts&lt;/code&gt; files), you want to minimize what else that elevated process can do. The old approach meant a larger binary with more dependencies running with elevated permissions, increasing the potential attack surface.&lt;/p&gt;
&lt;h2&gt;The Solution: Meet ddev-hostname&lt;/h2&gt;
&lt;p&gt;DDEV v1.24.7 introduces a new dedicated &lt;code&gt;ddev-hostname&lt;/code&gt; (and &lt;code&gt;ddev-hostname.exe&lt;/code&gt; for Windows and WSL2) binary that handles hostname management exclusively. This specialized tool follows the security principle of least privilege in several important ways:&lt;/p&gt;
&lt;h3&gt;Minimal Capabilities&lt;/h3&gt;
&lt;p&gt;The &lt;code&gt;ddev-hostname&lt;/code&gt; binary has been stripped down to do exactly one thing: manage hostname entries in your system&amp;#39;s &lt;code&gt;hosts&lt;/code&gt; file. It doesn&amp;#39;t include Docker utilities, global configuration management, or the dozens of other features that the main DDEV binary provides.&lt;/p&gt;
&lt;h3&gt;Reduced Attack Surface&lt;/h3&gt;
&lt;p&gt;By removing unnecessary dependencies, we shrunk the &lt;code&gt;ddev-hostname&lt;/code&gt; binary significantly. More important, though, we eliminated dependencies on several libraries that were previously included in the main DDEV binary but aren&amp;#39;t needed for hostname management.&lt;/p&gt;
&lt;p&gt;Each removed dependency is one less potential entry point for security vulnerabilities in the elevated binary.&lt;/p&gt;
&lt;h3&gt;Platform-Specific Security&lt;/h3&gt;
&lt;p&gt;The new implementation provides native elevation techniques for each platform instead of relying on third-party tools like &lt;code&gt;gsudo.exe&lt;/code&gt; on Windows. This reduces external dependencies and gives us better control over the security model.&lt;/p&gt;
&lt;h2&gt;Special Benefits for WSL2 Users&lt;/h2&gt;
&lt;p&gt;If you&amp;#39;re using DDEV with Windows WSL2, you&amp;#39;ll especially appreciate another improvement that comes with these changes. The new &lt;code&gt;ddev-wsl2&lt;/code&gt; package provides the Windows-side binaries you need, including &lt;code&gt;ddev-hostname.exe&lt;/code&gt; and &lt;code&gt;mkcert.exe&lt;/code&gt;, directly within your Linux distro.&lt;/p&gt;
&lt;p&gt;This means &lt;strong&gt;you no longer need to install DDEV on the Windows side&lt;/strong&gt; when using WSL2. The &lt;code&gt;ddev-wsl2&lt;/code&gt; package gives you everything you need for proper WSL2 integration with Windows hostname and certificate management.&lt;/p&gt;
&lt;p&gt;To install it:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo apt-get update &amp;amp;&amp;amp; sudo apt-get install ddev-wsl2
# or sudo dnf install --refresh ddev-wsl2
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This streamlines the WSL2 setup process significantly and ensures you always have the correct versions of these critical utilities.&lt;/p&gt;
&lt;h2&gt;What This Means for You&lt;/h2&gt;
&lt;p&gt;As a DDEV user, these changes are largely transparent—your development workflow remains the same. But under the hood, you&amp;#39;re now benefiting from:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Better security&lt;/strong&gt;: Elevated processes now have minimal capabilities and smaller attack surfaces.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Simpler WSL2 setup&lt;/strong&gt;: No need for Windows-side DDEV installation.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;More reliable hostname management&lt;/strong&gt;: Native platform elevation instead of third-party tools.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;The Bigger Picture&lt;/h2&gt;
&lt;p&gt;These improvements reflect our ongoing commitment to making DDEV not just powerful and easy to use, but also secure by design. By applying established security principles like least privilege and minimal attack surface, we&amp;#39;re building a development tool that you can trust with your local environment.&lt;/p&gt;
&lt;h2&gt;Getting Started&lt;/h2&gt;
&lt;p&gt;DDEV v1.24.7 with these security improvements is &lt;a href=&quot;https://github.com/ddev/ddev/releases&quot;&gt;available now&lt;/a&gt;. If you&amp;#39;re using WSL2, install the new &lt;code&gt;ddev-wsl2&lt;/code&gt; package.&lt;/p&gt;
&lt;p&gt;As always, we&amp;#39;d love to hear your feedback on these changes. Join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt; to share your experience or ask questions about the new hostname management approach.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. And we&amp;#39;d love to have you sign up for the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;monthly newsletter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Announcements</category><category>DevOps</category></item><item><title>New GUI Installer: Get DDEV Running on Windows in Just 10 Minutes (Video)</title><link>https://ddev.com/blog/watch-new-windows-installer</link><guid isPermaLink="true">https://ddev.com/blog/watch-new-windows-installer</guid><description>Skip the complex PowerShell scripts! DDEV&apos;s new GUI installer gets you developing on Windows with WSL2 in just 10 minutes. Watch the step-by-step video.</description><pubDate>Mon, 21 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/11/windows-install-blog-logos.png&quot; alt=&quot;Windows logo with technical circuit elements representing DDEV Windows installation&quot;&gt;&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Using macOS or Linux?&lt;/strong&gt; See &lt;a href=&quot;watch-ddev-local-from-scratch-with-macos.md&quot;&gt;DDEV on macOS from Scratch&lt;/a&gt; or &lt;a href=&quot;ddev-on-linux-in-10-minutes.md&quot;&gt;DDEV on Linux in 10 Minutes&lt;/a&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;Tired of those complex PowerShell scripts we used to provide to get DDEV running on Windows? The new GUI installer changes everything.&lt;/p&gt;
&lt;p&gt;In &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.7&quot;&gt;DDEV v1.24.7&lt;/a&gt; we&amp;#39;ve eliminated the complexity of Windows setup. What used to require a privileged PowerShell script and manual WSL2 configuration now takes just a few clicks.&lt;/p&gt;
&lt;h2&gt;Why This Changes Everything for DDEV Users on Windows&lt;/h2&gt;
&lt;p&gt;✅ &lt;strong&gt;Almost No Command Line Required for Setup&lt;/strong&gt;&lt;br/&gt;
✅ &lt;strong&gt;Handles WSL2 Setup Automatically&lt;/strong&gt; - No more manual configuration&lt;br/&gt;
✅ &lt;strong&gt;Works with Your Preferred Docker Setup&lt;/strong&gt; - Docker Desktop, Rancher Desktop, or Docker-CE, in WSL2 or with Traditional Windows&lt;br/&gt;
✅ &lt;strong&gt;Beginner-Friendly&lt;/strong&gt; - Perfect for users new to DDEV&lt;/p&gt;
&lt;p&gt;The new installer supports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;WSL2 Docker-CE&lt;/li&gt;
&lt;li&gt;WSL2 Docker Desktop and Rancher Desktop&lt;/li&gt;
&lt;li&gt;Traditional Windows installation&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;See It In Action&lt;/h2&gt;
&lt;p&gt;Watch me transform a fresh Windows machine into a fully functional DDEV development environment in about 10 minutes:&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;What you&amp;#39;ll see:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Starting from a Windows machine without WSL2&lt;/li&gt;
&lt;li&gt;Complete WSL2 and Docker CE setup&lt;/li&gt;
&lt;li&gt;DDEV installation and first project&lt;/li&gt;
&lt;/ul&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/nKxZ5YNucd4?si=4QWTycKfMTu-nXEz&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;p&gt;This setup process is detailed in &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;Get Started - Windows&lt;/a&gt; and explained further in the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#ddev-installation-windows&quot;&gt;official docs&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Ready to Try It?&lt;/h2&gt;
&lt;p&gt;🚀 &lt;strong&gt;&lt;a href=&quot;https://github.com/ddev/ddev/releases&quot;&gt;Download the new Windows installer&lt;/a&gt;&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Cross-Platform Compatibility:&lt;/strong&gt; DDEV works the same on macOS, Linux, Traditional Windows, and WSL2, see &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;Getting Started&lt;/a&gt;. Your whole team can work on their preferred environment instead of fighting about it. It supports development of &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/&quot;&gt;so many different web environments&lt;/a&gt;, so you&amp;#39;re not stuck with using different tools for different CMSs.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Support the Project:&lt;/strong&gt; DDEV is fully open-source and free to use, and run by the nonprofit DDEV Foundation. We ask you to help make us a sustainable project by sponsoring yourself or getting your organization to sponsor the project. &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Sponsor us on GitHub&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Questions? Issues? We&amp;#39;re here to help:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;💬 &lt;a href=&quot;https://ddev.com/contact&quot;&gt;Contact our team&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📖 &lt;a href=&quot;https://ddev.com/get-started&quot;&gt;Simple installation docs&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;📖 &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#ddev-installation-windows&quot;&gt;Full installation docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;em&gt;Have you signed up for the monthly &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt;? We&amp;#39;d love to have you.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Announcements</category><category>DevOps</category><category>Videos</category></item><item><title>Testing DDEV with VMware Workstation Pro</title><link>https://ddev.com/blog/testing-ddev-with-vmware-workstation-pro</link><guid isPermaLink="true">https://ddev.com/blog/testing-ddev-with-vmware-workstation-pro</guid><description>A guide to using VMware Workstation Pro to install and test DDEV on Windows and Linux environments, including optimization tips for virtual machine performance and configuration.</description><pubDate>Thu, 10 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/07/vmware-ddev-laravel.png&quot; alt=&quot;Screenshot showing a DDEV Laravel demo project running on Windows using WSL2 and Docker Desktop.&quot;&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;DDEV works in various environments, and it&amp;#39;s often tested in virtual machines, but nested virtualization can be hard to set up and may impact performance.&lt;/p&gt;
&lt;p&gt;In 2024, VMware Workstation Pro &lt;a href=&quot;https://blogs.vmware.com/cloud-foundation/2024/05/13/vmware-workstation-pro-now-available-free-for-personal-use/&quot;&gt;became free for personal use&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;This guide shows how &lt;a href=&quot;https://www.vmware.com/&quot;&gt;VMware Workstation Pro&lt;/a&gt; can be used to prepare environments for both Windows and Linux, where Docker and DDEV perform well even inside a VM.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Warning&lt;/strong&gt;: Nested virtualization may not work on all systems:&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;Virtualized Intel VT-x/EPT is not supported on this platform. Continue without virtualized Intel VT-x/EPT? VMware Workstation does not support nested virtualization on this host. Module &amp;#39;HV&amp;#39; power on failed. Failed to start the virtual machine.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;If this occurs, search for known workarounds specific to your hardware and BIOS/UEFI configuration. It worked out of the box for me on Arch-based Linux but did not work for Randy on Windows 11.&lt;/p&gt;
&lt;h2&gt;Installing VMware Workstation Pro&lt;/h2&gt;
&lt;p&gt;Download and install &lt;a href=&quot;https://knowledge.broadcom.com/external/article/344595/downloading-and-installing-vmware-workst.html&quot;&gt;VMware Workstation Pro&lt;/a&gt;. You must click on the link to the terms and conditions to accept them before downloading (checkbox is inactive by default). Packages are available for Windows and Linux.&lt;/p&gt;
&lt;p&gt;On Arch-based systems, install via:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;yay -S vmware-workstation
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Initial configuration steps:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Edit &amp;gt; Preferences &amp;gt; Workspace &amp;gt; Default Location for Virtual Machines - use location with sufficient space&lt;/li&gt;
&lt;li&gt;Edit &amp;gt; Preferences &amp;gt; Hotkeys - remember shortcut to escape the VM, the default is Ctrl+Alt.&lt;/li&gt;
&lt;li&gt;Edit &amp;gt; Preferences &amp;gt; Updates &amp;gt; Configure update behavior&lt;/li&gt;
&lt;li&gt;Check other settings&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Installing Windows 11&lt;/h2&gt;
&lt;p&gt;Download &lt;a href=&quot;https://www.microsoft.com/en-us/software-download/windows11&quot;&gt;the Windows 11 Disk Image (ISO) for x64 devices&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;In VMware:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;File &amp;gt; New Virtual Machine &amp;gt; Typical &amp;gt; I will install the operating system later&lt;/li&gt;
&lt;li&gt;Select Windows 10 x64, not Windows 11 x64 (I don&amp;#39;t want to use TPM encryption)&lt;/li&gt;
&lt;li&gt;Specify 100 GB disk, stored as a single file&lt;/li&gt;
&lt;li&gt;Customize hardware and finish:&lt;ul&gt;
&lt;li&gt;Set at least 8GB RAM&lt;/li&gt;
&lt;li&gt;Number of processors: 2, number of cores per processor: 2&lt;/li&gt;
&lt;li&gt;Virtualize Intel VT-x/EPT or AMD-V/RVI (check)&lt;/li&gt;
&lt;li&gt;Virtualize CPU performance counters (check)&lt;/li&gt;
&lt;li&gt;Network Adapter &amp;gt; Connect at power on (uncheck) - to be able to set up a local Windows account and skip Windows updates&lt;/li&gt;
&lt;li&gt;Sound Card &amp;gt; Connect at power on (uncheck) - I don&amp;#39;t like any beeps on the first boot, will be turned on later&lt;/li&gt;
&lt;li&gt;USB Controller &amp;gt; Automatically connect new USB devices (uncheck if you don&amp;#39;t need USB devices)&lt;/li&gt;
&lt;li&gt;CD/DVD (SATA) &amp;gt; Use ISO image &amp;gt; Browse - select ISO file&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To apply additional low-level VM configuration, close VMware itself and use the script below:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;#!/usr/bin/env bash

# This script changes more settings than the GUI allows
# Tested only on Arch-based Linux
# Run it from the virtual machine directory

vmx_file=&amp;quot;$( (find ./*.vmx -maxdepth 1 -type f 2&amp;gt;/dev/null | head -1) || true)&amp;quot;

if [[ &amp;quot;${vmx_file}&amp;quot; == &amp;quot;&amp;quot; ]]; then
    echo &amp;gt;&amp;amp;2 &amp;quot;Unable to find *.vmx file in the current directory.&amp;quot;
    exit 1
fi

# from https://wiki.archlinux.org/title/VMware
declare -A vmware_configs=(
    # 3D acceleration
    [&amp;quot;mks.gl.allowBlacklistedDrivers&amp;quot;]=&amp;quot;TRUE&amp;quot;
    # 5 buttons mouse for windows
    [&amp;quot;mouse.vusb.enable&amp;quot;]=&amp;quot;TRUE&amp;quot;
    [&amp;quot;mouse.vusb.useBasicMouse&amp;quot;]=&amp;quot;TRUE&amp;quot;
    # disable logging
    [&amp;quot;vmx.scoreboard.enabled&amp;quot;]=&amp;quot;FALSE&amp;quot;
    [&amp;quot;logging&amp;quot;]=&amp;quot;FALSE&amp;quot;
    [&amp;quot;vmx.buildType&amp;quot;]=&amp;quot;release&amp;quot;
    # paravirtual adapters
    [&amp;quot;scsi0.virtualDev&amp;quot;]=&amp;quot;pvscsi&amp;quot;
    [&amp;quot;ethernet0.virtualDev&amp;quot;]=&amp;quot;vmxnet3&amp;quot;
    # performance
    [&amp;quot;MemTrimRate&amp;quot;]=&amp;quot;0&amp;quot;
    [&amp;quot;mainmem.backing&amp;quot;]=&amp;quot;swap&amp;quot;
    [&amp;quot;prefvmx.useRecommendedLockedMemSize&amp;quot;]=&amp;quot;TRUE&amp;quot;
    [&amp;quot;MemAllowAutoScaleDown&amp;quot;]=&amp;quot;FALSE&amp;quot;
    [&amp;quot;sched.mem.pshare.enable&amp;quot;]=&amp;quot;FALSE&amp;quot;
    [&amp;quot;prefvmx.minVmMemPct&amp;quot;]=&amp;quot;100&amp;quot;
    [&amp;quot;mainMem.partialLazySave&amp;quot;]=&amp;quot;FALSE&amp;quot;
    [&amp;quot;mainMem.partialLazyRestore&amp;quot;]=&amp;quot;FALSE&amp;quot;
    # config
    [&amp;quot;tools.syncTime&amp;quot;]=&amp;quot;TRUE&amp;quot;
    [&amp;quot;numvcpus&amp;quot;]=&amp;quot;4&amp;quot;
    [&amp;quot;cpuid.coresPerSocket&amp;quot;]=&amp;quot;2&amp;quot;
    [&amp;quot;memsize&amp;quot;]=&amp;quot;8192&amp;quot;
    [&amp;quot;vhv.enable&amp;quot;]=&amp;quot;TRUE&amp;quot;
    [&amp;quot;vpmc.enable&amp;quot;]=&amp;quot;TRUE&amp;quot;
)

for key in &amp;quot;${!vmware_configs[@]}&amp;quot;; do
    value=&amp;quot;${vmware_configs[&amp;quot;${key}&amp;quot;]}&amp;quot;
    line=&amp;quot;${key} = \&amp;quot;${value}\&amp;quot;&amp;quot;

    if grep -q &amp;quot;^${key}&amp;quot; &amp;quot;${vmx_file}&amp;quot;; then
        sed -i &amp;quot;s/^${key}.*/${line}/&amp;quot; &amp;quot;${vmx_file}&amp;quot;
    else
        echo &amp;quot;${line}&amp;quot; &amp;gt;&amp;gt; &amp;quot;${vmx_file}&amp;quot;
    fi
done

echo &amp;quot;Updated ${vmx_file}&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Press &amp;quot;Start up this guest operating system&amp;quot;.&lt;/p&gt;
&lt;p&gt;If Windows 10 was chosen as virtual machine type:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Wait for the &amp;quot;Select Image&amp;quot; screen (where you choose which Windows to install), press Shift+F10 to open &lt;code&gt;cmd&lt;/code&gt;, write &lt;code&gt;regedit&lt;/code&gt;, open &lt;code&gt;HKEY_LOCAL_MACHINE\SYSTEM\Setup&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;RMB (right mouse button) on Setup &amp;gt; New &amp;gt; Key &amp;gt; write &lt;code&gt;LabConfig&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;RMB on Values area &amp;gt; New &amp;gt; DWORD (32-bit) Value &amp;gt; write &lt;code&gt;BypassSecureBootCheck&lt;/code&gt;, set &lt;code&gt;1&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;RMB on Values area &amp;gt; New &amp;gt; DWORD (32-bit) Value &amp;gt; write &lt;code&gt;BypassTPMCheck&lt;/code&gt;, set &lt;code&gt;1&lt;/code&gt;
&lt;img src=&quot;https://ddev.com/img/blog/2025/07/vmware-windows-regedit.png&quot; alt=&quot;Regedit Settings&quot;&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After the first reboot (installation is not done yet), don&amp;#39;t select country in the initial setup:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Press Shift+F10, enter &lt;code&gt;OOBE\BYPASSNRO&lt;/code&gt; (&lt;code&gt;O&lt;/code&gt; letter, not number) directly in &lt;code&gt;cmd&lt;/code&gt;. This is needed to force creation of a local account (I don&amp;#39;t want to login anywhere here).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;After Windows boots:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;VMware Menu &amp;gt; VM &amp;gt; Install VMware Tools&lt;/li&gt;
&lt;li&gt;Open Explorer, select &lt;code&gt;D:&lt;/code&gt; drive with mounted tools, and run &lt;code&gt;setup.exe&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Reboot&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Windows configuration:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Settings &amp;gt; Windows Update &amp;gt; Pause&lt;/li&gt;
&lt;li&gt;Explorer &amp;gt; This PC &amp;gt; View &amp;gt; Show &amp;gt; Filename extensions, Hidden items&lt;/li&gt;
&lt;li&gt;Settings &amp;gt; Home &amp;gt; Rename&lt;/li&gt;
&lt;li&gt;Settings &amp;gt; System &amp;gt; Power &amp;gt; Screen and sleep timeouts &amp;gt; Never&lt;/li&gt;
&lt;li&gt;Settings &amp;gt; System &amp;gt; Sound &amp;gt; More sound settings &amp;gt; Sounds &amp;gt; No Sounds, uncheck &amp;quot;Play Windows Startup sound&amp;quot;&lt;/li&gt;
&lt;li&gt;Settings &amp;gt; Personalization &amp;gt; Taskbar &amp;gt; Task View (uncheck), Widgets (uncheck)&lt;/li&gt;
&lt;li&gt;Settings &amp;gt; Personalization &amp;gt; Taskbar &amp;gt; Taskbar behaviors &amp;gt; Taskbar alignment &amp;gt; Left&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Registry configuration:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;# Remove recommended applications from the Windows 11 start menu
reg add &amp;quot;HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\Windows\Cloud Content&amp;quot; /v DisableWindowsConsumerFeatures /t REG_DWORD /d 1 /f
# Disable automatic update for APPX applications in Microsoft Store
reg add &amp;quot;HKEY_LOCAL_MACHINE\SOFTWARE\Policies\Microsoft\WindowsStore&amp;quot; /v AutoDownload /t REG_DWORD /d 2 /f
# Disable Meltdown and Spectre fixes that slow down Windows
reg add &amp;quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management&amp;quot; /v FeatureSettingsOverride /t REG_DWORD /d 3 /f
reg add &amp;quot;HKEY_LOCAL_MACHINE\SYSTEM\CurrentControlSet\Control\Session Manager\Memory Management&amp;quot; /v FeatureSettingsOverrideMask /t REG_DWORD /d 3 /f
# Mouse cursor on the default button
reg add &amp;quot;HKEY_CURRENT_USER\Control Panel\Mouse&amp;quot; /v SnapToDefaultButton /t REG_SZ /d 1 /f
# Enable developer mode feature
reg add &amp;quot;HKEY_LOCAL_MACHINE\SOFTWARE\Microsoft\Windows\CurrentVersion\AppModelUnlock&amp;quot; /t REG_DWORD /v &amp;quot;AllowDevelopmentWithoutDevLicense&amp;quot; /d 1 /f
# Set old right click menu
reg add &amp;quot;HKEY_CURRENT_USER\SOFTWARE\CLASSES\CLSID\{86ca1aa0-34aa-4e8b-a509-50c905bae2a2}\InprocServer32&amp;quot; /ve /f
# Restart Windows Explorer
taskkill /f /im explorer.exe
start explorer.exe
# disable reserved storage in Windows 11
dism /Online /Get-ReservedStorageState
dism /Online /Set-ReservedStorageState /State:Disabled
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Shutdown the virtual machine, press &amp;quot;Edit virtual machine settings&amp;quot;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Hardware &amp;gt; Network Adapter &amp;gt; Connect at power on (check)&lt;/li&gt;
&lt;li&gt;Hardware &amp;gt; Sound Card &amp;gt; Connect at power on (check)&lt;/li&gt;
&lt;li&gt;Hardware &amp;gt; USB Controller &amp;gt; Automatically connect new USB devices (check if needed)&lt;/li&gt;
&lt;li&gt;Hardware &amp;gt; CD/DVD (SATA) &amp;gt; Connect at power on (uncheck)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Press &amp;quot;Start up this guest operating system&amp;quot;, and run inside Windows:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Search &amp;gt; Disk Cleanup&lt;/li&gt;
&lt;li&gt;Search &amp;gt; Defragment and Optimize Drives&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;At this point, the VM uses more disk space than needed. We can &lt;a href=&quot;https://wiki.vi-toolkit.com/index.php?title=Shrink_guest_on_hosted_platform&quot;&gt;shrink guest on hosted platform&lt;/a&gt;:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;Add VMware Tools to PATH, run Terminal as admin:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;cmd /c &amp;quot;setx /M PATH &amp;quot;&amp;quot;C:\Program Files\VMware\VMware Tools;%PATH%&amp;quot;&amp;quot;&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Restart PowerShell, and run Terminal as admin:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-powershell&quot;&gt;VMwareToolboxCmd.exe disk shrink c:\
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Wait until &lt;code&gt;*.vmdk&lt;/code&gt; file at virtual machine location will be shrinked.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;VMware Menu &amp;gt; VM &amp;gt; Snapshot &amp;gt; Take snapshot.&lt;/p&gt;
&lt;p&gt;Install &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/docker-installation/#docker-installation-windows&quot;&gt;Docker&lt;/a&gt; and &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#windows&quot;&gt;DDEV&lt;/a&gt;. Create additional snapshots as needed.&lt;/p&gt;
&lt;h2&gt;Installing Linux&lt;/h2&gt;
&lt;p&gt;Follow similar steps as for Windows, using a Linux ISO (e.g. &lt;a href=&quot;https://ubuntu.com/download/desktop&quot;&gt;Ubuntu&lt;/a&gt;).&lt;/p&gt;
&lt;p&gt;Install VMware Tools inside the guest:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;# Debian-based:
sudo apt-get install open-vm-tools-desktop
# Fedora-based:
sudo dnf install open-vm-tools-desktop
# Arch-based:
sudo pacman -S open-vm-tools
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If display resolution is incorrect:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo systemctl restart vmtoolsd.service
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;If copy/paste from/to the host doesn&amp;#39;t work:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;vmware-user
# or
vmtoolsd -n vmusr
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;References:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vmware/open-vm-tools/issues/627&quot;&gt;https://github.com/vmware/open-vm-tools/issues/627&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/vmware/open-vm-tools/issues/568&quot;&gt;https://github.com/vmware/open-vm-tools/issues/568&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To configure shared folders inside the guest:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;mkdir -p ~/Shared
echo &amp;quot;vmhgfs-fuse $HOME/Shared fuse defaults,allow_other 0 0&amp;quot; | sudo tee -a /etc/fstab
sudo systemctl daemon-reload
sudo mount -a
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;a href=&quot;https://wiki.vi-toolkit.com/index.php?title=Shrink_guest_on_hosted_platform&quot;&gt;Shrink Linux VM disk&lt;/a&gt;, take a snapshot, then proceed with installing &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/docker-installation/#docker-installation-linux&quot;&gt;Docker&lt;/a&gt; and &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#ddev-installation-linux&quot;&gt;DDEV&lt;/a&gt;. Create additional snapshots as needed.&lt;/p&gt;
&lt;h2&gt;How Do You Test DDEV?&lt;/h2&gt;
&lt;p&gt;If you use a different setup that performs well, consider contributing a guest post to &lt;a href=&quot;https://ddev.com/&quot;&gt;ddev.com&lt;/a&gt; or sharing your findings.&lt;/p&gt;
</content:encoded><category>Guides</category></item><item><title>DDEV July 2025 Newsletter</title><link>https://ddev.com/blog/ddev-july-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-july-2025-newsletter</guid><description>Highlights: Downgrading Terminus for old PHP, FrankenPHP, Advisory Group meeting and Governance proposal, Shopware Storefront and Admin Watchers, Writing your first Drupal 10 Functional Test, and more.</description><pubDate>Mon, 07 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/07/mount-garfield-morning.jpg&quot; alt=&quot;Mount Garfield this morning, Palisade, Colorado, USA&quot;&gt;&lt;p&gt;&lt;strong&gt;Welcome to the July 2025 DDEV Newsletter&lt;/strong&gt;&lt;br&gt;This month: Downgrading Terminus for old PHP, FrankenPHP, Advisory Group meeting and Governance proposal, Shopware Storefront and Admin Watchers, Writing your first Drupal 10 Functional Test, and more.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;What’s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;How to Downgrade Terminus in DDEV&amp;#39;s Web Container and Customize Other Bundled Tools&lt;/strong&gt;&lt;br&gt;A guest blog by Bill Seremetis explaining the problem with an old PHP version and Pantheon&amp;#39;s Terminus, and how to fix it. → &lt;a href=&quot;ddev-bundled-tools-using-custom-versions.md&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Experimenting with FrankenPHP in DDEV&lt;/strong&gt;&lt;br&gt;Stas Zhuk explains two ways to use &lt;a href=&quot;https://frankenphp.org/&quot;&gt;FrankenPHP&lt;/a&gt; in DDEV. → &lt;a href=&quot;using-frankenphp-with-ddev.md&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;July 2025 DDEV Advisory Group Meeting&lt;/strong&gt; meeting notes and recording! → &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7373&quot;&gt;Read more↗&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;From DevOps Headaches to Seamless Onboarding: How Dropping Chocolatey Made DDEV the Perfect Fit for a Client&amp;#39;s Drupal Team&lt;/strong&gt; → &lt;a href=&quot;https://colan.pro/blog/dropping-chocolatey-for-ddev-on-windows-drupal-development/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Shopware Storefront and Admin Watchers with DDEV&lt;/strong&gt; → &lt;a href=&quot;https://notebook.vanwittlaer.de/ddev-for-shopware/storefront-and-admin-watchers-with-ddev&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;How to Write Your First Functional Test in Drupal 10&lt;/strong&gt; → &lt;a href=&quot;https://eduardotelaya.com/blog/technology/2025-05-26-how-to-write-your-first-functional-test-in-drupal-10/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Governance &amp;amp; Roadmap&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apache Foundation-inspired Project Management Committee Exploration&lt;/strong&gt;&lt;br&gt;See a proposed early update to the DDEV Foundation&amp;#39;s Articles of Incorporation, aiming us at governance like the Backdrop CMS folks have → &lt;a href=&quot;https://docs.google.com/document/d/1MXatsz2FMBSnllnUArNCv562x0T2-EF1OwqsFEU9_-M/edit?usp=sharing&quot;&gt;Details↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Status&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monthly average income&lt;/strong&gt; down slightly from $7,809 to $7,759 (65% of $12,000 goal). Every contribution helps sustain our work—thank you! → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Stay in the loop—follow us and join the conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>Using FrankenPHP with DDEV</title><link>https://ddev.com/blog/using-frankenphp-with-ddev</link><guid isPermaLink="true">https://ddev.com/blog/using-frankenphp-with-ddev</guid><description>Learn how to use FrankenPHP with DDEV through the official add-on or Debian packages. Includes installation steps, features, and performance benchmarks.</description><pubDate>Thu, 03 Jul 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-logo.png&quot; alt=&quot;FrankenPHP logo&quot;&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;The PHP ecosystem is changing fast, with tools like &lt;a href=&quot;https://frankenphp.dev&quot;&gt;FrankenPHP&lt;/a&gt; improving both performance and developer experience.&lt;/p&gt;
&lt;p&gt;FrankenPHP is now &lt;a href=&quot;https://thephp.foundation/blog/2025/05/15/frankenphp/&quot;&gt;officially supported&lt;/a&gt; by The PHP Foundation.&lt;/p&gt;
&lt;p&gt;This guide explains two ways to integrate FrankenPHP with DDEV:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;strong&gt;Official DDEV add-on&lt;/strong&gt; (recommended): Run FrankenPHP as a separate service with full PHP extension support and flexibility&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Debian packages&lt;/strong&gt;: Install FrankenPHP directly in the web container (PHP 8.4 only, limited features)&lt;/li&gt;
&lt;/ol&gt;
&lt;h3&gt;Generic web server&lt;/h3&gt;
&lt;p&gt;This blog shows examples of the recently added &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#using-nodejs-as-ddevs-primary-web-server&quot;&gt;DDEV&amp;#39;s generic web server&lt;/a&gt;, which supports flexible configurations. It allows you to use any custom web server you want, including Node.js, Python, Ruby, etc.&lt;/p&gt;
&lt;h2&gt;DDEV FrankenPHP Add-on (Recommended)&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/ddev/ddev-frankenphp&quot;&gt;ddev/ddev-frankenphp&lt;/a&gt; add-on is now officially maintained by the DDEV team! It has matured to production-ready status with full feature support.&lt;/p&gt;
&lt;h3&gt;⚙️ Installation:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev add-on get ddev/ddev-frankenphp
ddev restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;To add PHP extensions (see supported extensions &lt;a href=&quot;https://github.com/mlocati/docker-php-extension-installer?tab=readme-ov-file#supported-php-extensions&quot;&gt;here&lt;/a&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev dotenv set .ddev/.env.web --frankenphp-custom-extensions=&amp;quot;redis memcached&amp;quot;
ddev stop &amp;amp;&amp;amp; ddev debug rebuild &amp;amp;&amp;amp; ddev start
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;✨ Features:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Supports PHP 8.2+&lt;/li&gt;
&lt;li&gt;Install any PHP extension (Redis, Xdebug, Memcached, etc.)&lt;/li&gt;
&lt;li&gt;Custom FrankenPHP options supported&lt;/li&gt;
&lt;li&gt;Worker mode supported for maximum performance&lt;/li&gt;
&lt;li&gt;Full debugging support: &lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/commands/#xdebug&quot;&gt;&lt;code&gt;ddev xdebug&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/commands/#xhprof&quot;&gt;&lt;code&gt;ddev xhprof&lt;/code&gt;&lt;/a&gt;, &lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/commands/#xhgui&quot;&gt;&lt;code&gt;ddev xhgui&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Note: Initial &lt;code&gt;ddev start&lt;/code&gt; takes longer due to manual extension compilation.&lt;/p&gt;
&lt;p&gt;If you want to suggest some feature or found a bug, feel free to &lt;a href=&quot;https://github.com/ddev/ddev-frankenphp/issues&quot;&gt;open an issue&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Alternative: FrankenPHP via Debian Packages&lt;/h2&gt;
&lt;p&gt;FrankenPHP can also be installed directly in the web container using Debian packages. This example from the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/#generic-frankenphp&quot;&gt;DDEV quickstart&lt;/a&gt; shows a setup for a Drupal 11 project where FrankenPHP runs as an extra daemon.&lt;/p&gt;
&lt;h3&gt;⚙️ Installation:&lt;/h3&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;export FRANKENPHP_SITENAME=my-frankenphp-site
mkdir ${FRANKENPHP_SITENAME} &amp;amp;&amp;amp; cd ${FRANKENPHP_SITENAME}
ddev config --project-type=drupal11 --webserver-type=generic --docroot=web --php-version=8.4
ddev start

cat &amp;lt;&amp;lt;&amp;#39;EOF&amp;#39; &amp;gt; .ddev/config.frankenphp.yaml
web_extra_daemons:
  - name: &amp;quot;frankenphp&amp;quot;
    command: &amp;quot;frankenphp php-server --listen=0.0.0.0:80 --root=\&amp;quot;/var/www/html/${DDEV_DOCROOT:-}\&amp;quot; -v -a&amp;quot;
    directory: /var/www/html
web_extra_exposed_ports:
  - name: &amp;quot;frankenphp&amp;quot;
    container_port: 80
    http_port: 80
    https_port: 443
EOF

cat &amp;lt;&amp;lt;&amp;#39;DOCKERFILEEND&amp;#39; &amp;gt;.ddev/web-build/Dockerfile.frankenphp
RUN curl -fsSL https://key.henderkes.com/static-php.gpg -o /usr/share/keyrings/static-php.gpg &amp;amp;&amp;amp; \
    echo &amp;quot;deb [signed-by=/usr/share/keyrings/static-php.gpg] https://deb.henderkes.com/ stable main&amp;quot; &amp;gt; /etc/apt/sources.list.d/static-php.list
# Install FrankenPHP and extensions, see https://frankenphp.dev/docs/#deb-packages for details.
# You can find the list of available extensions at https://deb.henderkes.com/pool/main/p/
RUN (apt-get update || true) &amp;amp;&amp;amp; DEBIAN_FRONTEND=noninteractive apt-get install -y -o Dpkg::Options::=&amp;quot;--force-confnew&amp;quot; --no-install-recommends --no-install-suggests \
    frankenphp \
    php-zts-cli \
    php-zts-gd \
    php-zts-pdo-mysql
# Make sure that &amp;#39;php&amp;#39; command uses the ZTS version of PHP
# and that the php.ini in use by FrankenPHP is the one from DDEV.
RUN ln -sf /usr/bin/php-zts /usr/local/bin/php &amp;amp;&amp;amp; \
    ln -sf /etc/php/${DDEV_PHP_VERSION}/fpm/php.ini /etc/php-zts/php.ini
DOCKERFILEEND

ddev composer create-project drupal/recommended-project
ddev composer require drush/drush
ddev restart
ddev drush site:install demo_umami --account-name=admin --account-pass=admin -y
ddev launch
# or automatically log in with
ddev launch $(ddev drush uli)
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;⚠️ Limitations:&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;PHP 8.4 only (no version flexibility)&lt;/li&gt;
&lt;li&gt;Cannot customize FrankenPHP options&lt;/li&gt;
&lt;li&gt;Worker mode not supported&lt;/li&gt;
&lt;li&gt;No debugging support (&lt;code&gt;ddev xdebug&lt;/code&gt;, &lt;code&gt;ddev xhprof&lt;/code&gt;, &lt;code&gt;ddev xhgui&lt;/code&gt; do not work)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://frankenphp.dev/docs/&quot;&gt;FrankenPHP documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#using-nodejs-as-ddevs-primary-web-server&quot;&gt;DDEV&amp;#39;s generic web server&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-frankenphp&quot;&gt;FrankenPHP add-on&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/#generic-frankenphp&quot;&gt;FrankenPHP quickstart&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://medium.com/beyn-technology/hola-frankenphp-laravel-octane-servers-comparison-pushing-the-boundaries-of-performance-d3e7ad8e652c&quot;&gt;Hola FrankenPHP! Laravel Octane Servers Comparison: Pushing the Boundaries of Performance&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Benchmarking&lt;/h2&gt;
&lt;p&gt;Using &lt;a href=&quot;https://github.com/stasadev/ddev-frankenphp-benchmark&quot;&gt;ddev-frankenphp-benchmark&lt;/a&gt;, I compared three setups:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;nginx-fpm&lt;/code&gt;: DDEV&amp;#39;s &lt;code&gt;nginx-fpm&lt;/code&gt; web server with &lt;code&gt;php-fpm&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generic-web&lt;/code&gt;: DDEV&amp;#39;s &lt;code&gt;generic&lt;/code&gt; web server with FrankenPHP inside the &lt;code&gt;web&lt;/code&gt; container (static binary)&lt;/li&gt;
&lt;li&gt;&lt;code&gt;generic-addon&lt;/code&gt;: DDEV&amp;#39;s &lt;code&gt;generic&lt;/code&gt; web server with FrankenPHP inside the &lt;code&gt;frankenphp&lt;/code&gt; container (with &lt;code&gt;pdo_mysql&lt;/code&gt; extension)&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Summary:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;All configurations delivered comparable and adequate performance.&lt;/li&gt;
&lt;li&gt;FrankenPHP is a win where there is an upstream hosting environment using FrankenPHP.&lt;/li&gt;
&lt;li&gt;Benchmarks used default DDEV settings, not production-optimized configurations.&lt;/li&gt;
&lt;li&gt;Laravel Octane (FrankenPHP worker mode) was not used and could yield better results.&lt;/li&gt;
&lt;li&gt;CPU and memory usage were not measured.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Benchmarking Results&lt;/h3&gt;
&lt;p&gt;&lt;b&gt;Software:&lt;/b&gt;&lt;br&gt;
DDEV: v1.24.6&lt;br&gt;
Mutagen: disabled&lt;br&gt;
PHP: v8.4&lt;br&gt;
Laravel: v12.19.3&lt;br&gt;
FrankenPHP: v1.7.0&lt;br&gt;
Docker Engine: v28.3.0&lt;br&gt;
Operating System: Manjaro Linux AMD64&lt;br&gt;
Kernel Version: 6.12.35-1-MANJARO&lt;/p&gt;
&lt;p&gt;&lt;b&gt;Hardware:&lt;/b&gt;&lt;br&gt;
Intel i7 8750H (6 Core/12 Thread, 2.2 Ghz, Turbo 4.1 Ghz)&lt;br&gt;
32 GB DDR4 2667 Mhz&lt;br&gt;
Samsung 870 Evo SSD (530w/560r MB/s)&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-requests.png&quot; alt=&quot;Requests&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-request-per-second.png&quot; alt=&quot;Request Per Second&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-transfer-per-second.png&quot; alt=&quot;Transfer Per Second&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-latency-distribution-health-check.png&quot; alt=&quot;Latency Distribution (Health Check Endpoint)&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-latency-distribution-static.png&quot; alt=&quot;Latency Distribution (Static Endpoint)&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/07/frankenphp-latency-distribution-http-request.png&quot; alt=&quot;Latency Distribution (HTTP Request Endpoint)&quot;&gt;&lt;/p&gt;
&lt;p&gt;If you find DDEV (and its add-ons like FrankenPHP) useful, consider &lt;a href=&quot;https://ddev.com/support-ddev/#sponsor-development&quot;&gt;supporting its development&lt;/a&gt;. Thank you!&lt;/p&gt;
</content:encoded><category>Add-ons</category><category>Guides</category></item><item><title>How to Downgrade Terminus in DDEV&apos;s Web Container and Customize Other Bundled Tools</title><link>https://ddev.com/blog/ddev-bundled-tools-using-custom-versions</link><guid isPermaLink="true">https://ddev.com/blog/ddev-bundled-tools-using-custom-versions</guid><description>How to upgrade/downgrade a utility provided by DDEV in `ddev-webserver`, or add a custom utility for a given project</description><pubDate>Mon, 30 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/06/ddev-tool-install.png&quot; alt=&quot;Installing custom software packages in the containerized environment&quot;&gt;&lt;p&gt;&lt;em&gt;This guest post is by DDEV community member and &lt;a href=&quot;https://drupal.org&quot;&gt;Drupal&lt;/a&gt;
contributor &lt;a href=&quot;https://ddev.com/blog/author/bill-seremetis/&quot;&gt;Bill Seremetis&lt;/a&gt; and sponsored by
&lt;a href=&quot;https://www.annertech.com&quot;&gt;Annertech&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;DDEV comes bundled with a predefined set of tools, Pantheon&amp;#39;s &lt;code&gt;terminus&lt;/code&gt; being one of them.
The latest releases of &lt;code&gt;terminus&lt;/code&gt; are not compatible with older PHP versions like PHP 8.1, though,
so we needed to downgrade it inside DDEV&amp;#39;s &lt;code&gt;ddev-webserver&lt;/code&gt; Docker image.&lt;/p&gt;
&lt;p&gt;This guide covers how to downgrade &lt;code&gt;terminus&lt;/code&gt; and will also explain how to use the same technique to install
additional custom tools.&lt;/p&gt;
&lt;p&gt;Please note there are many ways to install packages in a container. We will
cover &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customizing-images/#adding-extra-dockerfiles-for-webimage-and-dbimage&quot;&gt;extra Dockerfiles&lt;/a&gt;
here, but also &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customizing-images/#adding-extra-debian-packages-with-webimage_extra_packages-and-dbimage_extra_packages&quot;&gt;check &lt;code&gt;webimage_extra_packages&lt;/code&gt; and &lt;code&gt;dbimage_extra_packages&lt;/code&gt; in your
&lt;code&gt;config.yaml&lt;/code&gt;for more details&lt;/a&gt;).&lt;/p&gt;
&lt;h2&gt;Case study: Manually Downgrading Terminus&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/pantheon-systems/terminus/releases&quot;&gt;Terminus&lt;/a&gt; dropped
support for PHP 8.1 in recent versions, but some of our
projects still use PHP 8.1. We had to downgrade the DDEV-bundled version of &lt;code&gt;terminus&lt;/code&gt; for those
projects by using a custom Dockerfile:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;# .ddev/web-build/Dockerfile.terminus
# Terminus 4 drops support for PHP 8.1 which we still need
ARG TERMINUS_VERSION=&amp;quot;3.6.2&amp;quot;
RUN curl -L --fail -o /usr/local/bin/terminus https://github.com/pantheon-systems/terminus/releases/download/${TERMINUS_VERSION}/terminus.phar &amp;amp;&amp;amp; chmod +x /usr/local/bin/terminus
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;code&gt;terminus&lt;/code&gt; is just an example here, it could be any command you wish,
&lt;a href=&quot;https://github.com/pantheon-systems/terminus/releases/tag/4.0.0&quot;&gt;either because you are running an older PHP version&lt;/a&gt;
or the bundled version &lt;a href=&quot;https://github.com/platformsh/cli/discussions/166&quot;&gt;has a bug that ruins things for you&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Installing custom tools&lt;/h2&gt;
&lt;p&gt;You can obviously use the same techniques to install a variety of custom tools:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-dockerfile&quot;&gt;# .ddev/web-build/Dockerfile.fzf
# fooscript relies on fzf
# fooscript lists all your Pantheon projects using a fuzzy finder list
ARG FZF_VERSION=&amp;quot;0.62.0&amp;quot;
RUN curl -s -L https://github.com/junegunn/fzf/releases/download/v${FZF_VERSION}/fzf-${FZF_VERSION}-linux_amd64.tar.gz | tar xvz -C /usr/local/bin/ &amp;amp;&amp;amp; chmod +x /usr/local/bin/fzf
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Resources&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/providers/pantheon/&quot;&gt;DDEV Pantheon integration documentation&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customizing-images/#adding-extra-dockerfiles-for-webimage-and-dbimage&quot;&gt;Adding extra Dockerfiles for &lt;code&gt;webimage&lt;/code&gt; and &lt;code&gt;dbimage&lt;/code&gt;&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customizing-images/#adding-extra-debian-packages-with-webimage_extra_packages-and-dbimage_extra_packages&quot;&gt;Adding extra Debian packages in DDEV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/customizing-ddev-local-images-with-a-custom-dockerfile/&quot;&gt;Customizing DDEV images with a custom Dockerfile&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Contribute to DDEV&lt;/h2&gt;
&lt;p&gt;If you like DDEV then you are welcome to contribute! You can join the &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord channel&lt;/a&gt;,
create a new &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/additional-services/&quot;&gt;DDEV Add-on&lt;/a&gt;,
or blog about how you use DDEV in your daily workflow.
We’re always happy to hear from you on any of our &lt;a href=&quot;https://docs.ddev.com/en/stable/users/support/&quot;&gt;support channels&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Guides</category><category>DevOps</category></item><item><title>DDEV June 2025 Newsletter</title><link>https://ddev.com/blog/ddev-june-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-june-2025-newsletter</guid><description>Highlights: Vite and DDEV with WordPress, TYPO3 Community Budget Idea, DDEV Architecture, Running Old PHP versions.</description><pubDate>Wed, 11 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/06/impending-storm-new-mexico.jpg&quot; alt=&quot;Impending storm in New Mexico, Randy Fay&apos;s bikepacking trip&quot;&gt;&lt;p&gt;&lt;strong&gt;Welcome to the June 2025 DDEV Newsletter&lt;/strong&gt;&lt;br&gt;This month: TYPO3 Community Budget Proposal (&lt;strong&gt;VOTE NOW&lt;/strong&gt;), Randy is back from bikepacking, Running Old PHP versions, Vite and DDEV with WordPress, DDEV Architecture, and more.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;TYPO3: Your Vote Requested Before June 16!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Q3 TYPO3 Budget Proposal: Improved GitHub Codespaces and Dev Containers support&lt;/strong&gt; - We’ve proposed significant enhancements to make DDEV shine in GitHub Codespaces and Dev Containers. This will help TYPO3 and all DDEV users. If you&amp;#39;re a TYPO3 member, please &lt;a href=&quot;https://typo3.org/article/budget-2025-ideas-for-quarter-3-2025-published-vote-now&quot;&gt;cast your vote to help the DDEV proposal&lt;/a&gt; using the email you received from the TYPO3 Foundation &lt;strong&gt;before June 16&lt;/strong&gt;. → &lt;a href=&quot;https://github.com/ddev/ddev/issues/7294&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What’s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Randy is back from bikepacking!&lt;/strong&gt;&lt;br&gt;We covered &lt;a href=&quot;https://facebook.com/randyfay&quot;&gt;lots of territory out in the state of New Mexico&lt;/a&gt; and had a great time. I&amp;#39;ll never forget though, laying in my tent when we had some coverage and watching the DDEV community continue on supporting each other so very successfully. And every support answer from Stas was exactly what I would have said. I&amp;#39;m proud and amazed by this wonderful community.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Using DDEV to Spin Up A Legacy PHP Application&lt;/strong&gt;&lt;br&gt;A guest blog by TYPO3 contributor Garvin Hickling on how to use DDEV to run a (very) old PHP 5.3/MySQL 5.5 application → &lt;a href=&quot;https://ddev.com/blog/legacy-projects-with-unsupported-php-and-mysql-using-ddev&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Securing DDEV’s Future: Our Commitment to Financial &amp;amp; Community Sustainability&lt;/strong&gt; &lt;a href=&quot;https://ddev.com/blog/sustainability-for-ddev/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;106 GitHub Sponsors&lt;/strong&gt;&lt;br&gt;We now have 106 GitHub Sponsors! Breaking our aggregation script was a delightful milestone—thank you for believing in DDEV.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;May 2025 Advisory Group Meeting Notes&lt;/strong&gt; → &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7223&quot;&gt;Read more↗&lt;/a&gt;. Join us July 2; ask for a calendar invitation in the &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;DDEV Discord&lt;/a&gt; or the &lt;a href=&quot;https://ddev.com/contact&quot;&gt;contact page&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Integrating Vite and DDEV into WordPress&lt;/strong&gt; → &lt;a href=&quot;https://www.viget.com/articles/integrating-vite-and-ddev-into-wordpress/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AI-generated DDEV Architecture by DeepWiki&lt;/strong&gt;, pretty impressive! → &lt;a href=&quot;https://deepwiki.com/ddev/ddev&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Setup an existing WordPress multisite locally with DDEV (with Bonus Pantheon support!)&lt;/strong&gt; from Kalamuna → &lt;a href=&quot;https://www.kalamuna.com/blog/setup-existing-wordpress-multisite-locally-ddev-bonus-pantheon-support&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Governance &amp;amp; Roadmap&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apache Foundation-inspired Project Management Committee Exploration&lt;/strong&gt;&lt;br&gt;We’re exploring a governance model inspired by the Apache Foundation and Backdrop CMS to better support long-term sustainability and shared leadership. Take a look and join the conversation about future DDEV governance → &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7293&quot;&gt;Details↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Status&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monthly average income&lt;/strong&gt; up from $7,639 to $7,809 (65% of $12,000 goal, up a percent since early May!). Every contribution helps sustain our work—thank you! → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Stay in the loop—follow us and join the conversation&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>Securing DDEV’s Future: Our Commitment to Financial &amp; Community Sustainability</title><link>https://ddev.com/blog/sustainability-for-ddev</link><guid isPermaLink="true">https://ddev.com/blog/sustainability-for-ddev</guid><description>How we’re building governance, financial, and community structures to ensure DDEV thrives beyond any single maintainer.</description><pubDate>Tue, 10 Jun 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/06/ddev-sustainability.jpg&quot; alt=&quot;Pillars of DDEV Sustainability, Governance, Community, Finance, Transparency&quot;&gt;&lt;p&gt;Over the last nine years DDEV has grown from a tiny side project to a development environment and ecosystem that serves &lt;a href=&quot;stats-on-ddev-usage-nov-2024.md&quot;&gt;about 17,000 weekly developer-users&lt;/a&gt; and is critical to so many developers&amp;#39; workflows.&lt;/p&gt;
&lt;p&gt;We love this amazing open-source world that we&amp;#39;re a part of. It&amp;#39;s astonishing when communities can &lt;a href=&quot;open-source-for-the-win.md&quot;&gt;work together&lt;/a&gt; and of course the fact that we all stand on the shoulders of such giants like Linux, Debian, and hundreds of other projects.&lt;/p&gt;
&lt;h2&gt;What Happens When a Community Loses its Maintainer?&lt;/h2&gt;
&lt;p&gt;What happens when a great project loses a key maintainer? A couple of years ago Bram Moolenaar, the maintainer of the Vim editor, &lt;a href=&quot;https://thenewstack.io/bram-moolenaar-author-of-the-open-source-vim-code-editor-has-died/&quot;&gt;passed away unexpectedly&lt;/a&gt;. Every project faces unexpected transitions, whether a maintainer steps back, changes focus, or, as happened with Bram, passes away. The &lt;a href=&quot;https://thenewstack.io/vim-after-bram-a-core-maintainer-on-how-theyve-kept-it-going/&quot;&gt;Vim community did step up successfully&lt;/a&gt;, but that&amp;#39;s not the only outcome possible for so many small projects.&lt;/p&gt;
&lt;p&gt;What can we learn from Vim&amp;#39;s experience, and how is DDEV positioned in comparison?&lt;/p&gt;
&lt;p&gt;One thing that the Vim community discovered was that Bram&amp;#39;s work was truly a full-time job, even with their incredible and active community.&lt;/p&gt;
&lt;p&gt;Many people may think that DDEV is just a tiny project that could carry on without its maintainers, but that might not be true. Right now support, maintenance, and improvements for DDEV use the full-time and consistent effort of two full-time maintainers. That&amp;#39;s why you get the level of support and responsiveness you do. Both maintainers are currently paid, but perhaps not at a salary level that you would accept.&lt;/p&gt;
&lt;h2&gt;The Good Stuff&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Distributed controls&lt;/strong&gt;: DDEV has two main leaders, Randy Fay and Stas Zhuk, who both have full control of the GitHub &lt;code&gt;ddev&lt;/code&gt; organization, and a couple of other people also have full administrative privileges. This is good; we&amp;#39;re not dependent on one person. Both of us are fully trained and capable on all of the technologies and infrastructures used in DDEV&amp;#39;s testing and release environments. (We would like to have more full-trained maintainers, unpaid or paid. If you love DDEV, come and join us and we&amp;#39;ll train you.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Financial Organization&lt;/strong&gt;: DDEV has its own fiscal organization, the &lt;a href=&quot;https://ddev.com/foundation&quot;&gt;DDEV Foundation&lt;/a&gt;, which is a US 501(c)(3) tax-exempt entity. The organization has its own bank account, and Randy and long-term collaborator &lt;a href=&quot;https://www.drupaleasy.com/users/ultimike&quot;&gt;Mike Anello&lt;/a&gt; are signers on the account, so it&amp;#39;s not dependent on a single person.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Financial Reporting&lt;/strong&gt;: DDEV does track and provide &lt;a href=&quot;https://github.com/orgs/ddev/discussions/categories/ddev-advisory-group&quot;&gt;financial reports&lt;/a&gt; at each Advisory Group meeting.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Control of Communications&lt;/strong&gt;: Both maintainers have full control of our social media accounts and Discord.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Passwords and Other Secrets&lt;/strong&gt;: We use a group 1Password setup to manage all of our secrets, so they&amp;#39;re not known to just one maintainer.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Accounts management&lt;/strong&gt;: Thanks to great advice from Advisory Group member &lt;a href=&quot;https://www.drupal.org/u/deviantintegral&quot;&gt;Andrew Berry&lt;/a&gt; and thanks to having a free Google Workspace account (for nonprofits) we are able to use Google Groups for key email addresses, and current maintainers can be added to those groups. That way changes to maintainership don&amp;#39;t result in loss of access to key external accounts.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Vim had serious challenges in all these areas, as there was only one &amp;quot;owner&amp;quot; of the GitHub project, and financial setups were very much ad-hoc. Bram was truly the &amp;quot;owner&amp;quot; of the whole project.&lt;/p&gt;
&lt;h2&gt;Areas to Improve&lt;/h2&gt;
&lt;p&gt;We work hard to identify areas that are dependent on a single maintainer, and to resolve those. But it&amp;#39;s a perpetual process!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Governance&lt;/strong&gt;: From the beginning of DDEV, Randy has been the leader, acting as what&amp;#39;s commonly called a &amp;quot;Benevolent Dictator for Life&amp;quot;, or &amp;quot;BDFL&amp;quot;. While that&amp;#39;s a common model in open source, it&amp;#39;s not a great model for overall sustainability. The BDFL model means that leadership can be concentrated in one person, preventing the development of community decision-making capabilities. One of our key goals for 2025 is to at least &lt;em&gt;start&lt;/em&gt; moving past that model.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Regulatory&lt;/strong&gt;: Randy has dealt with Colorado and US regulatory requirements, including getting the 501(c)(3) tax-exempt designation, changing the name of the organization to &amp;quot;DDEV Foundation&amp;quot;, filing annual reports.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Finance and Reporting&lt;/strong&gt;: Randy does the bimonthly financial reporting, tracks invoices, corresponds with donors, sends thank-you notes to donors, pays maintainers.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Promotion/Marketing&lt;/strong&gt;: Randy seems to keep these roles year-in and year-out despite attempts to spread out the work&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Test Runner Maintenance&lt;/strong&gt;: Although Stas knows everything and has full access to our extensive test runner infrastructure, many of the runners are in Randy&amp;#39;s house, and when something has to be done physically to them, it becomes Randy&amp;#39;s problem.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What Comes Next?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improved Marketing/Monetization&lt;/strong&gt;: As discussed above, open-source projects generally have a hard time asking for money because people take them for granted. We do hope to move toward adding premium features and premium support options that will encourage organizations and individuals to step up to the plate and do their fair share of support.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Financial&lt;/strong&gt;: More than one person should know how to do (and have power to do) all the financial things, like paying contributors and other bills.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Governance&lt;/strong&gt;: Figure out how to move from BDFL to something that lasts beyond one person. A &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7293&quot;&gt;proposal&lt;/a&gt; is in progress.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Write up regulatory and financial tasks&lt;/strong&gt;: We have a good set of documents and a private repository that explain maintainer tasks. This all needs to be done for governance, regulatory, financial, and marketing tasks.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;You&lt;/strong&gt;: DDEV is a collaborative open-source project. Are you interested in a role?&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Current Financial Status&lt;/h2&gt;
&lt;p&gt;As of June, 2025, DDEV&amp;#39;s monthly support is at the $7800 USD level. Our goal is $12,000. You can see this at any time on the top of &lt;a href=&quot;https://ddev.com/&quot;&gt;ddev.com&lt;/a&gt;, and a full accounting updated daily is in the &lt;a href=&quot;https://github.com/ddev/sponsorship-data/&quot;&gt;sponsorship-data&lt;/a&gt; repository. Our current bank balance is about $19,000 USD.&lt;/p&gt;
&lt;h2&gt;Share Your Thoughts!&lt;/h2&gt;
&lt;p&gt;Do you have additional ideas, suggestions, or insight into how DDEV&amp;#39;s future could be more sustainable? We would sure love to &lt;a href=&quot;https://ddev.com/contact&quot;&gt;hear from you&lt;/a&gt;! Or get active and join our &lt;a href=&quot;https://github.com/orgs/ddev/discussions/categories/ddev-advisory-group&quot;&gt;DDEV Advisory Group&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Do you have questions or want to talk (about sponsoring or anything else)? &lt;a href=&quot;https://ddev.com/contact/&quot;&gt;Contact us!&lt;/a&gt; or join us in &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;em&gt;Have you signed up for the monthly &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt;? We&amp;#39;d love to have you.&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>Using DDEV to spin up a legacy PHP application</title><link>https://ddev.com/blog/legacy-projects-with-unsupported-php-and-mysql-using-ddev</link><guid isPermaLink="true">https://ddev.com/blog/legacy-projects-with-unsupported-php-and-mysql-using-ddev</guid><description>How to use DDEV with outdated PHP and MySQL versions</description><pubDate>Fri, 30 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/05/museums-victoria-Di7WfLcrJ_I-unsplash.jpg&quot; alt=&quot;Legacy computer museum&quot;&gt;&lt;p&gt;&lt;em&gt;This guest post is by DDEV community member and &lt;a href=&quot;https://typo3.org&quot;&gt;TYPO3&lt;/a&gt; contributor &lt;a href=&quot;https://ddev.com/blog/author/garvin-hicking/&quot;&gt;Garvin Hicking&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;p&gt;In my daily work, I develop &lt;a href=&quot;https://typo3.org&quot;&gt;TYPO3&lt;/a&gt;-based projects and also contribute to the TYPO3 CMS OpenSource project itself.&lt;/p&gt;
&lt;p&gt;Usually this means working with actively supported and up-to-date PHP versions as well as database systems like MySQL/PostgreSQL/MariaDB.&lt;/p&gt;
&lt;p&gt;Just recently I had to migrate a very outdated project: TYPO3 4.5, which utilized MySQL 5.5 and PHP 5.3. When that project was initially developed, it was done with XAMPP and later Vagrant-based VMs. This has been long superseded with using Docker and specifically DDEV for ease-of-use.&lt;/p&gt;
&lt;p&gt;So naturally I wanted to be able to use DDEV for the legacy project to get it working just as it is running on the (outdated) hosting provider&amp;#39;s shared web servers.&lt;/p&gt;
&lt;p&gt;I quickly faced three major issues:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;No PHP 5.3 out-of-the-box support from DDEV; it starts with 5.6 as of the time of this writing&lt;/li&gt;
&lt;li&gt;No MySQL 5.5 ARM64 support either; it starts with 5.7&lt;/li&gt;
&lt;li&gt;Additionally, I use an Apple MacBook Pro M1 with ARM-chipset, which has no &amp;quot;official&amp;quot; MySQL 5.5 support&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Thanks to the outstanding DDEV support on Discord, I was quickly able to find a way with minimal effort, just by creating very small custom, additional docker-compose YAML files.&lt;/p&gt;
&lt;p&gt;One advantage (of many) of using DDEV instead the underlying Docker Compose is that so many things are pre-configured and &amp;quot;just work&amp;quot;. So I really did not want to migrate everything to Docker Compose on my own, do my custom routing, PHP-FPM integration and whatnot.&lt;/p&gt;
&lt;p&gt;Just being able to &amp;quot;bait and switch&amp;quot; the PHP and DB container with a different base Docker image was all that was needed for me:&lt;/p&gt;
&lt;h2&gt;Step 1: Base config&lt;/h2&gt;
&lt;p&gt;I created the base &lt;code&gt;~/legacyphp/.ddev/config.yaml&lt;/code&gt; file manually inside my &lt;code&gt;~/legacyphp&lt;/code&gt; project directory, setting &lt;code&gt;legacyphp&lt;/code&gt; as the project name.&lt;/p&gt;
&lt;p&gt;Note that I configured PHP and MySQL versions that are supported by DDEV for this first:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;name: legacyphp
type: php
docroot: htdocs
php_version: &amp;quot;8.3&amp;quot;
webserver_type: apache-fpm
database:
  type: mysql
  version: &amp;quot;8.0&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Step 2: Rewire DB&lt;/h2&gt;
&lt;p&gt;Next I created the very small file &lt;code&gt;~/legacyphp/.ddev/docker-compose.db.yaml&lt;/code&gt; in the same directory next to &lt;code&gt;config.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  db:
    platform: linux/amd64
    build:
      args:
        BASE_IMAGE: ddev/ddev-dbserver-mysql-5.5:v1.24.6
    entrypoint:
      - sh
      - -c
      - |
        cp /docker-entrypoint.sh ~/docker-entrypoint.sh
        sed -i &amp;#39;157s|.*|if false; then|&amp;#39; ~/docker-entrypoint.sh
        sed -i &amp;#39;175s|.*|echo mysql_8.0 &amp;gt;/var/lib/mysql/db_mariadb_version.txt|&amp;#39; ~/docker-entrypoint.sh
        exec ~/docker-entrypoint.sh
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Three things are noteworthy:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Setting &lt;code&gt;linux/amd64&lt;/code&gt; as the platform will require Rosetta to be available on the macOS ARM64 platform&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;BASE_IMAGE&lt;/code&gt; is set to a DDEV &lt;code&gt;db&lt;/code&gt; container of legacy Docker images that are still provided.&lt;/li&gt;
&lt;li&gt;Changing the &lt;code&gt;entrypoint&lt;/code&gt; is a workaround to prevent DDEV complaining about a mismatching MySQL version after restarting the project. The small script &amp;quot;tricks&amp;quot; the DDEV inspection into believing, the version matches the one configured in &lt;code&gt;.ddev/config.yaml&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Step 3: Rewire PHP&lt;/h2&gt;
&lt;p&gt;Using a different PHP version is just a few lines more work, because we are not replacing the whole &lt;code&gt;web&lt;/code&gt; container of DDEV. Instead, we add an additional PHP container which is executed from the web container via port 9000.&lt;/p&gt;
&lt;p&gt;This is done via the file &lt;code&gt;~/legacyphp/.ddev/docker-compose.php.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  php:
    container_name: ddev-${DDEV_SITENAME}-php
    image: devilbox/php-fpm:5.3-work
    restart: &amp;quot;no&amp;quot;
    expose:
      - 9000
    labels:
      com.ddev.site-name: ${DDEV_SITENAME}
      com.ddev.approot: ${DDEV_APPROOT}
    working_dir: /var/www/html
    volumes:
      - &amp;quot;../:/var/www/html&amp;quot;
      - &amp;quot;.:/mnt/ddev_config:ro&amp;quot;
      - ddev-global-cache:/mnt/ddev-global-cache
      - &amp;quot;./php:/etc/php-custom.d&amp;quot;
    environment:
      - NEW_UID=${DDEV_UID}
      - NEW_GID=${DDEV_GID}
      - DDEV_PHP_VERSION
      - IS_DDEV_PROJECT=true
  web:
    depends_on:
      - php
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note here that we use &lt;code&gt;devilbox/php-fpm&lt;/code&gt; with our needed version, and a bind-mount takes care the PHP container can access our main project root directory.&lt;/p&gt;
&lt;p&gt;A special mount of &lt;code&gt;~/legacyphp/.ddev/php/&lt;/code&gt; is included so that we can control the &lt;code&gt;php.ini&lt;/code&gt; configuration, if needed. For example you could disable the OPCache+APC in case you&amp;#39;re doing some legacy benchmarking that should not be falsified via caching, I created a very small file &lt;code&gt;~/legacyphp/.ddev/php/php.ini&lt;/code&gt; file with the contents:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-ini&quot;&gt;# This is an example.
# apc.enabled=Off
# opcache.enable=Off
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Step 4: Utilize the PHP container with an Apache proxy&lt;/h2&gt;
&lt;p&gt;To execute PHP with our external PHP Docker image, I created the following file in &lt;code&gt;~/legacyphp/.ddev/apache/apache-site.conf&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-apache&quot;&gt;&amp;lt;VirtualHost *:80&amp;gt;
    RewriteEngine On
    RewriteCond %{HTTP:X-Forwarded-Proto} =https
    RewriteCond %{DOCUMENT_ROOT}%{REQUEST_FILENAME} -d
    RewriteRule ^(.+[^/])$ https://%{HTTP_HOST}$1/ [redirect,last]
    SetEnvIf X-Forwarded-Proto &amp;quot;https&amp;quot; HTTPS=on

    Alias &amp;quot;/phpstatus&amp;quot; &amp;quot;/var/www/phpstatus.php&amp;quot;
    DocumentRoot /var/www/html/htdocs
    &amp;lt;Directory &amp;quot;/var/www/html/htdocs&amp;quot;&amp;gt;
      AllowOverride All
      Allow from All
    &amp;lt;/Directory&amp;gt;

    CustomLog /var/log/apache2/access.log combined
    ProxyFCGIBackendType GENERIC
    ProxyPassMatch ^/(.*\.php(/.*)?)$ fcgi://php:9000/var/www/html/htdocs/$1
    DirectoryIndex /index.php index.php
&amp;lt;/VirtualHost&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Note that if your document root is not &lt;code&gt;htdocs&lt;/code&gt; you would need to adapt this name to your liking (like &lt;code&gt;public&lt;/code&gt; or &lt;code&gt;wwwroot&lt;/code&gt; or anything) in all occurrences of this file.&lt;/p&gt;
&lt;h2&gt;Step 5: Lift-Off&lt;/h2&gt;
&lt;p&gt;Now you can execute &lt;code&gt;ddev start&lt;/code&gt; and then &lt;code&gt;ddev launch&lt;/code&gt; to see your project up and running.&lt;/p&gt;
&lt;p&gt;You could create a simple &lt;code&gt;~/legacyphp/htdocs/index.php&lt;/code&gt; file with &lt;code&gt;&amp;lt;?php phpinfo(); ?&amp;gt;&lt;/code&gt; to verify the version.&lt;/p&gt;
&lt;p&gt;Using &lt;code&gt;ddev mysql&lt;/code&gt; will connect you to the MySQL 5.5 instance:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;~/legacyphp&amp;gt; ddev mysql
Welcome to the MySQL monitor.  Commands end with ; or \g.
Your MySQL connection id is 5
Server version: 5.5.62-log MySQL Community Server (GPL)
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Caveats&lt;/h2&gt;
&lt;p&gt;You can enter the PHP Docker container with a command like &lt;code&gt;docker exec -it -u devilbox ddev-legacyphp-php bash&lt;/code&gt; if you need/want to execute PHP commands on shell-level, because the regular &lt;code&gt;web&lt;/code&gt; container will run with the more recent PHP 8.3 version.
So if you need to perform composer CLI calls, be sure to do this within the matching PHP container.&lt;/p&gt;
&lt;p&gt;Another thing to pay attention to is that if you for example want to utilize Mailpit with TYPO3&amp;#39;s mail configuration, you can not use &lt;code&gt;localhost:1025&lt;/code&gt; as an SMTP server. &lt;code&gt;localhost&lt;/code&gt; in PHP&amp;#39;s case will be that devilbox PHP container, and not the DDEV web container. Instead you need to setup &lt;code&gt;web:1025&lt;/code&gt; as the hostname.&lt;/p&gt;
&lt;p&gt;The devilbox PHP config has pretty much all available PHP extensions set up to use, but if you need specific imagemagick or other tools, you will have to either ensure these are executed on the &lt;code&gt;web&lt;/code&gt; container, or make them available with customization of a different base Docker container that you can build yourself.&lt;/p&gt;
&lt;p&gt;If you want to use Xdebug with this setup, you&amp;#39;ll need to do more internal port forwarding in the docker-compose setup, which is beyond the scope of this article.&lt;/p&gt;
&lt;h2&gt;Closing words&lt;/h2&gt;
&lt;p&gt;Having shown you what is possible, I hope you will never need to use it, and you will always use well-supported and current software. :-)&lt;/p&gt;
&lt;p&gt;Thanks so much to the DDEV project for getting me across the finish line with just very little effort!&lt;/p&gt;
</content:encoded><category>Guides</category></item><item><title>DDEV May 2025 Newsletter</title><link>https://ddev.com/blog/ddev-may-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-may-2025-newsletter</guid><description>Highlights: special-networking guides, add-on maintenance tips, community tool highlights, and Randy’s bikepacking plans.</description><pubDate>Tue, 06 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/05/rattlesnake-arches.jpg&quot; alt=&quot;Rattlesnake Arches, western Colorado&quot;&gt;&lt;p&gt;&lt;strong&gt;Welcome to the May 2025 DDEV Newsletter&lt;/strong&gt;&lt;br&gt;This month: special-networking guides, add-on maintenance tips, community tool highlights, and Randy’s bikepacking plans.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;What’s New&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Special Network Configurations&lt;/strong&gt;&lt;br&gt;Handling packet-inspection VPNs (Zscaler, GlobalProtect) → &lt;a href=&quot;https://docs.ddev.com/en/latest/users/usage/networking/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Add-On Maintenance Guide&lt;/strong&gt; by @stasadev → &lt;a href=&quot;https://ddev.com/blog/ddev-add-on-maintenance-guide&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;AMD64 on Apple Silicon&lt;/strong&gt; → &lt;a href=&quot;https://ddev.com/blog/amd64-with-rosetta-on-macos/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Community Tutorials&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drupal Modern Tooling&lt;/strong&gt; by Andrey Yurtaev → &lt;a href=&quot;https://iamdroid.net/blog/dev-tools&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;VS Code in DDEV Web Container&lt;/strong&gt; by Michael Anello → &lt;a href=&quot;https://www.drupaleasy.com/blogs/ultimike/2025/04/drupal-development-using-visual-studio-code-connected-directly-ddevs-web&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;TYPO3 in 8 Steps&lt;/strong&gt; → &lt;a href=&quot;https://t3planet.de/blog/install-typo3-with-ddev/&quot;&gt;Read more↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Events &amp;amp; Talks&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drupal4Gov&lt;/strong&gt;: “Divide and Conquer: A Systematic Approach to Troubleshooting” → &lt;a href=&quot;https://www.youtube.com/watch?v=zliDmAUBwrQ&quot;&gt;Watch on YouTube↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Backdrop Live&lt;/strong&gt;: migrating from Lando to DDEV (not recorded)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Governance &amp;amp; Roadmap&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Apache-style PMC Exploration&lt;/strong&gt;&lt;br&gt;We&amp;#39;ll be exploring an Apache-style &amp;quot;Project Management Committee&amp;quot; model for DDEV governance → &lt;a href=&quot;https://www.apache.org/foundation/governance/pmcs&quot;&gt;Details↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Your Input Requested!&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Q3 TYPO3 Budget Ideas&lt;/strong&gt; - We&amp;#39;d like to propose something useful to all and also attractive to the TYPO3 Community for the &lt;a href=&quot;https://typo3.org/article/call-for-community-budget-ideas-q3-2025&quot;&gt;TYPO3 Q3 Call for Community Budget Ideas↗&lt;/a&gt;. Please let us know your suggestions!&lt;/li&gt;
&lt;/ul&gt;
&lt;hr&gt;
&lt;blockquote&gt;
&lt;p&gt;&lt;strong&gt;Heads-Up:&lt;/strong&gt; Randy will be out bikepacking &lt;strong&gt;May 23–June 23&lt;/strong&gt;, so updates may be limited; Stas will keep things moving!&lt;/p&gt;
&lt;/blockquote&gt;
&lt;hr&gt;
&lt;h2&gt;Sponsorship Status&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Monthly average income&lt;/strong&gt; up from $7,639 to $7,659 (64% of $12,000 goal) → &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Become a sponsor↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Stay Connected&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;Blog↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky↗&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord↗&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>DDEV Add-on Maintenance Guide</title><link>https://ddev.com/blog/ddev-add-on-maintenance-guide</link><guid isPermaLink="true">https://ddev.com/blog/ddev-add-on-maintenance-guide</guid><description>Maintaining an add-on involves regularly updating it to stay compatible with new features in both the upstream ddev-addon-template and DDEV itself.</description><pubDate>Thu, 01 May 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/ddev-add-on-registry.png&quot; alt=&quot;DDEV Add-on Registry website&quot;&gt;&lt;h2&gt;Introduction&lt;/h2&gt;
&lt;p&gt;Maintaining a DDEV add-on is more than a &lt;a href=&quot;advanced-add-on-contributor-training.md&quot;&gt;one-time task&lt;/a&gt;. As DDEV evolves, so should your add-ons. This guide will help you stay in sync with recent changes and keep your add-ons up-to-date, reliable, and aligned with current standards.&lt;/p&gt;
&lt;p&gt;As part of preparing this guide, I also updated all official DDEV add-ons to reflect the latest recommendations and improvements.&lt;/p&gt;
&lt;h2&gt;Recommendations for Add-on Maintainers&lt;/h2&gt;
&lt;p&gt;Run the update checker script periodically in your add-on to verify it is up to date:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;curl -fsSL https://ddev.com/s/addon-update-checker.sh | bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here are some high-level practices to follow:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Take inspiration from the &lt;a href=&quot;https://addons.ddev.com/&quot;&gt;official add-ons&lt;/a&gt;, see how they&amp;#39;re structured and follow similar practices&lt;/li&gt;
&lt;li&gt;Keep an eye on updates in &lt;a href=&quot;https://github.com/ddev/ddev-addon-template&quot;&gt;ddev-addon-template&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Track changes in &lt;a href=&quot;https://github.com/ddev/ddev/releases&quot;&gt;DDEV releases&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Configure your add-on &lt;a href=&quot;#repository-configuration-bestpractices&quot;&gt;repository settings&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Add the &lt;code&gt;ddev-get&lt;/code&gt; &lt;a href=&quot;https://docs.github.com/en/repositories/managing-your-repositorys-settings-and-features/customizing-your-repository/classifying-your-repository-with-topics&quot;&gt;topic&lt;/a&gt; to your GitHub repository if it should be discoverable by the wider community. (If your add-on is currently just an experiment or a fork, wait until it matures to add the topic.)&lt;/li&gt;
&lt;li&gt;Write a clear &lt;a href=&quot;https://github.com/orgs/community/discussions/60507&quot;&gt;description&lt;/a&gt; and include relevant keywords to improve discoverability&lt;/li&gt;
&lt;li&gt;Use &lt;code&gt;#!/usr/bin/env bash&lt;/code&gt; instead of &lt;code&gt;#!/bin/bash&lt;/code&gt; at the top of your command scripts, it&amp;#39;s more portable and works better across different environments.&lt;/li&gt;
&lt;li&gt;Ensure your add-on cleans up after itself: both &lt;code&gt;ddev add-on get&lt;/code&gt; and &lt;code&gt;ddev add-on remove&lt;/code&gt; should be idempotent. All files added via &lt;code&gt;project_files&lt;/code&gt; and &lt;code&gt;global_files&lt;/code&gt; must include a &lt;code&gt;#ddev-generated&lt;/code&gt; stanza to support proper removal&lt;/li&gt;
&lt;li&gt;Remember to publish a new release after any update (unless it&amp;#39;s just a &lt;code&gt;README.md&lt;/code&gt; change)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;What&amp;#39;s New in the DDEV Ecosystem&lt;/h2&gt;
&lt;p&gt;DDEV development is moving fast, and new features are introduced regularly. Here are some recent updates you should be aware of:&lt;/p&gt;
&lt;h3&gt;Recommending DDEV Version Constraints&lt;/h3&gt;
&lt;p&gt;Your add-on should encourage users to keep DDEV updated. The current recommendation is to add this stanza to &lt;code&gt;install.yaml&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;ddev_version_constraint: &amp;quot;&amp;gt;= v1.24.10&amp;quot;
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This ensures compatibility and resolves known issues, such as those related to the &lt;a href=&quot;open-source-for-the-win.md#mutagen-problemreport&quot;&gt;Mutagen Problem Report&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Customizing &lt;code&gt;ddev describe&lt;/code&gt; Output&lt;/h3&gt;
&lt;p&gt;With DDEV v1.24.10, add-ons can now customize the output of the &lt;code&gt;ddev describe&lt;/code&gt; with &lt;code&gt;x-ddev.describe-*&lt;/code&gt; extension.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/custom-docker-services/#customizing-ddev-describe-output&quot;&gt;This feature&lt;/a&gt; is useful for showing credentials, URLs, or usage notes for custom services.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-redis/blob/main/docker-compose.redis.yaml&quot;&gt;https://github.com/ddev/ddev-redis/blob/main/docker-compose.redis.yaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Changing &lt;code&gt;ddev ssh&lt;/code&gt; Shell&lt;/h3&gt;
&lt;p&gt;DDEV v1.24.10 also introduced the ability for add-ons to specify a custom shell for the &lt;code&gt;ddev ssh -s my-service&lt;/code&gt; command using the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/in-container-configuration/#changing-ddev-ssh-shell&quot;&gt;&lt;code&gt;x-ddev.ssh-shell&lt;/code&gt;&lt;/a&gt; extension.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  my-service:
    x-ddev:
      ssh-shell: bash
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-varnish/blob/main/docker-compose.varnish.yaml&quot;&gt;https://github.com/ddev/ddev-varnish/blob/main/docker-compose.varnish.yaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;To ensure your add-on works reliably, include a shell availability check in your Bats health checks (&lt;code&gt;tests/test.bats&lt;/code&gt;):&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;health_checks() {
  # Verify that bash is available in the &amp;quot;my-service&amp;quot; container
  run ddev exec -s my-service command -v bash
  assert_success
  assert_output --partial &amp;quot;bash&amp;quot;
  # ... additional checks ...
}
&lt;/code&gt;&lt;/pre&gt;
&lt;h3&gt;MutagenSync Annotation for Commands&lt;/h3&gt;
&lt;p&gt;With DDEV v1.24.4, custom commands can now use the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/custom-commands/#mutagensync-annotation&quot;&gt;&lt;code&gt;MutagenSync&lt;/code&gt;&lt;/a&gt; annotation.&lt;/p&gt;
&lt;p&gt;You should use this annotation if your &lt;code&gt;host&lt;/code&gt; or &lt;code&gt;web&lt;/code&gt; commands modify, add, or remove files in the project directory. It ensures that file sync is handled correctly when Mutagen is enabled, preventing unexpected behavior or sync delays. (It does no harm and causes no performance issues if Mutagen is not in use.)&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/backdrop-ops/ddev-backdrop-bee/blob/main/commands/web/bee&quot;&gt;https://github.com/backdrop-ops/ddev-backdrop-bee/blob/main/commands/web/bee&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Support for Optional Compose Profiles&lt;/h3&gt;
&lt;p&gt;The same DDEV v1.24.4 release introduced support for &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/custom-compose-files/#optional-services&quot;&gt;optional docker-compose profiles&lt;/a&gt;, which can be used by add-ons to offer more flexible configuration.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-mongo/blob/main/docker-compose.mongo.yaml&quot;&gt;https://github.com/ddev/ddev-mongo/blob/main/docker-compose.mongo.yaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-mongo/blob/main/commands/host/mongo-express&quot;&gt;https://github.com/ddev/ddev-mongo/blob/main/commands/host/mongo-express&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;&lt;code&gt;ddev get&lt;/code&gt; Deprecation&lt;/h3&gt;
&lt;p&gt;The classic &lt;code&gt;ddev get&lt;/code&gt; command is deprecated in DDEV v1.23.5 and replaced by &lt;code&gt;ddev add-on get&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;Huge thanks to &lt;a href=&quot;https://github.com/GuySartorelli&quot;&gt;@GuySartorelli&lt;/a&gt; for implementing this feature, and also for proactively updating many add-on &lt;code&gt;README.md&lt;/code&gt; files. You&amp;#39;ve likely already seen a pull request for your add-on!&lt;/p&gt;
&lt;h3&gt;Better Testing with Bats Libraries&lt;/h3&gt;
&lt;p&gt;While all add-ons use the &lt;a href=&quot;https://bats-core.readthedocs.io/en/stable/&quot;&gt;Bats&lt;/a&gt; framework for testing, many are still missing Bats libraries that simplify assertions and test writing.&lt;/p&gt;
&lt;p&gt;Consider adopting these libraries to enhance test clarity and maintainability.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-addon-template/blob/main/tests/test.bats&quot;&gt;https://github.com/ddev/ddev-addon-template/blob/main/tests/test.bats&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Issue and PR Templates&lt;/h3&gt;
&lt;p&gt;Make sure your add-on includes:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-addon-template/tree/main/.github/ISSUE_TEMPLATE&quot;&gt;Issue templates&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-addon-template/blob/main/.github/PULL_REQUEST_TEMPLATE.md&quot;&gt;Pull request template&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;These improve the quality of contributions and bug reports.&lt;/p&gt;
&lt;h3&gt;Add-on Badges&lt;/h3&gt;
&lt;p&gt;The old &lt;code&gt;maintained&lt;/code&gt; badge required yearly updates, which became a maintenance burden, especially for contributors with many add-ons. It&amp;#39;s now replaced by a &lt;code&gt;last commit&lt;/code&gt; badge.&lt;/p&gt;
&lt;p&gt;To improve visibility and engagement on the &lt;a href=&quot;https://addons.ddev.com&quot;&gt;DDEV Add-on Registry&lt;/a&gt;, add the registry badge to your &lt;a href=&quot;https://github.com/ddev/ddev-addon-template&quot;&gt;README.md&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-addon-template/blob/main/README.md&quot;&gt;https://github.com/ddev/ddev-addon-template/blob/main/README.md&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Advanced Customization with Flags&lt;/h3&gt;
&lt;p&gt;Starting with DDEV v1.23.5, you can now use &lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/commands/#dotenv-set&quot;&gt;&lt;code&gt;ddev dotenv set&lt;/code&gt;&lt;/a&gt; to manage environment variables more cleanly. This allows your add-on to read custom environment variables defined in &lt;code&gt;.ddev/.env.*&lt;/code&gt; files, and use them inside your &lt;code&gt;docker-compose.*.yaml&lt;/code&gt; configuration.&lt;/p&gt;
&lt;p&gt;This feature is especially useful for advanced setups where flexibility and dynamic configuration are needed.&lt;/p&gt;
&lt;p&gt;Example:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-adminer#advanced-customization&quot;&gt;https://github.com/ddev/ddev-adminer#advanced-customization&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-adminer/blob/main/docker-compose.adminer.yaml&quot;&gt;https://github.com/ddev/ddev-adminer/blob/main/docker-compose.adminer.yaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Making Small Changes to Docker Images&lt;/h3&gt;
&lt;p&gt;If your add-on needs a customized Docker image, the typical approach is to create a separate &lt;code&gt;Dockerfile&lt;/code&gt; and configure your add-on to use it. However, for minor tweaks, you can take advantage of the &lt;a href=&quot;https://docs.docker.com/reference/compose-file/build/#dockerfile_inline&quot;&gt;&lt;code&gt;dockerfile_inline&lt;/code&gt;&lt;/a&gt; option in your &lt;code&gt;docker-compose.*.yaml&lt;/code&gt; file.&lt;/p&gt;
&lt;p&gt;This approach lets you define a small &lt;code&gt;Dockerfile&lt;/code&gt; directly in the YAML, avoiding the overhead of maintaining a separate file.&lt;/p&gt;
&lt;p&gt;Examples:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-solr/blob/main/docker-compose.solr.yaml&quot;&gt;https://github.com/ddev/ddev-solr/blob/main/docker-compose.solr.yaml&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev-opensearch/blob/main/docker-compose.opensearch.yaml&quot;&gt;https://github.com/ddev/ddev-opensearch/blob/main/docker-compose.opensearch.yaml&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Repository Configuration Best Practices&lt;/h2&gt;
&lt;p&gt;To keep your add-on repository tidy, safe, and aligned with community standards, consider adjusting the following GitHub settings:&lt;/p&gt;
&lt;h3&gt;General Settings&lt;/h3&gt;
&lt;p&gt;Go to &lt;strong&gt;Settings → General&lt;/strong&gt; in your repository:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Uncheck features you don’t use, such as &lt;strong&gt;Wikis&lt;/strong&gt;, &lt;strong&gt;Discussions&lt;/strong&gt;, and &lt;strong&gt;Projects&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Allow squash merging&lt;/strong&gt; with &lt;strong&gt;Pull request title&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Disable &lt;strong&gt;Allow merge commits&lt;/strong&gt; and &lt;strong&gt;Allow rebase merging&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Always suggest updating pull request branches&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Enable &lt;strong&gt;Automatically delete head branches&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Branch Protection Rules&lt;/h3&gt;
&lt;p&gt;Go to &lt;strong&gt;Settings → Rules → Rulesets&lt;/strong&gt;:&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Click &lt;strong&gt;New ruleset → New branch ruleset&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Set &lt;strong&gt;Ruleset name&lt;/strong&gt; to &lt;code&gt;main&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Enforcement status&lt;/strong&gt;, select &lt;strong&gt;Active&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Targets&lt;/strong&gt;, click &lt;strong&gt;Add target&lt;/strong&gt; → choose &lt;strong&gt;Include default branch&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;Under &lt;strong&gt;Rules&lt;/strong&gt;, enable:&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Restrict deletions&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Require a pull request before merging&lt;/strong&gt; (set &lt;strong&gt;Allowed merge methods&lt;/strong&gt; to only &lt;strong&gt;Squash&lt;/strong&gt;)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Block force pushes&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;Click &lt;strong&gt;Create&lt;/strong&gt; to apply the ruleset&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Conclusion&lt;/h2&gt;
&lt;p&gt;Keeping your add-on current means less work for users and fewer issues for you to manage. Use this guide as your checklist and stay in sync with the DDEV ecosystem.&lt;/p&gt;
&lt;p&gt;Have questions, suggestions, or something cool to share? Join the conversation in our &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;, &lt;a href=&quot;https://github.com/ddev/ddev/issues&quot;&gt;open an issue&lt;/a&gt;, or reach out via &lt;a href=&quot;mailto:support%40ddev.com&quot;&gt;email&lt;/a&gt;. Your feedback helps improve the tools we all rely on.&lt;/p&gt;
&lt;p&gt;If DDEV is helping you or your organization, please consider &lt;a href=&quot;https://ddev.com/support-ddev/#sponsor-development&quot;&gt;supporting its ongoing financial sustainability&lt;/a&gt;. Every bit helps keep the ecosystem growing and maintained.&lt;/p&gt;
&lt;p&gt;Happy maintaining!&lt;/p&gt;
</content:encoded><category>Add-ons</category><category>Guides</category></item><item><title>Solving Intel-only AMD64/X64 problems on macOS with Apple Silicon</title><link>https://ddev.com/blog/amd64-with-rosetta-on-macos</link><guid isPermaLink="true">https://ddev.com/blog/amd64-with-rosetta-on-macos</guid><description>Some software packages and docker images are still only available in Intel versions, but emulating AMD64 is working pretty well these days on macOS with Rosetta 2.</description><pubDate>Wed, 16 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/apple-silicon-intel.png&quot; alt=&quot;Bridging Apple Silicon and Intel architectures.&quot;&gt;&lt;p&gt;It&amp;#39;s been almost 5 years since Apple introduced its ARM64-based Macs, and the world has loved them. But they threw a complete monkey wrench into the software works, which had expected the Intel/AMD64 architecture for many, many years. (Read more: &lt;a href=&quot;arm64-apple-silicon-m1-ddev-local-what-does-it-all-mean.md&quot;&gt;ARM64! Apple Silicon! M-Series! DDEV! What does it all mean?&lt;/a&gt;)&lt;/p&gt;
&lt;p&gt;Almost all systems that distributed binary artifacts had extensive troubles. That included compiled binaries, Docker images, libraries, etc. In some cases the problem was just the fundamental assumptions in the software.&lt;/p&gt;
&lt;p&gt;Apple released &lt;a href=&quot;https://support.apple.com/en-us/102527&quot;&gt;Rosetta 2&lt;/a&gt; with the initial Apple Silicon macs, and it was great for simple situations, but it was initially quite unpredictable for Docker-based applications. You may know that I resisted any use of Rosetta for some years because of initial experiences of unpredictability. However, everything has gotten better around Rosetta over the years, but more than that, almost everything is available as a native app or native Docker image these days (and that has always included all DDEV apps and Docker images, from the very beginning).&lt;/p&gt;
&lt;p&gt;But it doesn&amp;#39;t include everything. Microsoft continues to publish AMD64-only binaries and Docker images, and Oracle is just as guilty. Surely they&amp;#39;ll come around.&lt;/p&gt;
&lt;p&gt;In the meantime, here are some techniques to get niche AMD64-only applications going with DDEV. I recommend these techniques only if you have no good alternative, because native performance and reliability are much higher.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run a service as &lt;code&gt;platform: linux/amd64&lt;/code&gt; if only AMD64 Docker images are available&lt;/li&gt;
&lt;li&gt;Run the DDEV web container as &lt;code&gt;platform: linux/amd64&lt;/code&gt; if you absolutely must install AMD64-only software in there (this happens most often with &lt;code&gt;npm&lt;/code&gt; packages).&lt;/li&gt;
&lt;li&gt;Run your entire Docker environment as AMD64 with emulation.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Running an External Service as &lt;code&gt;linux/amd64&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;There are still a few Docker images that have not been properly updated to multi-platform builds, including &lt;a href=&quot;https://hub.docker.com/r/typo3solr/ext-solr&quot;&gt;typo3solr&lt;/a&gt; and &lt;a href=&quot;https://hub.docker.com/r/microsoft/mssql-server&quot;&gt;mssql/server&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;With these, if you have a &lt;code&gt;docker-compose.*.yaml&lt;/code&gt; file that names an image which is only available as AMD64, you can just add to it this line:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;platform: linux/amd64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;And if you&amp;#39;re using a Docker provider like Orbstack or Docker Desktop that has robust Rosetta support (and you have Rosetta enabled) then it will &amp;quot;just work&amp;quot;. It will have reduced performance, but it may work just fine for your application.&lt;/p&gt;
&lt;p&gt;I &lt;a href=&quot;https://github.com/ddev/ddev-sqlsrv/blob/main/docker-compose.sqlsrv.yaml#L2-L7&quot;&gt;recently added&lt;/a&gt; this setup to the &lt;code&gt;ddev-sqlsrv&lt;/code&gt; DDEV add-on, which previously was limited to Intel users only. Adding these lines to the service&amp;#39;s &lt;code&gt;docker-compose.sqlsrv.yaml&lt;/code&gt; made the add-on work fine on Apple Silicon:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;# On macOS Apple Silicon, this only works with Rosetta enabled
image: ${MSSQL_DOCKER_IMAGE:-mcr.microsoft.com/mssql/server:2022-CU18-ubuntu-22.04}
platform: linux/amd64
&lt;/code&gt;&lt;/pre&gt;
&lt;h2&gt;Adding AMD64-only Software to the DDEV Web Container&lt;/h2&gt;
&lt;p&gt;Sometimes the problem is &lt;em&gt;adding&lt;/em&gt; software that is Intel-specific to the DDEV web container. For example, the classic npm packages &lt;code&gt;node-sass&lt;/code&gt; and &lt;code&gt;puppeteer&lt;/code&gt; had this problem for years, and the &lt;code&gt;gifsicle&lt;/code&gt; npm package still does.&lt;/p&gt;
&lt;p&gt;On an Apple Silicon machine you might get an ugly error like this when doing &lt;code&gt;ddev npm install gifsicle&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;npm error OrbStack ERROR: Dynamic loader not found: /lib64/ld-linux-x86-64.so.2
npm error
npm error This usually means that you&amp;#39;re running an x86 program on an arm64 OS without multi-arch libraries.
npm error To fix this, you can:
npm error   1. Use an Intel (amd64) container to run this program; or
npm error   2. Install multi-arch libraries in this container.
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In this situation, if you have Rosetta enabled and a Docker provider configured to support it, you can add a &lt;code&gt;.ddev/docker-compose.amd64.yaml&lt;/code&gt; like this:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;services:
  web:
    # Force the DDEV web image to run as `linux/amd64` on Apple Silicon with Rosetta
    platform: linux/amd64
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Now on &lt;code&gt;ddev restart&lt;/code&gt; you&amp;#39;ll be running an AMD64 web container and &lt;code&gt;ddev npm install gifsicle&lt;/code&gt; will work just fine. And your colleagues who are on Intel processors will have no trouble with this configuration.&lt;/p&gt;
&lt;p&gt;Test it with &lt;code&gt;ddev exec arch&lt;/code&gt;, you&amp;#39;ll now get &lt;code&gt;x86_64&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;(If you run into issues, try &lt;code&gt;ddev debug rebuild&lt;/code&gt; to clear the old Dockerfile build cache.)&lt;/p&gt;
&lt;h2&gt;Run Your Entire Docker System as AMD64&lt;/h2&gt;
&lt;p&gt;Since those techniques work so well, it seems unlikely that you&amp;#39;d want to run everything as AMD64, but &lt;a href=&quot;amd64-on-apple-silicon-ddev.md&quot;&gt;DDEV on Intel... on Apple Silicon&lt;/a&gt; tells you how if you want to!&lt;/p&gt;
&lt;h2&gt;Wrapping Up: Try to Use Native Software When You Can&lt;/h2&gt;
&lt;p&gt;I don&amp;#39;t recommend using either of these techniques if you have the option of updating to native software or images, but they&amp;#39;re pretty nice if you can&amp;#39;t!&lt;/p&gt;
&lt;p&gt;Do you have specific examples of Intel-focused software or images that you&amp;#39;ve had trouble with? I&amp;#39;d love to hear about it, and hear your solutions. I&amp;#39;d love to update this article with more specific examples.&lt;/p&gt;
&lt;p&gt;I&amp;#39;d love to hear your experience. Join us in &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt; or &lt;a href=&quot;https://github.com/ddev/ddev/issues&quot;&gt;open an issue&lt;/a&gt; or send &lt;a href=&quot;https://ddev.com/contact&quot;&gt;an email&lt;/a&gt; if you have success (or failure 😀).&lt;/p&gt;
&lt;p&gt;Thanks for your support and engagement with DDEV!&lt;/p&gt;
</content:encoded><category>DevOps</category></item><item><title>Building an Off-Ramp from WordPress with DDEV</title><link>https://ddev.com/blog/building-offramp-from-wordpress-with-ddev</link><guid isPermaLink="true">https://ddev.com/blog/building-offramp-from-wordpress-with-ddev</guid><description>DDEV used to develop WordPress content exporter plugin for use in Grav CMS.</description><pubDate>Fri, 11 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/wordpress-offramp.png&quot; alt=&quot;Road exit sign with &quot;Grav CMS&quot; text. Original image by Skyler Smith at Unsplash.com&quot;&gt;&lt;p&gt;&lt;strong&gt;TL;DR:&lt;/strong&gt; &lt;em&gt;DDEV was a huge force multiplier, enabling me to focus on writing a WordPress plugin to export WordPress content for use in Grav CMS. More information on the plugin can be found at the GitHub repository &lt;a href=&quot;https://github.com/jgonyea/wp2grav_exporter&quot;&gt;wp2grav_exporter&lt;/a&gt;.&lt;/em&gt;&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;Popular content managment systems like WordPress and Drupal store content in databases (MySQL/ PostgreSQL/ etc.). &lt;a href=&quot;https://getgrav.org/&quot;&gt;Grav CMS&lt;/a&gt; stores content and configuration in local files (Markdown and YAML respectively). Grav&amp;#39;s simpler flat-file storage mechanism is one of the things that drew me to start dabbling with it.&lt;/p&gt;
&lt;h2&gt;Why consider leaving WordPress?&lt;/h2&gt;
&lt;p&gt;While the recent shenanigans from Automattic&amp;#39;s CEO accelerated my work, it wasn&amp;#39;t the primary reason I developed this content exporter. I fell in love with Grav development back in 2018 when I first started writing a &lt;a href=&quot;https://www.drupal.org/project/grav_export&quot;&gt;Drupal 7 exporter&lt;/a&gt;, and I wanted to port something similar over to WordPress. I value data portability, empowering the end user to control where their content is used! In the end, it&amp;#39;s about giving options.&lt;/p&gt;
&lt;h2&gt;Why DDEV?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/ddev/ddev&quot;&gt;DDEV&lt;/a&gt; is a fantastic tool, and it is perfect for my PHP development workflow. It made spinning up two local developlment sites a breeze. I normally relish building and configuring my own automated environments, &lt;em&gt;but DDEV makes it so simple to configure local environments&lt;/em&gt;. Additionally, DDEV comes with many &amp;quot;quickstart&amp;quot; configurations, meaning that popular CMS&amp;#39;s like Drupal and WordPress work out of the box with nearly all settings ready to go.&lt;/p&gt;
&lt;h2&gt;Development setup&lt;/h2&gt;
&lt;p&gt;I made two different directories, one for WordPress and the other for Grav. After running &lt;code&gt;ddev config&lt;/code&gt; on each respective directory, &lt;code&gt;ddev start&lt;/code&gt; on each starts serving the content.&lt;/p&gt;
&lt;p&gt;I installed &lt;a href=&quot;https://wordpress.org/plugins/demopress/&quot;&gt;DemoPress&lt;/a&gt; in the WordPress environment to help generate random test content and users to export.&lt;/p&gt;
&lt;h3&gt;Xdebug&lt;/h3&gt;
&lt;p&gt;Step debugging is imperative while trying to inspect content in-flight. Xdebug needed to listen on two different ports to avoid collisions between the two sites, and the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/debugging-profiling/step-debugging/#using-xdebug-on-a-port-other-than-the-default-9003&quot;&gt;DDEV docs&lt;/a&gt; are informative on how to configure this. I personally use VS Code, but other IDE&amp;#39;s should work just as well, too. Step debugging was crucial to finding appropriate data structures and information I needed my converter plugin to use in a Grav site.&lt;/p&gt;
&lt;h2&gt;Wp2grav_exporter WordPress plugin&lt;/h2&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/jgonyea/wp2grav_exporter&quot;&gt;wp2grav_exporter&lt;/a&gt; plugin is the resultant labor of love. It automatically exports:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Users and assigned roles&lt;/li&gt;
&lt;li&gt;Post Types, including custom types&lt;/li&gt;
&lt;li&gt;Posts and associated custom fields, including ACF fields&lt;/li&gt;
&lt;li&gt;File attachments&lt;/li&gt;
&lt;li&gt;Site metadata&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a href=&quot;https://ddev.com/img/blog/2025/04/sample-wordpress-grav-page-render.png&quot;&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/04/sample-wordpress-grav-page-render.png&quot; alt=&quot;Sample render comparing WordPress to Grav&quot; title=&quot;Sample render comparing WordPress to Grav&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;Additional screenshots of example content exports can be found at the plugin&amp;#39;s GitHub page.&lt;/p&gt;
&lt;p&gt;After running the export, content was drag-dropped between my two DDEV directories, and I could immediately test how content looked. The exported post configurations are encompassed in a Grav plugin, so the end user is free to use whatever theme they want!&lt;/p&gt;
&lt;h2&gt;Final thoughts&lt;/h2&gt;
&lt;p&gt;DDEV has saved me countless hours with its easy setup and dependability. If you haven&amp;#39;t yet taken it for a test spin, I can&amp;#39;t recommend it enough!&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;em&gt;Find an issue with my exporter? Submissions are welcome at the project&amp;#39;s &lt;a href=&quot;https://github.com/jgonyea/wp2grav_exporter/issues&quot;&gt;issue queue&lt;/a&gt;!&lt;/em&gt;&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>Exposing a Node.js App Over HTTP / HTTPS on a Subdomain in DDEV</title><link>https://ddev.com/blog/ddev-expose-node-app-on-subdomain</link><guid isPermaLink="true">https://ddev.com/blog/ddev-expose-node-app-on-subdomain</guid><description>Serve a Node.js app on a dedicated subdomain over HTTP/HTTPS using DDEV’s Traefik.</description><pubDate>Thu, 10 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/ddev-router-traefik.png&quot; alt=&quot;Screenshot of DDEV router and Traefik running on a `.ddev.site` subdomain in a browser window&quot;&gt;&lt;h1&gt;Exposing a Node.js App Over 80/443 on a Subdomain in DDEV&lt;/h1&gt;
&lt;p&gt;Have you ever needed to run a separate Node.js application alongside your main site in DDEV, and serve it securely
over ports 80 and 443 on a custom subdomain? While DDEV has built-in mechanisms for exposing additional ports,
sometimes you need more control, especially if you want to expos it through a domain like
&lt;code&gt;frontend.example.ddev.site&lt;/code&gt; instead of a port-specific URL. This is where Traefik, bundled with DDEV,
becomes incredibly powerful.&lt;/p&gt;
&lt;p&gt;In this post, we’ll walk through how to configure DDEV and Traefik to proxy requests from a subdomain directly
to your Node.js app on port 3000 within the DDEV web container.&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Why Not Just Use &lt;code&gt;web_extra_exposed_ports&lt;/code&gt;?&lt;/h2&gt;
&lt;p&gt;DDEV&amp;#39;s&amp;#39; &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/customization-extendibility/#exposing-extra-ports-via-ddev-router&quot;&gt;&lt;code&gt;web_extra_exposed_ports&lt;/code&gt; feature&lt;/a&gt; is great for making your service accessible via a specific port
(e.g., (&lt;code&gt;3000&lt;/code&gt;)). However, it doesn’t magically set up a subdomain for you to use on standard web ports (80/443).
If you want &lt;code&gt;frontend.example.ddev.site&lt;/code&gt; to map to your Node.js app over HTTPS, you need a reverse proxy rule.
That’s where Traefik comes in.&lt;/p&gt;
&lt;h2&gt;Step 1: Update Your &lt;code&gt;.ddev/config.yaml&lt;/code&gt;&lt;/h2&gt;
&lt;p&gt;In your project’s &lt;code&gt;.ddev/config.yaml&lt;/code&gt;, define the project name and the additional hostname you want to use. For example:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;name: example

additional_hostnames:
  - frontend.example
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;&lt;em&gt;(Optional)&lt;/em&gt; You can still use web_extra_exposed_ports to expose the Node.js port if you want:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;web_extra_exposed_ports:
  - name: node-app
    container_port: 3000
    http_port: 3000
    https_port: 3001
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;However, for a subdomain over standard web ports, the critical part is the next step with Traefik.&lt;/p&gt;
&lt;h2&gt;Step 2: Create a Project-level Traefik Configuration File&lt;/h2&gt;
&lt;p&gt;In your project&amp;#39;s &lt;code&gt;.ddev/traefik/config&lt;/code&gt; folder add a file named &lt;code&gt;frontend.yaml&lt;/code&gt;. In &lt;code&gt;frontend.yaml&lt;/code&gt;, you’ll define two routers—one for HTTP (port 80) and one for HTTPS (port 443)—and
a service that points to the Node.js app on port 3000.&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;http:
  routers:
    # Router for HTTP (port 80)
    example-web-80-http-frontend:
      entrypoints:
        - http-80
      rule: Host(`frontend.example.ddev.site`)
      service: &amp;quot;example-web-3000&amp;quot;
      ruleSyntax: v3
      tls: false
      priority: 100

    # Router for HTTPS (port 443)
    example-web-80-https-frontend:
      entrypoints:
        - http-443
      rule: Host(`frontend.example.ddev.site`)
      service: &amp;quot;example-web-3000&amp;quot;
      ruleSyntax: v3
      tls: true
      priority: 100

  services:
    # The custom service that routes to your Node app
    example-web-3000:
      loadbalancer:
        servers:
          - url: http://ddev-example-web:3000
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Here’s what’s happening:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Routers: Each router inspects incoming requests. If the hostname matches &lt;code&gt;frontend.example.ddev.site&lt;/code&gt;, it passes the request to the &lt;code&gt;example-web-3000&lt;/code&gt; service.&lt;/li&gt;
&lt;li&gt;Service: Defines where to actually send the traffic. In this case, &lt;code&gt;http://ddev-example-web:3000&lt;/code&gt; is the internal address of the web container running on port 3000.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Step 3: Restart DDEV&lt;/h2&gt;
&lt;p&gt;Run:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;DDEV will pick up your new Traefik configuration, and you should now be able to access your Node.js application at:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev launch https://frontend.example.ddev.site
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;No more messing with non-standard port numbers in your URLs!&lt;/p&gt;
&lt;hr&gt;
&lt;h2&gt;Wrapping Up&lt;/h2&gt;
&lt;p&gt;By leveraging Traefik&amp;#39;s routing capabilities, you can expose any service running in the web container on standard HTTP/HTTPS ports and map it to a dedicated subdomain. This approach keeps your development environment clean, user-friendly, and closer to production-like URLs.&lt;/p&gt;
&lt;p&gt;If you’ve followed these steps, your Node.js application will be served seamlessly over &lt;code&gt;frontend.example.ddev.site&lt;/code&gt;.&lt;/p&gt;
&lt;hr&gt;
&lt;p&gt;&lt;strong&gt;Further Reading&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/traefik-router/#traefik-configuration&quot;&gt;DDEV Router Customization and Debugging (Traefik)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://doc.traefik.io/traefik/&quot;&gt;Traefik Proxy Docs&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Do You Have a Favorite DDEV Recipe? Contribute It!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;We welcome community contributions to the DDEV blog and would love to have yours. The &lt;a href=&quot;https://github.com/ddev/ddev.com&quot;&gt;ddev.com repository&lt;/a&gt; has full details, and there&amp;#39;s even a &lt;a href=&quot;https://ddev.com.ddev.site/blog/ddev-website-for-contributors/&quot;&gt;training session on how to do it&lt;/a&gt;. It&amp;#39;s all just Markdown and we&amp;#39;ll help!&lt;/p&gt;
</content:encoded><category>DevOps</category></item><item><title>DDEV April 2025 Newsletter</title><link>https://ddev.com/blog/ddev-april-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-april-2025-newsletter</guid><description>DDEV April 2025 Newsletter</description><pubDate>Tue, 08 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/nancy-lewis-my-first-painting-in-palisade.jpg&quot; alt=&quot;Nancy Lewis &quot;My First Painting in Palisade&quot;&quot;&gt;&lt;p&gt;&lt;strong&gt;Spring has Sprung in Palisade, Colorado!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV v1.24.4&lt;/strong&gt; was &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.4&quot;&gt;released&lt;/a&gt; with the new &lt;a href=&quot;xhgui-feature.md&quot;&gt;XHGui profiling feature&lt;/a&gt; (funded by TYPO3 Community Ideas Budget!).&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes and News&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/xhgui-feature&quot;&gt;XHGui Feature Makes Profiling Even Easier&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/sponsor-thanks&quot;&gt;Thanks to our Amazing Sponsors&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/drupalcon-atlanta-2025&quot;&gt;DDEV at DrupalCon Atlanta&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.kalamuna.com/blog/setup-existing-wordpress-multisite-locally-ddev-bonus-pantheon-support&quot;&gt;Set up an existing WordPress multisite locally with DDEV (with Bonus Pantheon support!)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://darren.oh.name/node/81&quot;&gt;Darren Oh: Zscaler, DDEV, and Colima&lt;/a&gt;. (We&amp;#39;d love to have you contribute your own experience with packet-inspection VPNs in &lt;a href=&quot;https://github.com/ddev/ddev/pull/7061&quot;&gt;this docs PR&lt;/a&gt;. Note that in DDEV v1.24.4 a significant problem with using internet proxies was resolved; full documentation will be included in that PR.&lt;/li&gt;
&lt;li&gt;The TYPO3 Q2 Community Budget Idea to implement mDNS (multicast DNS) in DDEV didn’t receive enough votes, so unfortunately it won’t be funded this quarter. The proposed &lt;a href=&quot;https://github.com/ddev/ddev/issues/6663&quot;&gt;mDNS feature&lt;/a&gt; offers an alternative to the standard &lt;code&gt;ddev.site&lt;/code&gt; DNS resolution. It’s especially helpful for users who experience issues with DNS, and it could also eliminate the need for DDEV to modify the &lt;code&gt;/etc/hosts&lt;/code&gt; file in those cases. We still hope to explore this in 2025!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;We welcome your contributions to the blog!&lt;/strong&gt; A number of community members have contributed blog articles demonstrating their use of DDEV to solve problems, and we welcome your contributions. It&amp;#39;s easy, it&amp;#39;s just Markdown, and full instructions are at &lt;a href=&quot;https://github.com/ddev/ddev.com&quot;&gt;the ddev.com repository&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Thanks for subscribing to the newsletter! We love to have this way to keep in touch.&lt;/strong&gt; If you&amp;#39;re not getting it yet by email, please sign up at &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;ddev.com/newsletter&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Great News: Sponsorship Level is Increasing!&lt;/strong&gt; According to our &lt;a href=&quot;https://ddev.com/s/sponsorship-data.json&quot;&gt;open sponsorship feed&lt;/a&gt; our total monthly average income went up from $7099 to $7639 since March 1, a $540 bump in one month. Wow, you&amp;#39;re awesome, thank you! If your organization or you aren&amp;#39;t on the bandwagon yet, &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;join us to help make DDEV sustainable&lt;/a&gt;. GitHub Sponsors is great, but we also do support contracts, invoicing, PayPal — anything that works for you! Our goal is $12,000/month, so we&amp;#39;re more than halfway there. Special thanks to new $100/month sponsors &lt;a href=&quot;http://www.fullfatthings.com/&quot;&gt;@fullfatthings&lt;/a&gt;, &lt;a href=&quot;https://www.liip.ch/en&quot;&gt;@liip&lt;/a&gt;, &lt;a href=&quot;https://www.anwesoft.com/&quot;&gt;@andreas-anwesoft&lt;/a&gt;, &lt;a href=&quot;https://wearerudder.com/&quot;&gt;@wearrudder&lt;/a&gt;!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy April from Randy Fay, DDEV Project Lead. It&amp;#39;s a delight to collaborate with you!&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>DDEV at DrupalCon Atlanta 2025</title><link>https://ddev.com/blog/drupalcon-atlanta-2025</link><guid isPermaLink="true">https://ddev.com/blog/drupalcon-atlanta-2025</guid><description>Randy got to go to DrupalCon Atlanta and help folks with Drupal and DDEV.</description><pubDate>Thu, 03 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/randy-mentoring-drupalcon-atlanta.jpg&quot; alt=&quot;Randy at table doing first-time contributor mentoring.&quot;&gt;&lt;h2&gt;DDEV at DrupalCon Atlanta 2025&lt;/h2&gt;
&lt;p&gt;While I didn’t speak at any formal sessions this year, I had the chance to lead several Birds-of-a-Feather (BoF) discussions:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;DDEV VS Code Integration Improvement&lt;/strong&gt;: We talked about ways that DDEV could integrate better with VS Code. Although the well-maintained &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=biati.ddev-manager&quot;&gt;DDEV Manager VS Code Extension&lt;/a&gt; does great for people, there are a couple of things VS Code does not know how to do well. The biggest is that it doesn&amp;#39;t know how to use &lt;code&gt;php&lt;/code&gt; or &lt;code&gt;phpstan&lt;/code&gt; or &lt;code&gt;phpunit&lt;/code&gt; properly inside a Docker container (like the DDEV web container), so it&amp;#39;s hard to use the nice VS Code integration with those tools. DDEV Community member &lt;a href=&quot;https://www.drupal.org/u/ultimike&quot;&gt;Mike Anello&lt;/a&gt; was present and talked about his favorite usage, which involves the &lt;a href=&quot;https://marketplace.visualstudio.com/items?itemName=ms-vscode.remote-explorer&quot;&gt;Remote Explorer&lt;/a&gt; extension. In his long-form Drupal trainings at &lt;a href=&quot;https://www.drupaleasy.com/&quot;&gt;DrupalEasy&lt;/a&gt; he teaches folks to use Remote Explorer with DDEV and work inside the web container all the time, and that solves the problem, but it is different from what DDEV users normally do. (PhpStorm knows how to use tools and interpreters inside the container, so doesn&amp;#39;t have this problem.) Mike has &lt;a href=&quot;https://www.youtube.com/watch?v=Nn_L6N4ZQqo&quot;&gt;presented his technique many times as Maximizing Visual Studio Code with DDEV&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Replacing Gitpod for DrupalPod and DDEV&lt;/strong&gt;: Many of you know that Gitpod has been a great resource for DDEV users to do development in a web environment, and that Gitpod Classic is scheduled to shut down in April 2025. The &lt;a href=&quot;https://www.drupal.org/project/drupalpod&quot;&gt;DrupalPod&lt;/a&gt; project, which wrapped Gitpod and DDEV to make Drupal contribution easy in a browser was used extensively by Drupal community members to review issues and contribute code. It was great for Contribution Day at DrupalCons these last few years because there was no need for people to set up a local development environment, and the bandwidth requirements were minimal. The &lt;a href=&quot;https://www.drupal.org/project/drupalpod/issues/3500792&quot;&gt;Drupal.org issue about this&lt;/a&gt; has the details of the discussion, including a recording.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV Office Hours&lt;/strong&gt;: DDEV Office Hours are a simple place to talk about anything DDEV-related, and we had a pleasant time.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Git Bisect for Fun and Profit&lt;/strong&gt;: This Git tutorial on the lovely &lt;code&gt;git bisect&lt;/code&gt; technique went well and we all had a good time. It was based on the &lt;a href=&quot;https://drupal.tv/events/florida-drupalcamp-2025/divide-and-conquer-systematic-approach-troubleshooting-issues&quot;&gt;Florida Drupal Camp presentation &amp;quot;Divide and conquer: A systematic approach to troubleshooting issues&amp;quot;&lt;/a&gt;. Here&amp;#39;s the &lt;a href=&quot;https://github.com/rfay/git-bisect-example&quot;&gt;git-bisect-example repository&lt;/a&gt; for hands-on practice.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;First-time Contributor Mentoring&lt;/h2&gt;
&lt;p&gt;The highlight of every DrupalCon is helping new contributors on Contribution Day, a whole day where folks get help contributing for the first time to code, documentation, or marketing. I was able to help a few people, and of course, was the resident DDEV and DrupalPod expert.&lt;/p&gt;
&lt;h2&gt;Helping Out&lt;/h2&gt;
&lt;p&gt;I published an invitation to meet one-on-one and a few people took advantage of meeting in person to look at their DDEV issues. It was great to meet them!&lt;/p&gt;
&lt;h2&gt;Notes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Drupal CMS was all the rage&lt;/strong&gt;: The &lt;a href=&quot;https://new.drupal.org/docs/drupal-cms&quot;&gt;Drupal CMS&lt;/a&gt; project has been quite successful this year, and it seemed like dozens of sessions talked about it. It seems to me like the Drupal community has taken an excellent path with this. As Dries said in the &lt;a href=&quot;https://dri.es/state-of-drupal-presentation-march-2025&quot;&gt;Driesnote&lt;/a&gt;, Drupal was always a huge bunch of building blocks that could do lots of things and do them well... but only experts understood how to do that. And they all did it in different ways. Now Drupal CMS provides a clear and refined starting point for people who need a website, but still has all the power of Drupal behind it, and you don&amp;#39;t have to be an expert to get that polish and those features at the very beginning of your journey.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;DDEV Maintainer &lt;a href=&quot;https://github.com/stasadev&quot;&gt;Stas Zhuk&lt;/a&gt;&lt;/strong&gt; can&amp;#39;t travel outside Ukraine, but he was welcomed with an honorary badge! &lt;img src=&quot;https://ddev.com/img/blog/2025/04/stas-sort-of-at-drupalcon-atlanta.png&quot; alt=&quot;Stas with badge&quot;&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Docksal seems to be in trouble&lt;/strong&gt;: In the Drupal community many folks have happily used &lt;a href=&quot;https://docksal.io/&quot;&gt;Docksal&lt;/a&gt; over the years, but its maintenance has recently fallen off. (Docksal is a Docker-based local development environment similar to DDEV.) There were people at DrupalCon asking about the situation with Docksal and asking for help migrating their sites to DDEV because of frustration with the project, which hasn&amp;#39;t had a release since May, 2024. As open-source maintainers ourselves, we understand the pressures of maintenance and life and hope the Docksal maintainers are getting all the support they need in both places.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Thanks!&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://www.drupal.org/u/bernardm28&quot;&gt;Bernardo Martinez&lt;/a&gt; shared a room and a DrupalCon ticket, making this whole thing possible.&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://platform.sh&quot;&gt;Platform.sh&lt;/a&gt; was kind enough to fund the airline ticket to Atlanta.&lt;/p&gt;
&lt;p&gt;Thanks to both of you! I wouldn&amp;#39;t have made it without both those things.&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>XHGui Feature Makes Profiling Even Easier</title><link>https://ddev.com/blog/xhgui-feature</link><guid isPermaLink="true">https://ddev.com/blog/xhgui-feature</guid><description>The new XHGui feature in DDEV makes profiling (studying a website&apos;s performance and bottlenecks) even easier than it was before, with a consistent web interface.</description><pubDate>Tue, 01 Apr 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/04/typo3-xhgui.png&quot; alt=&quot;Sample XHGui screen in new XHGui feature&quot;&gt;&lt;h2&gt;XHGui Lands in DDEV v1.24.4&lt;/h2&gt;
&lt;p&gt;Thanks to sponsorship from the &lt;a href=&quot;https://talk.typo3.org/c/t3a/community-budget-ideas-2025-q1/45&quot;&gt;TYPO3 Community Budget Ideas&lt;/a&gt;, DDEV now includes XHGui support for its XHProf profiling. This brings a much-improved experience with a consistent, browser-based interface.&lt;/p&gt;
&lt;p&gt;DDEV has had XHProf profiling for some time, and many in the community have loved it, but it had a few flaws; the list of profiling runs was ugly and uncoordinated, and the list was lost on &lt;code&gt;ddev restart&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;However, the longstanding &lt;a href=&quot;https://github.com/perftools/xhgui&quot;&gt;XHGui&lt;/a&gt; project was out there for years, and it made much more sense.&lt;/p&gt;
&lt;p&gt;With XHGui, you can now track performance bottlenecks with a clean interface, persistent data, and detailed breakdowns of CPU and memory usage.&lt;/p&gt;
&lt;h2&gt;How to Use XHGui for Profiling&lt;/h2&gt;
&lt;p&gt;In DDEV v1.24.4+ you can switch to the XHGui profiling mode (permanently) with&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev config global --xhprof-mode=xhgui &amp;amp;&amp;amp; ddev restart
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Start profiling with&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev xhgui on
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;Visit a few pages in your app to collect profiling data, then&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;ddev xhgui launch
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;In general, click one of the &lt;code&gt;GET&lt;/code&gt; or &lt;code&gt;POST&lt;/code&gt; links and follow it in to explore detailed CPU and memory usage breakdowns.&lt;/p&gt;
&lt;p&gt;If you have questions, join us in one of the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/support/&quot;&gt;DDEV support venues&lt;/a&gt;, especially &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt; and we&amp;#39;ll work it through with you.&lt;/p&gt;
&lt;p&gt;The &lt;a href=&quot;https://docs.ddev.com/en/stable/users/debugging-profiling/xhprof-profiling/&quot;&gt;DDEV Docs on XHProf&lt;/a&gt; have some good starters, but your suggestions are welcome!&lt;/p&gt;
&lt;h2&gt;XHGui Demonstration Screencast&lt;/h2&gt;
&lt;p&gt;Here&amp;#39;s a quick demonstration of using XHGui with a TYPO3 site in DDEV.&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/dSnGkxnQPb8?si=IwwbDnoeVsmmy3ah&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;Thanks to TYPO3, glensc, and tyler36&lt;/h2&gt;
&lt;p&gt;Serious thanks are due to:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://typo3.org/&quot;&gt;TYPO3 Organization&lt;/a&gt; for funding this feature integration.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/glensc&quot;&gt;Elan Ruusamäe (glensc)&lt;/a&gt; for years of maintaining the XHGui project (and extreme responsiveness as we worked on this).&lt;/li&gt;
&lt;li&gt;DDEV community member &lt;a href=&quot;https://github.com/tyler36&quot;&gt;tyler36&lt;/a&gt;, who created the original DDEV add-on and helped it incubate and mature over years and supported its inclusion in DDEV core.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Support&lt;/h2&gt;
&lt;p&gt;Try it out today and let us know how it goes — your feedback helps shape the future of DDEV! Join us in the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/support/&quot;&gt;DDEV support venues&lt;/a&gt; if you want to talk about XHGui and profiling.&lt;/p&gt;
</content:encoded><category>Community</category><category>Performance</category></item><item><title>Thanks to our Amazing Sponsors!</title><link>https://ddev.com/blog/sponsor-thanks</link><guid isPermaLink="true">https://ddev.com/blog/sponsor-thanks</guid><description>Thank You to our Amazing Sponsors!</description><pubDate>Mon, 17 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-github-sponsors.png&quot; alt=&quot;Some of DDEV&apos;s sponsors via GitHub Sponsors&quot;&gt;&lt;h2&gt;Thank you!&lt;/h2&gt;
&lt;p&gt;We just want to take a moment to thank all of the amazing sponsors of the DDEV open source project. All of you reading this know that we&amp;#39;ve been working for years now to make DDEV a financially sustainable project, so it can serve you into the future. So many have responded to that call. Thank you!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Even though we&amp;#39;re going to mention the biggest sponsors first, we want all of you to know that your sponsorship matters too, and with care we can expand to many, many small sponsors to ensure DDEV&amp;#39;s resilience and sustainability.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Major Sponsors&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://platform.sh&quot;&gt;Platform.sh&lt;/a&gt; has been a major sponsor of DDEV for a few years now. You may know that they recently reduced their sponsorship, but they remain our largest single supporter, and we appreciate it greatly. Platform.sh has also transferred the &amp;quot;ddev&amp;quot; domain names to the &lt;a href=&quot;https://ddev.com/foundation&quot;&gt;DDEV Foundation&lt;/a&gt; and will be transferring the &amp;quot;DDEV&amp;quot; trademark. And they&amp;#39;re funding Randy&amp;#39;s plane ticket to Drupalcon Atlanta!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://tag1consulting.com&quot;&gt;Tag1 Consulting&lt;/a&gt; stepped up to generously support DDEV at a very significant level so many years ago, and has continued doing that. And they don&amp;#39;t just offer outstanding financial support, they&amp;#39;re always making clear that they use and support DDEV, and we get to see them at conferences.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://mobilistics.de/&quot;&gt;Mobilistics&lt;/a&gt; and &lt;a href=&quot;https://i-gelb.net&quot;&gt;i-gelb&lt;/a&gt; both sponsor at the $500/month level.&lt;/li&gt;
&lt;li&gt;All these lovely organizations sponsor at the $100/month (or a bit higher) level: &lt;a href=&quot;https://lullabot.com&quot;&gt;Lullabot&lt;/a&gt;, &lt;a href=&quot;https://affinitybridge.com/&quot;&gt;Affinity Bridge&lt;/a&gt;, &lt;a href=&quot;https://github.com/claudiu-cristea&quot;&gt;Webikon&lt;/a&gt;, &lt;a href=&quot;https://fame.fi/&quot;&gt;FameHelsinki&lt;/a&gt;, &lt;a href=&quot;https://www.optasy.com/&quot;&gt;OPTASY&lt;/a&gt;, &lt;a href=&quot;https://gizra.com&quot;&gt;Gizra&lt;/a&gt;, &lt;a href=&quot;https://cambrico.net/&quot;&gt;Cambrico&lt;/a&gt;, &lt;a href=&quot;https://agaric.coop&quot;&gt;Agaric&lt;/a&gt;, &lt;a href=&quot;https://centarro.io&quot;&gt;Centarro&lt;/a&gt;, &lt;a href=&quot;https://craftcms.com/&quot;&gt;Craft CMS&lt;/a&gt;, &lt;a href=&quot;https://redfinsolutions.com/&quot;&gt;Redfin Solutions&lt;/a&gt;, &lt;a href=&quot;https://b13.com&quot;&gt;b13&lt;/a&gt;. And brand new this week (welcome!) &lt;a href=&quot;https://www.fullfatthings.com/&quot;&gt;Full Fat Things&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;So many more wonderful sponsors!&lt;/h2&gt;
&lt;p&gt;Here are some of many sponsors who help out via &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;GitHub Sponsors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-github-sponsors.png&quot; alt=&quot;GitHub Sponsors&quot;&gt;&lt;/p&gt;
&lt;h2&gt;In-Kind Sponsors&lt;/h2&gt;
&lt;p&gt;The open-source community has lots of folks helping out multiple collaborators. In our case, &lt;a href=&quot;https://macstadium.com&quot;&gt;MacStadium&lt;/a&gt; provides us testing resources, and &lt;a href=&quot;https://jetbrains.com&quot;&gt;JetBrains&lt;/a&gt; provides a subscription to their IDE products, thanks!&lt;/p&gt;
&lt;p&gt;But we never forget Docker. Docker has adopted us in the &lt;a href=&quot;https://docs.docker.com/docker-hub/repos/manage/trusted-content/dsos-program/&quot;&gt;Docker-Sponsored-Open-Source (DSOS)&lt;/a&gt; program for a few years now, and this means that all of your image pulls are sponsored in that project. You may know that normal image pulls will be strictly limited starting April 1, 2025, but because of the DSOS, users of DDEV won&amp;#39;t hit that restriction.&lt;/p&gt;
&lt;p&gt;And please don&amp;#39;t forget that the &lt;a href=&quot;https://github.com/moby/moby&quot;&gt;open-source Docker project&lt;/a&gt; underlies every single Docker provider. It doesn&amp;#39;t matter if you&amp;#39;re using OrbStack or Lima or Docker Desktop or whatever, they&amp;#39;re all built on top of the amazing Docker open-source project.&lt;/p&gt;
&lt;h2&gt;JSON Detail about Sponsorships&lt;/h2&gt;
&lt;p&gt;We recently set up a &lt;a href=&quot;https://ddev.com/s/sponsorship-data.json&quot;&gt;full updated JSON feed&lt;/a&gt; that can be used to see exactly where DDEV&amp;#39;s sponsorship comes from and how we&amp;#39;re doing. You can see the latest data any day in the &lt;a href=&quot;https://github.com/ddev/sponsorship-data/blob/main/data/all-sponsorships.json&quot;&gt;all sponsorships&lt;/a&gt; feed. And &lt;a href=&quot;https://bsky.app/profile/mark.ie&quot;&gt;Mark Conroy&lt;/a&gt; has built a &lt;a href=&quot;https://web-components.mark.ie/web-components/ddev/sponsors-banner/&quot;&gt;web component&lt;/a&gt; that can be used to show where we&amp;#39;re at on any website. Thank you!&lt;/p&gt;
&lt;h2&gt;Many Ways to Sponsor&lt;/h2&gt;
&lt;p&gt;We have almost too many ways that you can sponsor, but we want to make it easy for you and your organization.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;For individuals and some organizations, &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;GitHub Sponsors&lt;/a&gt; is super easy, takes moments and can be changed any time.&lt;/li&gt;
&lt;li&gt;We are happy to invoice your organization and do more of a &amp;quot;support contract&amp;quot; so that you don&amp;#39;t have to explain open-source to your finance department. We accept ACH, Wise.com, bank transfer, IBAN, SWIFT, checks, we&amp;#39;ll work with your organization to make it work for you. Just send us a note &lt;a href=&quot;https://ddev.com/contact&quot;&gt;via the contact page&lt;/a&gt; or any other way.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.paypal.com/donate?hosted_button_id=R42QBRNKKSFFL&quot;&gt;PayPal to DDEV&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Oops, are you missing or did I forget you?&lt;/h2&gt;
&lt;p&gt;Is your name or your organization&amp;#39;s name missing here? It&amp;#39;s easy to get it here. How much does DDEV&amp;#39;s support and ongoing maintenance mean to your organization?&lt;/p&gt;
&lt;p&gt;(If I made a mistake and left you out, let me know and I&amp;#39;ll edit this.)&lt;/p&gt;
&lt;p&gt;Do you have questions or want to talk (about sponsoring or anything else)? &lt;a href=&quot;https://ddev.com/contact/&quot;&gt;Contact us!&lt;/a&gt; or join us in &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>DDEV March 2025 Newsletter</title><link>https://ddev.com/blog/ddev-march-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-march-2025-newsletter</guid><description>DDEV March 2025 Newsletter</description><pubDate>Tue, 04 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/03/palisade-vinelands.jpg&quot; alt=&quot;Nancy Lewis &quot;Palisade Vinelands&quot;&quot;&gt;&lt;p&gt;&lt;strong&gt;Happy March!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV v1.24.3&lt;/strong&gt; was &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.3&quot;&gt;released&lt;/a&gt; earlier than planned for two major reasons: the new &lt;code&gt;generic&lt;/code&gt; web server type allows Node.js and other interesting possibilities, and an upcoming Docker engine release was going to be incompatible with current Mutagen version. &lt;strong&gt;We encourage you all to upgrade because of this upcoming incompatibility, thanks!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Open-Source For The Win&lt;/strong&gt;: See the details about how a future incompatibility with the Docker engine was pre-emptively caught and fixed, &lt;a href=&quot;open-source-for-the-win.md&quot;&gt;Open Source for the Win!&lt;/a&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Web-based DDEV Add-on Registry&lt;/strong&gt; is now live! Try it out at &lt;a href=&quot;https://addons.ddev.com&quot;&gt;https://addons.ddev.com&lt;/a&gt; and check out the &lt;a href=&quot;ddev-addon-registry-introduction.md&quot;&gt;introduction blog&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TYPO3 Community Budget Ideas: Please vote!&lt;/strong&gt;: We &lt;a href=&quot;https://talk.typo3.org/t/implement-mdns-for-ddev-name-resolution/6119/4&quot;&gt;applied for the Q2 approval process&lt;/a&gt; to fund a great feature for DDEV, supporting mDNS as a domain-name resolution technique. If you&amp;#39;re a member of the TYPO3 Association, you should have received an email to vote on this. We&amp;#39;d appreciate your vote!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Platform.sh has transferred domain names to DDEV&lt;/strong&gt;: Thanks again to &lt;a href=&quot;https://platform.sh&quot;&gt;Platform.sh&lt;/a&gt; for their ongoing support. As a part of the process in &lt;a href=&quot;platform-sh-ddev-funding-changes.md&quot;&gt;change of their support&lt;/a&gt;, they have transferred control of the &lt;code&gt;ddev.com&lt;/code&gt; and &lt;code&gt;ddev.site&lt;/code&gt; domain names to the DDEV Foundation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes and News&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The DDEV Advisory Group &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7031&quot;&gt;Annual Review and Planning Meeting&lt;/a&gt; is on Wednesday, March 5 (tomorrow!), and &lt;strong&gt;all are invited&lt;/strong&gt;. The Zoom link is in the agenda link. We&amp;#39;ll be looking at 2025 ambitions and 2024 review, we&amp;#39;d love to have you there!&lt;/li&gt;
&lt;li&gt;A review of DDEV&amp;#39;s year 2024 has been added to the &lt;a href=&quot;https://ddev.com/blog/2025-plans/&quot;&gt;2025 Plans and 2024 Review&lt;/a&gt; blog post. We&amp;#39;d love your feedback about both 2024 and the 2025 plans!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://thedroptimes.com&quot;&gt;The Drop Times&lt;/a&gt; rolled out an amazing promotion for DDEV, showing the current funding status against our goals. Now we need a community member to do the same thing for us in our website!
&lt;img src=&quot;https://ddev.com/img/blog/2025/03/the-drop-times-promotion.png&quot; alt=&quot;The Drop Times DDEV Promotion&quot;&gt;&lt;/li&gt;
&lt;li&gt;The promotion done by The Drop Times consumes DDEV&amp;#39;s current sponsorship information from the &lt;a href=&quot;https://github.com/ddev/sponsorship-data&quot;&gt;sponsorship-data&lt;/a&gt; repository, which has lots of potential for communicating about DDEV&amp;#39;s funding status. Today&amp;#39;s situation and totals are in &lt;a href=&quot;https://github.com/ddev/sponsorship-data/blob/main/data/all-sponsorships.json&quot;&gt;all-sponsorships.json&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Randy presented on &lt;a href=&quot;https://www.fldrupal.camp/session/divide-and-conquer-systematic-approach-troubleshooting-issues&quot;&gt;Divide and conquer: A systematic approach to troubleshooting issues&lt;/a&gt; at Florida Drupalcamp. The full recording is on the link.&lt;/li&gt;
&lt;li&gt;Blog: &lt;a href=&quot;https://www.webwash.net/drupal-cms-v1-installation-and-demo/&quot;&gt;Installing Drupal CMS with DDEV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Blog from Matthias Andrasch: &lt;a href=&quot;https://dev.to/mandrasch/vite-is-suddenly-not-working-anymore-due-to-cors-error-ddev-3673&quot;&gt;Vite suddenly not working due to CORS errors? 🧐 (DDEV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Docker has renewed DDEV&amp;#39;s &amp;quot;Docker-Sponsored Open Source&amp;quot; membership, meaning that DDEV users don&amp;#39;t have a pull limit on DDEV images on hub.docker.com. This is a great thing for DDEV. Thanks, Docker!&lt;/li&gt;
&lt;li&gt;We applied for the &lt;a href=&quot;https://summerofcode.withgoogle.com/&quot;&gt;Google Summer of Code&lt;/a&gt; but did not get accepted due to the high volume of applications and limited available slots. We&amp;#39;ll try again in the future!&lt;/li&gt;
&lt;li&gt;We&amp;#39;re working on integrating the excellent XHGui performance exploration GUI for Xhprof to DDEV. This work is being funded by the TYPO3 Community&amp;#39;s Q1 Community Budget Idea, and needs to be completed in March.&lt;/li&gt;
&lt;li&gt;The Gitpod that we have known and loved is shutting down. This affects DDEV contributors that have used it and makes &lt;a href=&quot;https://www.drupal.org/project/drupalpod/issues/3500792&quot;&gt;DrupalPod as it stands obsolete&lt;/a&gt;. If you&amp;#39;re interested in DrupalPod and will be at DrupalCon Atlanta, there is a Birds-of-a-Feather session scheduled on the path forward, 04:00pm - 04:30pm Tuesday, March 25, 2025.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Funding DDEV to allow both maintainers to work full-time on DDEV&lt;/strong&gt;: &lt;em&gt;We need your help and your organization&amp;#39;s help! Let me know if you need help getting this into your budget!&lt;/em&gt; Our key financial goal is to &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;fully fund @stasadev so he can work exclusively on DDEV&lt;/a&gt;. We&amp;#39;ve slipped back in recent months. We need about $3700/month in increased pledges from organizations and individuals. See &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Full information about supporting DDEV&lt;/a&gt;. We’re happy to invoice you, happy to &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;do a call discussing this&lt;/a&gt;, and would love it if you’d include DDEV in your budgeting process for this year or next. (Our current status: We receive about $6000/month, have been spending about $7000/month. Bank balance is about $9,000, up from $6,000 last month (progress!).)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy March from Randy Fay, DDEV Project Lead. It&amp;#39;s a delight to collaborate with you!&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>DDEV Add-on Registry Introduction</title><link>https://ddev.com/blog/ddev-addon-registry-introduction</link><guid isPermaLink="true">https://ddev.com/blog/ddev-addon-registry-introduction</guid><description>Introducing addons.ddev.com website</description><pubDate>Mon, 03 Mar 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-addon-registry.png&quot; alt=&quot;DDEV Add-on Registry website&quot;&gt;&lt;h2&gt;Welcome to the DDEV Add-on Registry&lt;/h2&gt;
&lt;p&gt;We&amp;#39;re excited to introduce &lt;a href=&quot;https://addons.ddev.com&quot;&gt;https://addons.ddev.com&lt;/a&gt;, a central hub where the community can explore, contribute to, and enhance the collection of DDEV add-ons.&lt;/p&gt;
&lt;p&gt;The source code is available and your contributions are encouraged at &lt;a href=&quot;https://github.com/ddev/addon-registry&quot;&gt;https://github.com/ddev/addon-registry&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Search the Add-ons&lt;/h2&gt;
&lt;p&gt;Need to find a specific add-on? Use the search field, and watch results update in real-time as you type.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-addon-search.gif&quot; alt=&quot;DDEV Add-on Search&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Sorting the Add-ons&lt;/h2&gt;
&lt;p&gt;Click on a column title to organize the entries based on that field. A second click will reverse the sort order, and a third click resets it back.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-addon-sort.gif&quot; alt=&quot;DDEV Add-on Sort&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Add-on Types&lt;/h2&gt;
&lt;p&gt;Add-ons fall into two categories: &lt;strong&gt;Official&lt;/strong&gt; add-ons, which are supported by the DDEV team, and &lt;strong&gt;Contrib&lt;/strong&gt; add-ons, which are supported by the community.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-addon-type.gif&quot; alt=&quot;DDEV Add-on Type&quot;&gt;&lt;/p&gt;
&lt;h2&gt;Engage by Leaving Comments&lt;/h2&gt;
&lt;p&gt;Want to share your thoughts or feedback on an add-on? Scroll to the bottom of an add-on&amp;#39;s page and click &amp;quot;Sign in with GitHub&amp;quot;. We use &lt;a href=&quot;https://giscus.app/&quot;&gt;giscus&lt;/a&gt; to manage comments, making it easy to join the conversation by authorizing your GitHub account. You can also react to other comments or add your own insights.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2025/03/ddev-addon-comment.gif&quot; alt=&quot;DDEV Add-on Comment&quot;&gt;&lt;/p&gt;
&lt;h2&gt;What&amp;#39;s Next?&lt;/h2&gt;
&lt;p&gt;The DDEV Add-on Registry is a living project, and we&amp;#39;re eager to involve the community in its future. If you have suggestions or want to contribute, head over to &lt;a href=&quot;https://github.com/ddev/addon-registry&quot;&gt;https://github.com/ddev/addon-registry&lt;/a&gt;. We look forward to your feedback and collaboration!&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow us on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Add-ons</category><category>Announcements</category></item><item><title>Open Source for the Win!</title><link>https://ddev.com/blog/open-source-for-the-win</link><guid isPermaLink="true">https://ddev.com/blog/open-source-for-the-win</guid><description>Open Source for the Win! How the DDEV community reported a problem early, and open-source maintainers responded, meaning people don&apos;t have to encounter it.</description><pubDate>Wed, 26 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/02/open-source-mutagen-docker-banner.jpeg&quot; alt=&quot;Open Source for the Win!&quot;&gt;&lt;h2&gt;DDEV v1.24.3 Release&lt;/h2&gt;
&lt;p&gt;Today we released &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.3&quot;&gt;DDEV v1.24.3&lt;/a&gt; ahead of schedule because of a wonderful set of open-source interactions. (There&amp;#39;s other important stuff in the release, but I&amp;#39;ll cover that later.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;We would appreciate it if you could upgrade soon, especially if you&amp;#39;re on macOS or traditional Windows, so that we don&amp;#39;t have to answer questions about this when it starts to hit users.&lt;/strong&gt;&lt;/p&gt;
&lt;h2&gt;Mutagen Problem Report&lt;/h2&gt;
&lt;p&gt;On Monday, two days ago, @LoganHornbuckle reported &lt;a href=&quot;https://github.com/ddev/ddev/issues/7015&quot;&gt;a problem&lt;/a&gt; (apparently with Mutagen or Docker) we had never seen before. They helped extensively with followup, and it turned out that they had done a &lt;code&gt;colima update&lt;/code&gt; and as a result gotten the new Docker/Moby Engine version 28.0.0.&lt;/p&gt;
&lt;p&gt;The update exposed an incompatibility between Mutagen and Docker 28, which showed up as a fatal error, completely breaking DDEV&amp;#39;s Mutagen support for Docker 28.&lt;/p&gt;
&lt;p&gt;Once we understood the situation, we were able to reproduce the problem, and assumed it was a problem with Docker 28.&lt;/p&gt;
&lt;h2&gt;The Fix to Mutagen&lt;/h2&gt;
&lt;p&gt;We contacted @xenoscopic (Jacob Howard), the maintainer of Mutagen (now with Docker), and he was able to reproduce it immediately. By the end of the day, he had diagnosed it and provided a new release! (It turned out to be a place where Mutagen had worked around a Docker Engine quirk, and the Docker quirk got fixed, breaking Mutagen.)&lt;/p&gt;
&lt;p&gt;So here we are just two days later with a pre-emptive DDEV release v1.24.3 that should prevent most people from ever seeing the Mutagen problem.&lt;/p&gt;
&lt;h2&gt;THANKS!&lt;/h2&gt;
&lt;p&gt;Thanks to @LoganHornbuckle and the community for keeping in touch, reporting, and helping to sort out problems. Amazing thanks to @xenoscopic for the quick diagnosis and fix. And thanks to Docker, Inc. for the wonderful open-source Docker project that underlies all of the available Docker providers, not just Docker Desktop. And of course thanks for supporting @xenoscopic&amp;#39;s ongoing maintenance of Mutagen.&lt;/p&gt;
&lt;p&gt;Open source software is amazing!&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category></item><item><title>DDEV February 2025 Newsletter</title><link>https://ddev.com/blog/ddev-feb-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-feb-2025-newsletter</guid><description>DDEV February 2025 Newsletter</description><pubDate>Mon, 10 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/02/nancy-lewis-winter-scene.jpg&quot; alt=&quot;Nancy Lewis winter scene painting&quot;&gt;&lt;p&gt;&lt;strong&gt;Happy February!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV v1.24.2&lt;/strong&gt; was &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.2&quot;&gt;released&lt;/a&gt; with &lt;a href=&quot;https://ddev.com/blog/database-improvements&quot;&gt;MySQL 8.4 support&lt;/a&gt; and improved &lt;code&gt;ddev composer create&lt;/code&gt; making it nearly compatible with &lt;code&gt;composer create-project&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes and News&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;a href=&quot;https://github.com/orgs/ddev/discussions/6853&quot;&gt;DDEV Advisory Group&lt;/a&gt; met January 8. The primary topic of discussion was the &lt;a href=&quot;https://ddev.com/blog/platform-sh-ddev-funding-changes&quot;&gt;change in DDEV&amp;#39;s funding&lt;/a&gt; and budgeting response to it. Our decision was to continue the arrangement with Stas as-is (bill hours at $50/hour, cap $4000/month). Randy will also bill at $50/hour with cap of $4000, but limited by always trying to leave $6000 in the bank.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;We need your input!&lt;/strong&gt; Please take a look at the proposed &lt;a href=&quot;2025-plans.md&quot;&gt;2025 Plans for DDEV&lt;/a&gt; and let us know your opinion, how these things should be ordered, and what we might have missed!&lt;/li&gt;
&lt;li&gt;macOS users will be interested in the (not-DDEV-focused) &lt;a href=&quot;https://www.paolomainardi.com/posts/docker-performance-macos-2025/&quot;&gt;Docker Performance macOS 2025&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/open-source-pledge&quot;&gt;The Open Source Pledge and DDEV: A Path to Sustainability&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/database-improvements/&quot;&gt;MySQL 8.4 is now in DDEV v1.24.2&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;DDEV v1.24.2 has improved argument handling for &lt;code&gt;ddev composer create&lt;/code&gt;, making it nearly compatible with &lt;code&gt;composer create-project&lt;/code&gt;. Additionally, the &lt;code&gt;ddev composer create-project&lt;/code&gt; alias has been added for improved usability.&lt;/li&gt;
&lt;li&gt;The Gitpod that we have known and loved is shutting down. This affects DDEV contributors that have used it and makes &lt;a href=&quot;https://www.drupal.org/project/drupalpod/issues/3500792&quot;&gt;DrupalPod as it stands obsolete&lt;/a&gt;. If you&amp;#39;re interested in DrupalPod and will be at DrupalCon Atlanta, there is a Birds-of-a-Feather session scheduled on the path forward, 04:00pm - 04:30pm Tuesday, March 25, 2025.&lt;/li&gt;
&lt;li&gt;The Drop Times did a nice and extensive &lt;a href=&quot;https://www.thedroptimes.com/interview/45389/making-ddev-past-present-and-future-in-focus&quot;&gt;interview with Randy&lt;/a&gt; and &lt;a href=&quot;https://www.youtube.com/watch?v=EctDtSZcBhU&quot;&gt;video interview&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Tag1 Consulting did a performance comparison of the new Drupal CMS vs WordPress, (using DDEV for everything). See &lt;a href=&quot;https://www.tag1consulting.com/blog/drupal-cms-vs-wordpress-performance-2025&quot;&gt;Drupal CMS vs WordPress Performance&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;The latest DDEV Quickstarts in the docs are for &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/#drupal-drupal-cms&quot;&gt;Drupal CMS&lt;/a&gt; and &lt;a href=&quot;https://docs.ddev.com/en/latest/users/quickstart/#processwire&quot;&gt;ProcessWire&lt;/a&gt;! Congratulations to the Drupal community on Drupal CMS, and welcome ProcessWire folks. Thanks to &lt;a href=&quot;https://github.com/BernhardBaumrock&quot;&gt;Bernhard Baumrock&lt;/a&gt; for the ProcessWire initiative!&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=WkOoPEbtHwI&quot;&gt;DDEV: We use it on all our projects&lt;/a&gt;. (Followups in &lt;a href=&quot;https://www.reddit.com/r/PHP/comments/1ijsev2/ddev_we_use_it_on_all_our_projects/&quot;&gt;Reddit r/php&lt;/a&gt; and &lt;a href=&quot;https://www.reddit.com/r/drupal/comments/1ijsemd/ddev_we_use_it_on_all_our_projects/&quot;&gt;Reddit r/drupal&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Ongoing DDEV Work&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Node.js&lt;/strong&gt; improved support: People have asked for some time for Node.js to be the primary web server (instead of Nginx+php-fpm, etc), and now it can be done in a number of ways. This is now in &lt;a href=&quot;https://docs.ddev.com/en/stable/developers/building-contributing/#testing-latest-commits-on-head&quot;&gt;DDEV HEAD&lt;/a&gt; and there are Quickstarts for &lt;a href=&quot;https://docs.ddev.com/en/latest/users/quickstart/#nodejs-nodejs-web-server&quot;&gt;Simple Node.js&lt;/a&gt; and &lt;a href=&quot;https://docs.ddev.com/en/latest/users/quickstart/#nodejs-sveltekit&quot;&gt;SvelteKit&lt;/a&gt;. Incidentally, this also provides experimental support for &lt;a href=&quot;https://frankenphp.dev/&quot;&gt;FrankenPHP&lt;/a&gt; and provides a &lt;a href=&quot;https://docs.ddev.com/en/latest/users/quickstart/#generic-frankenphp&quot;&gt;Quickstart&lt;/a&gt; for it as a demonstration of the &amp;quot;generic&amp;quot; web server type.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Web-based Add-on Registry&lt;/strong&gt;: As add-ons have become so very popular it&amp;#39;s hard to sort them out and understand which ones are meaningful for a particular need. This long-term goal is nearing completion as Stas has a proof of concept and now has to push it through to a maintained production status.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Automated Tests for Quickstarts&lt;/strong&gt;: You won&amp;#39;t see these, but it&amp;#39;s a big step for us. Because our &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/&quot;&gt;Quickstarts&lt;/a&gt; are so dependent on the behavior of the upstream projects, it&amp;#39;s always been hard for us to know when the target project has had a change that invalidates them. Now we have automated tests for the quickstarts of number of project types, and will add others as maintenance is done. Thanks to &lt;a href=&quot;https://github.com/rpkoller&quot;&gt;Ralf Koller&lt;/a&gt; for extensive work on the Drupal, WordPress, and TYPO3 quickstarts.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Funding situation data feed&lt;/strong&gt;: Aiming for ever-increasing transparency in the DDEV funding situation, we now have an automatically-updated feed showing our &lt;a href=&quot;https://github.com/ddev/sponsorship-data&quot;&gt;funding situation from all sources&lt;/a&gt;. You can see the &lt;a href=&quot;https://ddev.com/s/sponsorship-data.json&quot;&gt;exact situation&lt;/a&gt; at any time. We expect to use this feed in the message-of-the-day on DDEV, as well as ddev.com and the DDEV README.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;New contributors and maintainers&lt;/strong&gt;: As DDEV&amp;#39;s community grows, we always need new contributors and maintainers. We love to get contributors trained and get privileges to maintainers as needed! We already have lots of &lt;a href=&quot;https://ddev.com/blog/category/training/&quot;&gt;Contributor Training&lt;/a&gt; material, and &lt;a href=&quot;https://docs.ddev.com/en/stable/developers/&quot;&gt;docs on how to contribute&lt;/a&gt; but we&amp;#39;ll do anything you ask for! Need help with something? Need updates? Join us in &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt; or &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;make an appointment with me&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;The next &lt;strong&gt;DDEV Advisory Group Meeting&lt;/strong&gt; is Wednesday, March 5, 2025. We&amp;#39;ll be doing a review of DDEV&amp;#39;s 2024 and a discussion of &lt;a href=&quot;2025-plans.md&quot;&gt;proposed plans for 2025&lt;/a&gt;. This is open to all and we&amp;#39;d love to have you!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Funding DDEV to allow both maintainers to work full-time on DDEV&lt;/strong&gt;: &lt;em&gt;We need your help and your organization&amp;#39;s help! Let me know if you need help getting this into your budget!&lt;/em&gt; Our key financial goal is to &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;fully fund @stasadev so he can work exclusively on DDEV&lt;/a&gt;. We&amp;#39;ve slipped back in recent months. We need about $3700/month in increased pledges from organizations and individuals. See &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Full information about supporting DDEV&lt;/a&gt;. We’re happy to invoice you, happy to &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;do a call discussing this&lt;/a&gt;, and would love it if you’d include DDEV in your 2025 budgeting process. (Our current status: We receive about $3000/month, have been spending about $3000-$4000/month. Bank balance is about $6,000, down from $8,600 last month.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy February from Randy Fay, DDEV Project Lead. It&amp;#39;s a delight to collaborate with you!&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>DDEV 2025 Plans and 2024 Review</title><link>https://ddev.com/blog/2025-plans</link><guid isPermaLink="true">https://ddev.com/blog/2025-plans</guid><description>DDEV 2025 Plans and 2024 Review</description><pubDate>Sat, 08 Feb 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/02/ddev-2025-plans.png&quot; alt=&quot;Futuristic view of DDEV 2025 plans&quot;&gt;&lt;h1&gt;2025 Plans and Notes&lt;/h1&gt;
&lt;p&gt;Every year we try to clarify goals early, and here we go for 2025! We&amp;#39;d love to have your thoughts and opinions! Some of the things we &lt;a href=&quot;2024-plans.md&quot;&gt;planned in 2024&lt;/a&gt; aren&amp;#39;t quite done yet, but we&amp;#39;re working and planning and responding to your needs.&lt;/p&gt;
&lt;p&gt;At the DDEV Advisory Group&amp;#39;s 2-hour &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7031&quot;&gt;annual review/planning meeting on March 5, 2025&lt;/a&gt;, we&amp;#39;ll talk about plans and priorities for 2025. You are invited! The meeting link is in the meeting page.&lt;/p&gt;
&lt;p&gt;We&amp;#39;d love to have your input as regular users as we work through these priorities.&lt;/p&gt;
&lt;h2&gt;Community&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Continue outstanding user support&lt;/strong&gt; even with growth of our user base. This remains a key priority from last year, but we still need to involve the entire community (meaning you!) in all the places.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Begin formal governance for the DDEV Foundation&lt;/strong&gt;. We&amp;#39;ve been talking about this in the Advisory Group for years, but this year I&amp;#39;ll propose a 3-person board for the DDEV Foundation, where I retain operational control, but we have at least one other board member fully enabled on financial controls and payments. Future years can bring future refinements.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Sustainability and Finance&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;Improve our Marketing CTA and information&lt;/strong&gt;: The &lt;a href=&quot;https://ddev.com/support-ddev/&quot;&gt;ddev.com &amp;quot;Support DDEV&amp;quot;&lt;/a&gt; page says lots of things, but the financial CTA gets lost there. We need to communicate successfully:&lt;ul&gt;
&lt;li&gt;For the project to be sustainable, the community will need to support the two developers who are working full-time on it.&lt;/li&gt;
&lt;li&gt;Show the many ways that support can be done can be done.&lt;/li&gt;
&lt;li&gt;Communicate clearly our current situation. (&lt;a href=&quot;https://thedroptimes.com&quot;&gt;The Drop Times&lt;/a&gt; rolled out an amazing promotion for DDEV, showing the current funding status against our goals. Now we need a community member to do the same thing for us in our website! See the &lt;a href=&quot;ddev-march-2025-newsletter.md&quot;&gt;March 2025 Newsletter&lt;/a&gt;).&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;Continue to develop contributors and maintainers&lt;/strong&gt;: As the project grows, we need more skilled contributors and maintainers. (The only difference between those is that maintainers typically have a higher level of direct access to project resources, but as a wide-open source project, almost all interested contributors can accomplish almost anything without enhanced privileges.) In the last two years, we&amp;#39;ve had &lt;a href=&quot;https://ddev.com/blog/category/training&quot;&gt;quite a lot of contributor trainings&lt;/a&gt;, and anecdotes indicate that people are using those recordings and blogs for training, but the actual attendance at them was not impressive. I&amp;#39;m thinking that this year these topics should probably be addressed with screenshare recordings and updated blogs instead of calendar-scheduled events. Given the financial struggles in our contributors&amp;#39; world, I doubt that we&amp;#39;ll be able to add paid maintainers in 2025, I&amp;#39;m most interested right now in the reasonable goal of retaining and paying the two amazing maintainers we currently have.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Features and Initiatives&lt;/h2&gt;
&lt;h3&gt;Funded and Work-In-Progress Initiatives&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;The TYPO3 Association has agreed to fund the &lt;a href=&quot;https://typo3.org/article/four-ideas-to-be-funded-in-quarter-1-2025&quot;&gt;integration of XHGui into DDEV&lt;/a&gt; as part of their Community Budget Ideas. Part of this work has already been done in the &lt;a href=&quot;https://github.com/ddev/ddev-xhgui&quot;&gt;ddev/ddev-xhgui&lt;/a&gt; project, and it must be completed by March 31, 2025.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.ddev.com/en/latest/users/extend/customization-extendibility/#using-nodejs-as-ddevs-primary-web-server&quot;&gt;Top-level Node.js support&lt;/a&gt; as planned in 2024 is included in DDEV v1.24.3+. There will be a number of follow-up opportunities, including Caddy support, etc.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://addons.ddev.com&quot;&gt;Web-based Add-on Registry&lt;/a&gt; is &lt;strong&gt;live&lt;/strong&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;a name=&quot;proposed-features&quot;&gt;&lt;/a&gt;&lt;/p&gt;
&lt;h3&gt;Proposed Features and Initiatives&lt;/h3&gt;
&lt;ol&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/6663&quot;&gt;Implement mDNS as an alternate name resolution technique&lt;/a&gt; in addition to DNS and hosts file manipulation. Our traditional use of DNS and hosts-file manipulation have been successful, but mDNS might allow avoiding hosts-file manipulation, especially with non-ddev.site URLs and when internet DNS is not available. This has been submitted for funding to the TYPO3 Community &lt;a href=&quot;https://typo3.org/article/call-for-community-budget-ideas-q2-2025&quot;&gt;Q2 Community Budget Ideas&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/6912&quot;&gt;Allow Add-ons to include other add-ons&lt;/a&gt;: Add-ons can already require other add-ons, but they should be able to automatically result in a download.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/6533&quot;&gt;Go-based Upsun Add-on like ddev-platformsh&lt;/a&gt;. (This would pioneer golang-based add-ons; Go is probably a much better language for complicated add-ons of this type.)&lt;/li&gt;
&lt;li&gt;Rewrite ddev-platformsh Add-on in Go: Assuming success of the Upsun add-on, it would be great to backport that work to &lt;a href=&quot;https://github.com/ddev/ddev-platformsh&quot;&gt;ddev-platformsh&lt;/a&gt;. It&amp;#39;s even possible that the two add-ons could be combined into one and maintained in one place.&lt;/li&gt;
&lt;li&gt;Develop a replacement for &amp;quot;Gitpod Classic&amp;quot;, which has EOL in April, 2025. This may not need much more than improved GitHub Codespaces support, but we have loved Gitpod and hope to have something to replace it.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/6461&quot;&gt;Improve self-diagnose capability&lt;/a&gt; . We currently have ddev debug test but it would be great to implement something that was readable and actionable for ordinary mortals.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/6892&quot;&gt;DDEV&amp;#39;s Message-of-the-day and ddev.com should show current funding status and need&lt;/a&gt;. We now have an automatically updated JSON feed that can make this possible.&lt;/li&gt;
&lt;li&gt;DDEV Windows/WSL2 packaging and installation: The traditional Windows installer needs work, and the WSL2 install scripts are written in hard-to-maintain PowerShell. This work can be consolidated and improved, including &lt;a href=&quot;https://github.com/ddev/ddev/issues/6440&quot;&gt;improving the Windows hosts-file escalation technique&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/6441&quot;&gt;Change &lt;code&gt;ddev share&lt;/code&gt; to a more configurable custom-command-based option&lt;/a&gt;. Instead of always using &lt;code&gt;ngrok&lt;/code&gt; there should be multiple ways to share.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/ddev/ddev/issues/5763&quot;&gt;Rework configuration system using Viper&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;(We applied to the &lt;a href=&quot;https://summerofcode.withgoogle.com/&quot;&gt;Google Summer of Code&lt;/a&gt;, hoping to mentor contributors via that program. We did not get accepted, but will try in future years.)&lt;/p&gt;
&lt;p&gt;Do you see other important things in the &lt;a href=&quot;https://github.com/ddev/ddev/issues&quot;&gt;issue queue&lt;/a&gt; or elsewhere that are important to you? Are there frictions that impact your work that DDEV could fix? Please let us know.&lt;/p&gt;
&lt;p&gt;We would dearly love to have your input on these as the planning process goes forward. You can respond so very many ways in all the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/support/&quot;&gt;support venues&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;2025 Planning Additional Notes&lt;/h2&gt;
&lt;h3&gt;Recognized Risks&lt;/h3&gt;
&lt;p&gt;We are a very small organization, so we try to pay careful attention to the risks as we go forward.&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Key maintainer Stas lives in a very volatile situation in Ukraine, and none of us knows how to predict the future. Physical risks, communication risks, and financial transfer risks are always possible.&lt;/li&gt;
&lt;li&gt;Randy is not young and can always face new risks.&lt;/li&gt;
&lt;li&gt;The financial outlook for discretionary funding from agencies and hosting companies (and perhaps individuals) is horrible right now.&lt;/li&gt;
&lt;li&gt;Any of our maintainers can become overworked or discouraged or can burn out. We take the risk of burnout and overwork very seriously and are careful to talk about them and try to prevent them.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Minor Notes&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;I (Randy) do expect to work less in 2025, but that hasn&amp;#39;t worked out so far. However, I am planning a bicycle trip that will make me mostly out of touch from late May through much of June. Stas has the keys to the kingdom and all the capabilities needed to make sure everything runs smoothly in my absence.&lt;/li&gt;
&lt;li&gt;Updated blogs about key DDEV ideas are needed. For example, an updated blog about how DDEV is different from roll-your-own or bare metal, especially multiple database and PHP versions, and team share.&lt;/li&gt;
&lt;li&gt;We need to review how key features are exposed in the documentation and in &lt;a href=&quot;https://ddev.com&quot;&gt;https://ddev.com&lt;/a&gt;. There are a number of cases the docs and website reflect DDEV as it was a few years ago. For example, add-ons, which are a fundamental feature, are not exposed clearly.&lt;/li&gt;
&lt;li&gt;More screenshare blogs for ordinary DDEV users are important. We have many out there, but some are seriously aged.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;2024 DDEV Review&lt;/h2&gt;
&lt;p&gt;This section is updated for our annual review of the past year at the &lt;a href=&quot;https://github.com/orgs/ddev/discussions/7031&quot;&gt;DDEV Advisory Group&lt;/a&gt;.&lt;/p&gt;
&lt;h3&gt;Great Things&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;Stas Zhuk as a maintainer has been a massive success in so many ways. Not only is he completely technically fluent with DDEV in every area, but he loves supporting DDEV users, and we&amp;#39;ve been progressively successful in making sure he has adequate control of most areas of external accounts, etc.&lt;/li&gt;
&lt;li&gt;Despite our challenges, our finances are currently in balance, and our expenditures are within our means. This is a result of many wonderful sponsors, both individuals and organizations. Thank you!&lt;/li&gt;
&lt;li&gt;Outstanding contributors like tyler36, GuySartorelli, Hanoii, Bernardo Martinez, and Ralf Koller and many others continued to improve the project.&lt;/li&gt;
&lt;li&gt;We continue to offer world-class support to DDEV users in many venues. In most cases, our community&amp;#39;s response is better than any commercial organization can offer. I think this has to do with the quality of the software (most people don&amp;#39;t need support) and also with our community&amp;#39;s overall commitment to generous and friendly support.&lt;/li&gt;
&lt;li&gt;We worked hard at &lt;a href=&quot;https://ddev.com/blog/category/training/&quot;&gt;Live Contributor Training&lt;/a&gt;, and recorded blogs and training sessions, which is great. It&amp;#39;s not clear how successful these were in enabling new contributors, but occasional reports say that the recorded sessions have been helpful.&lt;/li&gt;
&lt;li&gt;Prompted largely by The Drop Times we created the automatically-updated &lt;a href=&quot;https://github.com/ddev/sponsorship-data&quot;&gt;sponsorship-data&lt;/a&gt; repository, which has lots of potential for communicating about DDEV&amp;#39;s funding status.&lt;/li&gt;
&lt;li&gt;The &lt;a href=&quot;https://addons.ddev.com&quot;&gt;addons.ddev.com&lt;/a&gt; web-based add-on registry is now live.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Less Great Things&lt;/h3&gt;
&lt;ul&gt;
&lt;li&gt;We didn&amp;#39;t really make progress with marketing or promotion in 2024. In fact, hosting companies and agencies with a clear stake in DDEV&amp;#39;s success did not step up and even started ghosting discussions about this. This is likely a result of market conditions, but it&amp;#39;s uncomfortable for us.&lt;/li&gt;
&lt;li&gt;We tried to improve our marketing situation by engaging Open Strategy Partners, but didn&amp;#39;t achieve all we had hoped, and had to end the arrangement earlier than planned because our funding was inadequate to continue it.&lt;/li&gt;
&lt;li&gt;Randy is definitely tired of reaching out to organizations and finding that they either don&amp;#39;t respond, or promise a response and don&amp;#39;t follow through, or just don&amp;#39;t have discretionary funds available and are unable to support DDEV at this point.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;platform-sh-ddev-funding-changes.md&quot;&gt;Platform.sh changed their funding&lt;/a&gt;. While their ongoing commitment remains generous, this was certainly a challenge.&lt;/li&gt;
&lt;li&gt;We never did see a return of amazing contributor Simon Gilli and still mourn his loss. Nobody knows what happened to him. Of course this is a reminder that none of us and none of our contributions are guaranteed into the future and is another reason to shore up the organization to continue into the future with or without specific individuals.&lt;/li&gt;
&lt;/ul&gt;
&lt;h3&gt;Financial Status&lt;/h3&gt;
&lt;p&gt;Our full year financial reports, including balance sheet and profit-and-loss, were posted in the &lt;a href=&quot;https://github.com/orgs/ddev/discussions/6853&quot;&gt;2025-01-08 Advisory Group Meeting&lt;/a&gt;. You&amp;#39;ll see we ended the year with about $8,500 in the bank.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow us on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category></item><item><title>DDEV January 2025 Newsletter</title><link>https://ddev.com/blog/ddev-jan-2025-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-jan-2025-newsletter</guid><description>DDEV January 2025 Newsletter</description><pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2025/01/mtgarfield.jpg&quot; alt=&quot;Mount Garfield over Palisade, Colorado, 2025-01-07&quot;&gt;&lt;p&gt;&lt;strong&gt;Happy New Year DDEV Community!&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;Our most important news of the month is both bad and good, about Platform.sh change in funding of DDEV:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Our lead sponsor, Platform.sh, has decided to reduce its sponsorship level.&lt;/li&gt;
&lt;li&gt;Platform.sh will also transfer to the DDEV Foundation the &amp;quot;DDEV&amp;quot; trademark and the domains that go with it.&lt;/li&gt;
&lt;li&gt;Platform.sh will continue sponsoring DDEV at a lower but still generous and critical financial level. You can read all about it in the &lt;a href=&quot;platform-sh-ddev-funding-changes.md&quot;&gt;change announcement blog&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;TL;DR: we need every organization and individual to step up their financial support in order to ensure DDEV&amp;#39;s future.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DDEV v1.24.1&lt;/strong&gt; was &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.1&quot;&gt;released&lt;/a&gt; with minor changes.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV&amp;#39;s TYPO3 Community Budget Idea was accepted!&lt;/strong&gt; TYPO3&amp;#39;s &lt;a href=&quot;https://typo3.org/article/budget-2025-ideas-for-quarter-1-2025-published-vote-now&quot;&gt;community budget process&lt;/a&gt; is an outstanding process for funding community ideas. We&amp;#39;ll be improving DDEV&amp;#39;s xhprof and xhgui even beyond where &lt;a href=&quot;https://github.com/tyler36&quot;&gt;@tyler36&lt;/a&gt; has already taken the &lt;a href=&quot;https://github.com/ddev/ddev-xhgui&quot;&gt;DDEV xhgui add-on&lt;/a&gt; and incorporate it into core, and at completion the TYPO3 Association will fund the project for €7500, a fantastic contribution.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes and News&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/ddev/discussions/6853&quot;&gt;DDEV Advisory Group Meeting&lt;/a&gt;. This month&amp;#39;s meeting is Wednesday, January 8, 2025, and is a critical discussion of our financial situation, budget, and plans based on recent news.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;database-improvements.md&quot;&gt;DDEV Database Support Improvements and MySQL 8.4&lt;/a&gt; - read all about upstream improvements and performance improvements, maintenance improvements, and import measurement improvements.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;platform-sh-ddev-funding-changes.md&quot;&gt;Changes in Platform.sh Funding of DDEV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.computerminds.co.uk/articles/ddev-solr-and-platformsh&quot;&gt;DDEV, solr, and platform.sh&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://joshuami.com/blog/2024-12/blog-drupal-cms-starshot-kinda-now/&quot;&gt;Joshuami blog on Drupal CMS (via DDEV)&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.thedroptimes.com/44845/how-test-drupal-11-using-cypress-and-ddev-drupaladicto-explains&quot;&gt;Testing Drupal 11 with Cypress and DDEV&lt;/a&gt; shows how to use &lt;a href=&quot;https://github.com/tyler36&quot;&gt;@tyler36&lt;/a&gt;&amp;#39;s excellent &lt;a href=&quot;https://github.com/tyler36/ddev-cypress&quot;&gt;Cypress add-on for DDEV&lt;/a&gt;. (The linked YouTube video is in Spanish.)&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://docs.contao.org/manual/en/guides/local-installation/ddev/&quot;&gt;Contao CMS docs show preferred DDEV approach&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;DDEV Releases and announcements are now made on &lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt; as well as other social networks, but no longer on X/Twitter.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Funding DDEV and especially to help Maintainer Stas go full-time on DDEV&lt;/strong&gt;: &lt;em&gt;We need your help and your organization&amp;#39;s help! Let me know if you need help getting this into your 2025 budget!&lt;/em&gt; Our key financial goal is to &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;fully fund @stasadev so he can work exclusively on DDEV&lt;/a&gt;. We&amp;#39;ve slipped back in recent months. We need about $3700/month in increased pledges from organizations and individuals. See &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Full information about supporting DDEV&lt;/a&gt;. We’re happy to invoice you, happy to &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;do a call discussing this&lt;/a&gt;, and would love it if you’d include DDEV in your 2025 budgeting process. (Our current status: We receive about $3000/month, have been spending about $3000-$4000/month. Bank balance is about $8683, down from $9,300 last month.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy January from Randy Fay, DDEV Project Lead.&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>The Open Source Pledge and DDEV: A Path to Sustainability</title><link>https://ddev.com/blog/open-source-pledge</link><guid isPermaLink="true">https://ddev.com/blog/open-source-pledge</guid><description>The Open Source Pledge and DDEV: A Path to Sustainability</description><pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/12/opensourcepledge-logo-horiz-color-opengraph.svg&quot; alt=&quot;Open Source Pledge Logo&quot;&gt;&lt;h2&gt;What is the Open Source Pledge?&lt;/h2&gt;
&lt;p&gt;Open-source software powers a massive part of the digital economy, but its sustainability (as with DDEV) often relies on voluntary contributions, which can be precarious. The &lt;a href=&quot;https://opensourcepledge.com/&quot;&gt;Open Source Pledge&lt;/a&gt; offers a framework for organizations to support the tools they rely on, setting an industry standard of USD$2000/developer/year to fund open-source projects. The idea is to establish sustainable funding and ensure the longevity of vital projects like DDEV and all the upstream projects it depends on.&lt;/p&gt;
&lt;h2&gt;DDEV’s Sustainability Goals&lt;/h2&gt;
&lt;p&gt;DDEV is a powerful local development environment designed for developers working with CMS platforms and e-commerce systems. Like many open-source tools, DDEV thrives on community contributions and volunteer maintainers. However, this model limits the ability to scale development efforts. To address this, we’ve been exploring ways to fund maintainers like key maintainer Stas Zhuk: &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;Let’s Fully Fund Maintainer Stas&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;The Open Source Pledge aligns with DDEV’s goals by setting a clear benchmark for funding. Agencies and other organizations that rely on DDEV as part of their toolchain can use this pledge to estimate their contribution to projects they depend on.&lt;/p&gt;
&lt;h2&gt;Price Anchoring: Why $2000 Matters&lt;/h2&gt;
&lt;p&gt;The USD$2000 per-developer per-year price point serves as a clear anchor, guiding organizations to think practically about supporting open source. Consider a web development agency using DDEV alongside other tools like CMS platforms, CI/CD systems, and libraries. If DDEV represents 10% of their overall toolchain, the agency might allocate $200 per developer per year to support DDEV.&lt;/p&gt;
&lt;p&gt;While the percentage will vary, the Open Source Pledge provides a starting point for companies to quantify their support. For DDEV, this transparency can bridge the gap between reliance and sustainability.&lt;/p&gt;
&lt;h2&gt;Challenges with Current Models&lt;/h2&gt;
&lt;p&gt;Tools like &lt;a href=&quot;https://thanks.dev&quot;&gt;thanks.dev&lt;/a&gt; and &lt;a href=&quot;https://tidelift.com/&quot;&gt;Tidelift&lt;/a&gt; attempt to address open-source funding by analyzing build files and distributing donations. While effective for libraries, these models fall short for tools like DDEV, which exist outside dependency management systems.&lt;/p&gt;
&lt;p&gt;DDEV isn’t listed in &lt;code&gt;package.json&lt;/code&gt; or &lt;code&gt;composer.json&lt;/code&gt; files; it’s an environment where development happens. This distinction means DDEV doesn’t benefit from algorithmic funding models, making direct acknowledgment and support from users critical.&lt;/p&gt;
&lt;h2&gt;A Call to Action&lt;/h2&gt;
&lt;p&gt;For companies and agencies using DDEV, adopting the Open Source Pledge isn’t just about numbers -- it’s about recognizing the value of all the tools that enable your success. By taking the pledge, you’re contributing to the sustainability of an ecosystem that empowers your work.&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;Sign the &lt;a href=&quot;https://opensourcepledge.com/join/&quot;&gt;Open Source Pledge&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;Choose the portion that should be allocated to make DDEV a sustainable project and commit to its funding.&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We know that these choices require organizational action, and we&amp;#39;re happy to help communication with your organization. DDEV&amp;#39;s financial affairs are handled through the US nonprofit &lt;a href=&quot;https://ddev.com/foundation&quot;&gt;DDEV Foundation&lt;/a&gt; so it&amp;#39;s easy to fund, with clear management and reporting. We&amp;#39;re happy to talk to your boss about any facet of this process, see the &lt;a href=&quot;https://ddev.com/contact&quot;&gt;Contact page&lt;/a&gt;.&lt;/p&gt;
&lt;h2&gt;Look to the Future!&lt;/h2&gt;
&lt;p&gt;Imagine a day when the tools you rely on for development--like DDEV--suddenly (or gradually) stop working reliably. You&amp;#39;ve seen this happen before. Without sustainable funding, this could be a reality for countless open-source projects. We must all work together to support this critical ecosystem. You count on expert, up-to-date maintenance and improvement of the project to support your clients. It&amp;#39;s time to figure out how to make that maintenance sustainable.&lt;/p&gt;
&lt;p&gt;Full information about the many ways to support DDEV as an organization or individually is at &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;GitHub Sponsors&lt;/a&gt;. Send us a note (&lt;code&gt;randy.fay (at) ddev.com&lt;/code&gt;) or &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;make an appointment&lt;/a&gt; to talk about your organization&amp;#39;s sponsorship.&lt;/p&gt;
&lt;p&gt;Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. And we&amp;#39;d love to have you sign up for the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;monthly newsletter&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>Changes in Platform.sh Funding of DDEV</title><link>https://ddev.com/blog/platform-sh-ddev-funding-changes</link><guid isPermaLink="true">https://ddev.com/blog/platform-sh-ddev-funding-changes</guid><description>Changes in Platform.sh Funding of DDEV</description><pubDate>Mon, 06 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2022/05/ddev-platformsh.jpg&quot; alt=&quot;DDEV + Platform.sh&quot;&gt;&lt;p&gt;As many of you know, &lt;a href=&quot;https://platform.sh&quot;&gt;Platform.sh&lt;/a&gt; is a key supporter and funder of DDEV. They generously stepped in to become the lead sponsor of DDEV and rescue the &amp;quot;DDEV&amp;quot; trademark and its use &lt;a href=&quot;platform-sh-becomes-a-lead-sponsor-of-ddev.md&quot;&gt;in 2022&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Of course, time moves along and sometimes organizations have to change their priorities, and in 2025 Platform.sh has decided to change its approach, but still remains a generous lead sponsor at the &lt;em&gt;partner&lt;/em&gt; level. (Your organization can join them!)&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Instead of funding maintainer Randy Fay as an employee, Platform.sh will fund the DDEV Foundation with a generous €3000/month.&lt;/li&gt;
&lt;li&gt;Platform.sh will transfer the &amp;quot;DDEV&amp;quot; trademark and control of the &lt;code&gt;ddev.com&lt;/code&gt; and &lt;code&gt;ddev.site&lt;/code&gt; domain names to the DDEV Foundation.&lt;/li&gt;
&lt;li&gt;We&amp;#39;ll continue to maintain the &lt;a href=&quot;https://github.com/ddev/ddev-platformsh&quot;&gt;ddev-platformsh&lt;/a&gt; add-on and explore an &lt;a href=&quot;https://upsun.com&quot;&gt;Upsun&lt;/a&gt; add-on.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;We don&amp;#39;t want to sugar-coat this too much. On the one hand, this is a reduction of about 60% in Platform&amp;#39;s support of DDEV, and it will be an ongoing challenge to replace it. But on the other hand, Platform&amp;#39;s generous ongoing support will still amount to about 50% of our total income.&lt;/p&gt;
&lt;p&gt;We&amp;#39;ll be preparing updated financial plans for 2025 to adjust to this change, and continue to be enormously thankful for the support of Platform.sh!&lt;/p&gt;
&lt;p&gt;This change in funding mode does give DDEV more flexibility in use of funds, and with the flexibility we can hope to move toward &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;full support for Stas Zhuk&lt;/a&gt;. The obvious problem is that now we have to budget for both Stas and Randy, with less resources.&lt;/p&gt;
&lt;p&gt;As many of you know, though, times are tight in the agency world, and funding for DDEV has actually declined in other ways over the last year, with several key sponsors having to back away. We hope you and your organization are coming up with new plans to support DDEV.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Stop by and thank Platform.sh&lt;/strong&gt; for their generous ongoing support of DDEV! See their &lt;a href=&quot;https://platform.sh/contact/&quot;&gt;contact page&lt;/a&gt; or join their &lt;a href=&quot;https://discord.gg/platformsh&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
</content:encoded><category>Community</category></item><item><title>DDEV&apos;s Database Support Gets MySQL 8.4 and Better Import Speeds</title><link>https://ddev.com/blog/database-improvements</link><guid isPermaLink="true">https://ddev.com/blog/database-improvements</guid><description>DDEV gets MySQL 8.4 and many related upgrades and performance improvements</description><pubDate>Thu, 02 Jan 2025 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/12/MySQL8.0ImportTimeV1.24.1VSHEAD.svg&quot; alt=&quot;Improved MySQL 8.0 import times in v1.24.2+&quot;&gt;&lt;p&gt;Lots of good news:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MySQL 8.4&lt;/strong&gt;: DDEV supports MySQL 8.4, the latest LTS version of MySQL, in v1.24.2+. We now support &lt;strong&gt;17&lt;/strong&gt; different database types and versions. Try doing that on your bare-metal development setup 😀.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;MySQL 8.0 import performance&lt;/strong&gt;: DDEV v1.24.2 import performance with MySQL 8.0 is about 30% better than it was in v1.24.1.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Retired Docker image maintenance&lt;/strong&gt;: We&amp;#39;ve maintained &lt;code&gt;ddev/mysql&lt;/code&gt; images for years since MySQL didn&amp;#39;t provide Debian-based ARM64 images. Because Bitnami started providing ARM64 images, we have switched to &lt;a href=&quot;https://hub.docker.com/r/bitnami/mysql&quot;&gt;&lt;code&gt;bitnami/mysql&lt;/code&gt;&lt;/a&gt; as the base image for MySQL 8+ images.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Simplified maintenance of XtraBackup&lt;/strong&gt;: We&amp;#39;ve had to maintain our own build-from-source version of &lt;a href=&quot;https://www.percona.com/mysql/software/percona-xtrabackup&quot;&gt;Percona XtraBackup&lt;/a&gt; for years because Percona didn&amp;#39;t provide ARM64 versions. (DDEV uses XtraBackup under the hood for the &lt;code&gt;ddev snapshot&lt;/code&gt; feature with MySQL.) We&amp;#39;ve been able to retire that build because Percona is now providing ARM64 versions of their packages.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;&lt;strong&gt;Open Source For The Win!&lt;/strong&gt; DDEV is built on the shoulders of giants. MySQL and MariaDB generously share their decades-old products. Percona makes XtraBackup available and even improves the packages outside their comfort zone. Bitnami starts building ARM64 images for their huge catalog of Docker images. And of course Docker itself provides the engine that powers DDEV. (It doesn&amp;#39;t matter what Docker provider you&amp;#39;re using, Docker Desktop, OrbStack, Colima, Lima, Rancher Desktop, Docker-ce, all of them are wrappers on the fantastically maintained Docker-ce project, with maintenance led by Docker, Inc.) None of the improvements discussed in this blog post would be possible without all those wonderful upstream changes.&lt;/p&gt;
&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Now for nerdy &lt;code&gt;ddev import-db&lt;/code&gt; performance comparisons&lt;/strong&gt;:&lt;/p&gt;
&lt;p&gt;The new &lt;a href=&quot;https://github.com/rfay/database-performance&quot;&gt;database-performance&lt;/a&gt; repository contains scripts to create large databases, links to pre-created large database dumps, and a script to easily compare &lt;code&gt;ddev import-db&lt;/code&gt; performance with those dumps, varying across DDEV versions, database versions and types, and imports. With these tools you can actually sort out what Docker provider on macOS gives the best import performance, what the difference is between MariaDB 10.11 and MySQL 8.0, etc. It was important to build this set of tools so we could verify that the new Bitnami-based images didn&amp;#39;t have a performance regression.&lt;/p&gt;
&lt;p&gt;MySQL 8.0 import performance was studied in the issue queue: &lt;a href=&quot;https://github.com/ddev/ddev/issues/6244&quot;&gt;Increase MySQL 8.0 database import speed&lt;/a&gt; and &lt;a href=&quot;https://github.com/orgs/ddev/discussions/6591&quot;&gt;Techniques to speed up import-db&lt;/a&gt;. However, it was always impossible to get or test specific cases because all the reporters were using proprietary information for their tests. With the &lt;code&gt;database-performance&lt;/code&gt; tools and database dumps, we can now do properly comparable import tests.&lt;/p&gt;
&lt;p&gt;Each of the following was tested with a Drupal 11 (Drupal CMS) database with 1M nodes and 1M users, a 3.7 GB compressed SQL file with no private data, available in &lt;a href=&quot;https://github.com/rfay/database-performance&quot;&gt;database-performance&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Using OrbStack on macOS as a Docker Provider, MySQL 8.0 import time is improved by about 25% in HEAD vs v1.24.1 (&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1_4VtPTi7MVt1DdppYp8sjRaHVmA-y7vaRYMlfqtpaKY/edit?usp=sharing&quot;&gt;data&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/12/MySQL8.0ImportTimeV1.24.1VSHEAD.svg&quot; alt=&quot;MySQL 8.0 Import Speed, v1.24.1 vs HEAD&quot;&gt;&lt;/p&gt;
&lt;p&gt;MySQL 8.4 is a little slower on import than MySQL 8.0, as MySQL 8.0 was significantly slower than MySQL 5.7. MariaDB 10.11 and MySQL 5.5 remain the fastest (&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1ha9u895o9-4c5wPncs9hpe0OHAXi8OedtwUUizKXLrE/edit?usp=sharing&quot;&gt;data&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/12/ElapsedVSDatabaseVersion.svg&quot; alt=&quot;Database Version vs Import Speed, HEAD&quot;&gt;&lt;/p&gt;
&lt;p&gt;I also ran tests of Docker Provider vs MySQL 8.0 import times, and was surprised to see Lima and Colima come out as fastest (&lt;a href=&quot;https://docs.google.com/spreadsheets/d/1HRlG6m1Cl6c8H-hUiSNW63VdRrxjJ9vlcMgBIcIpLQU/edit?usp=sharing&quot;&gt;data&lt;/a&gt;):&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/12/DockerProviderVSElapsed.svg&quot; alt=&quot;Import Times for Various Docker Providers (macOS)&quot;&gt;&lt;/p&gt;
&lt;p&gt;I experimented with these scripts on Linux/AMD64 and WSL2/AMD64, but wasn&amp;#39;t able to get predictable results, but the import times were significantly longer (20% to 100% longer), which I can only guess is probably a result of Apple Silicon&amp;#39;s advantage over Intel processors, and the particular machines I had available to test on.&lt;/p&gt;
&lt;p&gt;Interesting notes on MySQL 8.4+ on the web:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://www.percona.com/blog/sakila-where-are-you-going/&quot;&gt;Percona study of MySQL 8.4+ performance&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.percona.com/blog/mysql-8-4-3-and-9-1-0-major-performance-gains-revealed/&quot;&gt;Percona update on MySQL 8.4+ performance improvements in 8.4.3+&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;We&amp;#39;d love to hear your reports about these results.&lt;/strong&gt; You can use or contribute to the scripts and database dumps at &lt;a href=&quot;https://github.com/rfay/database-performance&quot;&gt;rfay/database-performance&lt;/a&gt;. It&amp;#39;s easy to use DDEV HEAD too, see &lt;a href=&quot;https://docs.ddev.com/en/stable/developers/building-contributing/#testing-latest-commits-on-head&quot;&gt;docs&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. And we&amp;#39;d love to have you sign up for the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;monthly newsletter&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>DevOps</category></item><item><title>DDEV December 2024 Newsletter</title><link>https://ddev.com/blog/ddev-dec-2024-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-dec-2024-newsletter</guid><description>DDEV November 2024 Newsletter</description><pubDate>Tue, 03 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/12/nancy_lewis_colorado_river.jpg&quot; alt=&quot;Nancy Lewis painting of Colorado River near Palisade, Colorado&quot;&gt;&lt;p&gt;&lt;strong&gt;Hello DDEV Community!&lt;/strong&gt; It’s always a pleasure to reach out to you at the beginning of the month. Here are some updates for you.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV v1.24.0&lt;/strong&gt; was released with lots of goodies, including PHP 8.4.1 with all extensions, as well as Xdebug. This is a major release with some deprecations and removals, please read the &lt;a href=&quot;release-v1.24.0-php8.4.md&quot;&gt;release blog&lt;/a&gt; and &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.0&quot;&gt;release notes&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;TYPO3 Community Budget Ideas:&lt;/strong&gt; DDEV has posted a community budget idea for TYPO3&amp;#39;s &lt;a href=&quot;https://typo3.org/article/budget-2025-ideas-for-quarter-1-2025-published-vote-now&quot;&gt;community budget process&lt;/a&gt;. We&amp;#39;d like to improve DDEV&amp;#39;s xhprof and xhgui even beyond where &lt;a href=&quot;https://github.com/tyler36&quot;&gt;@tyler36&lt;/a&gt; has already taken the &lt;a href=&quot;https://github.com/ddev/ddev-xhgui&quot;&gt;DDEV xhgui add-on&lt;/a&gt; and incorporate it into core. If you&amp;#39;re a member of the TYPO3 association you&amp;#39;ve gotten an email about voting on this, please vote for the DDEV proposal!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV Blogs and News&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;stats-on-ddev-usage-nov-2024.md&quot;&gt;DDEV Usage Statistics&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;windows-ddev-setup.md&quot;&gt;Setting up a Windows Machine for DDEV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/amplitude-ddev-analytics-contributor-training/&quot;&gt;Contributor Training: DDEV Analytics with Amplitude&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/orgs/ddev/discussions/6682&quot;&gt;DDEV Advisory Group Meeting&lt;/a&gt;. These meetings happen every two months and you&amp;#39;re always invited. The next one is Wednesday, January 8, 2025, and is the most important meeting of the year. We will review 2024 and plan for 2025.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes from around the web&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Drupal lead Dries Buyteart posted &lt;a href=&quot;https://dri.es/installing-drupal-cms-or-drupal-starshot-using-ddev&quot;&gt;Installing Drupal CMS (or Drupal Starshot) using DDEV&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;Drupal at your Fingertips contains loads of great DDEV advice, including how to set up Apache Solr, see &lt;a href=&quot;https://www.drupalatyourfingertips.com/development#solr-and-ddev&quot;&gt;Drupal and Solr&lt;/a&gt; (and lots of advice about other things including Xdebug).&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://firesphere.dev/articles/ddev-elasticsearch-and-silverstripe&quot;&gt;SilverStripe and Elasticsearch with DDEV&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.koehnlein.eu/en/blog/2024/ddev-wsl-xdebug/&quot;&gt;Xdebug, DDEV, WSL2 and corporate network restrictions&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/pulse/phase-2-week-3-whos-valery-lourie-nskjf/&quot;&gt;DDEV matomo add-on&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Fully funding Maintainer Stas&lt;/strong&gt;: &lt;em&gt;We need your help and your organization&amp;#39;s help! Let me know if you need help getting this into your 2025 budget!&lt;/em&gt; Our key financial goal is to &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;fully fund @stasadev so he can work exclusively on DDEV&lt;/a&gt;. We’re about 30% of the way to that goal, but apparently due to market conditions, have been going backward in recent months. We need about $3700/month in increased pledges from organizations and individuals. See &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Full information about supporting DDEV&lt;/a&gt;. We’re happy to invoice you, happy to &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;do a call discussing this&lt;/a&gt;, and would love it if you’d include DDEV in your 2025 budgeting process. (Our current status: We receive about $3000-$4000/month, spend about $4000/month. Bank balance is about $9,300, up from $9,000 last month.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow on&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;&lt;/li&gt;
&lt;li&gt;and join our community on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;Happy December from Randy Fay, DDEV Project Lead.&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>DDEV Release v1.24.0 with PHP 8.4.1 and all extensions</title><link>https://ddev.com/blog/release-v1240-php84</link><guid isPermaLink="true">https://ddev.com/blog/release-v1240-php84</guid><description>New features and changes in DDEV v1.24.0</description><pubDate>Mon, 02 Dec 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/12/php-logo.svg&quot; alt=&quot;PHP Logo for PHP 8.4&quot;&gt;&lt;p&gt;Today we&amp;#39;re proud to announce &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.24.0&quot;&gt;DDEV v1.24.0&lt;/a&gt;, with PHP 8.4.1 and the full complement of extensions, including Xdebug.&lt;/p&gt;
&lt;p&gt;Congratulations to &lt;strong&gt;all of you and all contributors who made this happen&lt;/strong&gt;. It&amp;#39;s the DDEV community that makes DDEV successful, with your suggestions, contributions, enhancements, bug reports and financial support.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Changes in defaults&lt;/strong&gt;: This is a major version of DDEV, with *some changes in defaults:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;PHP 8.3 becomes the default for new projects (but you can change any project to any PHP version, of course).&lt;/li&gt;
&lt;li&gt;Current stable Node.js 22 becomes the default for projects that don&amp;#39;t specify another version.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;New Features and other things we&amp;#39;re proud of&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;ddevcd&lt;/code&gt; command can be used to switch between projects. See &lt;code&gt;ddev debug cd&lt;/code&gt;. For example, if I have a project named &lt;code&gt;t3v12&lt;/code&gt; I can do a &lt;code&gt;ddevcd t3v12&lt;/code&gt; to switch to that directory. &lt;a href=&quot;https://github.com/stasadev&quot;&gt;Stas&lt;/a&gt; added this feature out of the blue and I love it. It does require a &lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/commands/#debug-cd&quot;&gt;tiny bit of one-time configuration&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;drupal11&lt;/code&gt; is introduced as a project type, demoting the &lt;code&gt;drupal&lt;/code&gt; project type to be a simple alias to the &amp;quot;latest stable Drupal version&amp;quot; (&lt;code&gt;drupal11&lt;/code&gt; for now).&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;ddev-webserver&lt;/code&gt; image is at least 25% smaller. Only a few locales are included by default, and only currently-supported versions of PHP are built-in by default (but all the other versions still work). It was 480MB compressed, is now 361MB compressed. More details below.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev auth ssh&lt;/code&gt; can now be used with individual key files and can follow symlinks. For example, if you only want to have a single file named &lt;code&gt;id_rsa&lt;/code&gt; to be available to your projects, you can &lt;code&gt;ddev auth ssh -f ~/.ssh/id_rsa&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Smaller Changes&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;Added dynamic timeout handling for scripts on start based on setting of &lt;code&gt;default_container_timeout&lt;/code&gt;. This is mostly only for folks with exceptionally slow internet.&lt;/li&gt;
&lt;li&gt;Added explicit support for the &lt;code&gt;symfony&lt;/code&gt; project type, see &lt;a href=&quot;https://docs.ddev.com/en/stable/users/quickstart/#symfony&quot;&gt;docs&lt;/a&gt;, thanks &lt;a href=&quot;https://github.com/IndraGunawan&quot;&gt;@IndraGunawan&lt;/a&gt;.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;ddev describe&lt;/code&gt; changes how exposed ports are displayed for better clarity (thanks &lt;a href=&quot;https://github.com/hanoii&quot;&gt;@hanoii&lt;/a&gt;)&lt;/li&gt;
&lt;li&gt;Only a limited set of locales is now installed in &lt;code&gt;ddev-webserver&lt;/code&gt; by default. If you need more, use &lt;code&gt;webimage_extra_packages: [locales-all]&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Complex &lt;code&gt;ddev composer&lt;/code&gt; command usage with JSON or args with spaces is fixed. (A bug was introduced in v1.23.5.)&lt;/li&gt;
&lt;/ul&gt;
&lt;h2&gt;Questions&lt;/h2&gt;
&lt;dl&gt;
&lt;dt&gt;Do I have to change how I use the &lt;code&gt;drupal&lt;/code&gt; project type?&lt;/dt&gt;
&lt;dd&gt;If your project is actually a Drupal 11 project, there&apos;s no reason to make any changes. If your project is Drupal 8-10, you may want to change it to project type &lt;code&gt;drupal10&lt;/code&gt;, for example although there&apos;s no meaningful difference in this release. &lt;/dd&gt;
&lt;dt&gt;What if I want more locales than the ones provided by default?&lt;/dt&gt;
&lt;dd&gt;The default locales installed in the web container for v1.24.0 are &lt;code&gt;en_CA.UTF-8, en_US.UTF-8, en_GB.UTF-8, de_DE.UTF-8, de_AT.UTF-8, fr_CA.UTF-8, fr_FR.UTF-8, ja_JP.UTF-8, ru_RU.UTF-8&lt;/code&gt;. If you need other locales, all locales will be installed if you add &lt;code&gt;locales-all&lt;/code&gt; to your &lt;code&gt;webimage_extra_packages&lt;/code&gt; in &lt;code&gt;.ddev/config.yaml&lt;/code&gt; For example, &lt;code&gt;webimage_extra_packages: [&quot;locales-all&quot;]&lt;/code&gt;. (If you use other locales that you think should be added by default, we&apos;re happy to hear about them.)&lt;/dd&gt;
&lt;dt&gt;What should I do after upgrading DDEV?&lt;/dt&gt;
&lt;dd&gt;DDEV will already ask you to do a &lt;code&gt;ddev poweroff&lt;/code&gt;, but consider doing a &lt;code&gt;ddev config --update&lt;/code&gt; on your projects. This will auto-detect your project type and required PHP version. It may switch the &lt;code&gt;drupal&lt;/code&gt; type to &lt;code&gt;drupal10&lt;/code&gt; or &lt;code&gt;drupal11&lt;/code&gt;.&lt;/dd&gt;
&lt;/dl&gt;

&lt;h2&gt;Reversions and Removals&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;The &lt;code&gt;drupal&lt;/code&gt; project type is no longer a generic project type, but instead is an alias to the latest stable Drupal (&lt;code&gt;drupal11&lt;/code&gt; right now). A number of folks gave feedback that it caused the startup time to be longer and the process more complex. (&lt;code&gt;ddev config --update&lt;/code&gt; is no longer a part of the Drupal quickstart)&lt;/li&gt;
&lt;li&gt;In v1.23.5 we started preferring &lt;code&gt;vendor/bin/composer&lt;/code&gt; to the specified &lt;code&gt;composer_version&lt;/code&gt; but users thought that was a mistake, so this was reverted.&lt;/li&gt;
&lt;li&gt;The nginx-proxy router has been removed.&lt;/li&gt;
&lt;li&gt;The &lt;code&gt;ddev service enable&lt;/code&gt; and &lt;code&gt;ddev service disable&lt;/code&gt; commands were deprecated, as they have long been superseded by the use of &lt;code&gt;ddev add-on get&lt;/code&gt; and &lt;code&gt;ddev add-on remove&lt;/code&gt;. We apologize if this is an inconvenience, but we didn&amp;#39;t see any significant usage of these commands. If you need something like that still, it&amp;#39;s super easy to make a &lt;a href=&quot;https://docs.ddev.com/en/stable/users/extend/custom-commands/&quot;&gt;custom command&lt;/a&gt; that would do the same thing, and consider delivering the custom command using an add-on.&lt;/li&gt;
&lt;li&gt;Removed support for Python and Django4 project types. After more than a year, these did not gain traction or a community, so sadly we had to leave them behind.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;From the entire team, thanks for using, promoting, contributing, and supporting DDEV!&lt;/p&gt;
&lt;p&gt;If you have more questions, please reach out to us in any of the many &lt;a href=&quot;https://docs.ddev.com/en/stable/users/support/&quot;&gt;support channels&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://bsky.app/profile/ddev.bsky.social&quot;&gt;Bluesky&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. And we&amp;#39;d love to have you sign up for the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;monthly newsletter&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Announcements</category></item><item><title>DDEV Live Usage Statistics</title><link>https://ddev.com/blog/stats-on-ddev-usage-nov-2024</link><guid isPermaLink="true">https://ddev.com/blog/stats-on-ddev-usage-nov-2024</guid><description>DDEV Live Usage Statistics from Amplitude</description><pubDate>Tue, 05 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/11/ddev-environment-usage.png&quot; alt=&quot;DDEV Usage of each environment&quot;&gt;&lt;p&gt;Here&amp;#39;s an updated review of some DDEV usage stats. It&amp;#39;s always fun to see some of these. Most of these charts are from the past 7 days (Oct 28 - Nov 3, 2024). And check out the LIVE stats link below each chart.&lt;/p&gt;
&lt;h2&gt;DDEV Environments&lt;/h2&gt;
&lt;p&gt;DDEV Environment Usage shows macOS (darwin) as the most popular development environment, but WSL2 and Traditional Windows are almost 25%, and Linux 21%. It&amp;#39;s amazing that DDEV can work so well for so many different people in such different environments! Note that Codespaces and GitPod don&amp;#39;t normally report information by default, so those results are questionable.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/ddev-environment-usage.png&quot; alt=&quot;DDEV Environment Usage&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/1238aca77448459aac7473f2fedbe109&quot; target=&quot;_blank&quot;&gt;Live values for DDEV Environment Usage&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;DDEV Commands&lt;/h2&gt;
&lt;p&gt;The most popular commands are probably the ones you&amp;#39;d expect, &lt;code&gt;ddev composer&lt;/code&gt;, &lt;code&gt;ddev ssh&lt;/code&gt;, &lt;code&gt;ddev php&lt;/code&gt;. &lt;code&gt;ddev drush&lt;/code&gt; is excluded here because it was used 515,000 times in the last 7 days. I guess some people must be using it in an automated situation. If you&amp;#39;re using any of these in CI, please turn off reporting if it happens to be on, &lt;code&gt;ddev config global --instrumentation-opt-in=false&lt;/code&gt; or &lt;code&gt;export DDEV_NO_INSTRUMENTATION=true&lt;/code&gt;.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/Commands.png&quot; alt=&quot;DDEV Commands, excluding drush&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/f4e48d8678134561ae034f9a020faab4&quot; target=&quot;_blank&quot;&gt;Live values for DDEV commands&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;CMS Project Types&lt;/h2&gt;
&lt;p&gt;Drupal, the generic &amp;quot;PHP&amp;quot; type, and TYPO3 remain the most popular, but they&amp;#39;re the ones with the longest-term support. But look at Laravel, Craft CMS, and Laravel getting more popular all the time!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/CMS-project-types.png&quot; alt=&quot;Most Popular CMS Project Types&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/0619ab47f9cd433cb14bdea4b4aab3e2&quot; target=&quot;_blank&quot;&gt;Live version of CMS Project Types&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;macOS Docker Providers&lt;/h2&gt;
&lt;p&gt;People have &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/docker-installation/#docker-installation-macos&quot;&gt;lots of Docker providers&lt;/a&gt; to choose from on macOS. My own favorite is OrbStack due to its performance and excellent maintenance, but the classic Docker Desktop still has a huge market share. Neither of those is open source, but Lima, Colima, and Rancher Desktop all are.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/macOSDockerProvider.png&quot; alt=&quot;macOS Docker Providers&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/07d652c6e14e44c68b192625ea8ee066&quot; target=&quot;_blank&quot;&gt;Live results on macOS Docker Providers&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;WSL2 Docker Provider&lt;/h2&gt;
&lt;p&gt;On WSL2, though, the robust and stable Docker CE wins out by a little bit. Note that &lt;em&gt;all&lt;/em&gt; of the Docker providers are dependent on (and bundle) the excellent Docker CE project, with is maintained by Docker, Inc. So if you use Docker in any way, thank them!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/WSL2DockerProvider.png&quot; alt=&quot;WSL2 Docker Providers&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/dad41af1c2a44bb6af1d6ec8cad65bd7&quot; target=&quot;_blank&quot;&gt;Live results for WSL2 Docker Provider&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;macOS Architecture (Apple Silicon vs Intel)&lt;/h2&gt;
&lt;p&gt;It seems that 81.5% of you have gotten new Macs now!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/macOS_UsagebyArchitecture.png&quot; alt=&quot;macOS System Architecture&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/5aedd7e813a642cab03306e179604836&quot; target=&quot;_blank&quot;&gt;Live results for macOS Architecture&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Add-on Usage&lt;/h2&gt;
&lt;p&gt;As you know, the DDEV Add-on ecosystem has been a tremendous success, because people can scratch their own itch and the community can maintain add-ons that they need. Here are the most popular ones, excluding phpMyAdmin, which had by far the most usage (3 times the usage of the redis add-on).&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/add-ons-excluding-phpmyadmin.png&quot; alt=&quot;Add-On Usage&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/4e4959f0f36c49d6a24cc2726e8231e5&quot; target=&quot;_blank&quot;&gt;Live version of Add-on usage&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Bundled &lt;code&gt;ddev pull&lt;/code&gt; Usage&lt;/h2&gt;
&lt;p&gt;DDEV provides a number of bundled hosting providers, including Platform.sh, Pantheon, Acquia, Lagoon, etc. Here are the actual usages of some of these. There are loads and loads of others that you have customized and used various ways. Many people customize these with names like &lt;code&gt;prod&lt;/code&gt; and &lt;code&gt;staging&lt;/code&gt; for those kinds of usage too, so this is very much not complete. And DDEV can be used with so many other situations, like &lt;a href=&quot;https://docs.ddev.com/en/stable/users/providers/&quot;&gt;rsync and any hosting provider&lt;/a&gt;. Just the other day I found out that the Mittwald hosting service provides a &lt;a href=&quot;https://github.com/mittwald/ddev&quot;&gt;Mittwald add-on&lt;/a&gt; that provides a custom hosting provider!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/ddev-pull-commands.png&quot; alt=&quot;ddev pull Usage&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/4837a47cab1b46eb95c8a4b73f3a5bb2&quot; target=&quot;_blank&quot;&gt;Live version of &lt;code&gt;ddev pull&lt;/code&gt; usage&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;DDEV Versions&lt;/h2&gt;
&lt;p&gt;It seems that most of you keep up-to-date with recent versions, thank you! It helps loads with support when we know that you&amp;#39;re using something recent. There are a few using versions back to v1.22.0 though, impressive that they can still do this. I imagine there are a few out there prior to that, reports here only include v1.22.0+.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/ddev-versions.png&quot; alt=&quot;ddev versions in use&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/a0fde21314e34378831943af7f9dd022&quot; target=&quot;_blank&quot;&gt;Live version of versions in use&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Users by Timezone&lt;/h2&gt;
&lt;p&gt;We do our best not to collect any user-identifiable information. The timezone is interesting though. So many of you in Europe!&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/UsersbyTimezone.png&quot; alt=&quot;user time zones&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/5735804e9a83429cb6d131b62aa174a6&quot; target=&quot;_blank&quot;&gt;Live version of Users by Timezone&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Router Usage&lt;/h2&gt;
&lt;p&gt;Now that the Traefik router has been standard for two major versions, there&amp;#39;s very little usage of the old Nginx Proxy router. We were going to remove it in the upcoming v1.24.0, but we&amp;#39;re not having to spend any time with it, so will probably not do that. If you need it, please speak up and let us know.&lt;/p&gt;
&lt;p&gt;&lt;img src=&quot;https://ddev.com/img/blog/2024/11/RouterUsage.png&quot; alt=&quot;Router usage&quot;&gt;&lt;/p&gt;
&lt;p&gt;&lt;a href=&quot;https://app.amplitude.com/analytics/share/b443310e41854c4a9c79ff7c5d6b399b&quot; target=&quot;_blank&quot;&gt;Live version of Router Usage&lt;/a&gt;&lt;/p&gt;
&lt;h2&gt;Explore them yourself!&lt;/h2&gt;
&lt;p&gt;&lt;strong&gt;You can explore these yourself, ask for permission.&lt;/strong&gt; If you&amp;#39;re a known community member I&amp;#39;ll happily add your access to Amplitude to explore. There are many more things that can be done with this. See &lt;a href=&quot;amplitude-ddev-analytics-contributor-training.md&quot;&gt;Amplitude Contributor Training&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so. 13,600 or so of you are using this tool and ecosystem weekly, about 55 of you are financially supporting its sustainability. Time to &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;step up&lt;/a&gt; if you&amp;#39;re not in those 55! We need you in the same way you need us.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Community</category></item><item><title>Setting up a Windows Machine for DDEV Development</title><link>https://ddev.com/blog/windows-ddev-setup</link><guid isPermaLink="true">https://ddev.com/blog/windows-ddev-setup</guid><pubDate>Mon, 04 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/11/windows-install-blog-logos.png&quot; alt=&quot;Windows, DDEV, Ubuntu logos demonstrating setting up a Windows machine for DDEV.&quot;&gt;&lt;p&gt;I&amp;#39;ve recently set up a few Windows machines for DDEV maintenance and development, and wanted to share how I do it. It&amp;#39;s surprisingly easy. My approach here is opinionated, but it works for me. You&amp;#39;ll do things a little differently I&amp;#39;m sure.&lt;/p&gt;
&lt;p&gt;Two recent Windows machines I set up were the new ARM64/Qualcomm/CoPilot variety. They were excellent and fast and had great battery life. There&amp;#39;s very little I had to do differently with them, but I&amp;#39;ll mention in the steps when there was something different. (I was surprised by the lack of a fingerprint sensor on both, but the &amp;quot;Windows Hello&amp;quot; facial recognition was quite fast. There is no ARM64 Discord app, and the AMD64 one had horrific performance.)&lt;/p&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Remove unwanted applications like Solitaire and MS Office. I usually start by removing a bunch of bloatware.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Do all Windows updates.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Turn off the &lt;code&gt;System&lt;/code&gt; -&amp;gt; &lt;code&gt;Notifications&lt;/code&gt; -&amp;gt; &lt;code&gt;Additional settings&lt;/code&gt; that cause the “Windows experience” prompts after upgrade.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Enable Windows Update-&amp;gt;Advanced Options-&amp;gt;Receive updates for other Microsoft Products. Amazingly, this is not on by default, and you might have an old WSL2 kernel! (See &lt;a href=&quot;beware-of-dirty-pipes-and-docker-desktop-on-windows.md&quot;&gt;Beware of Dirty Pipes&lt;/a&gt;.)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install important apps. I always start with these. Each of these except Discord had an ARM64 version. If on an ARM64 machine, make sure you get the right version!&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Notion&lt;/li&gt;
&lt;li&gt;Chrome&lt;/li&gt;
&lt;li&gt;1Password&lt;/li&gt;
&lt;li&gt;PhpStorm (Although there are many ways to use PhpStorm on WSL2, I just open the project in &lt;code&gt;\\wsl.localhost\Ubuntu\home\rfay\workspace\&amp;lt;project&amp;gt;&lt;/code&gt; and it works great and performance is fine.)&lt;/li&gt;
&lt;li&gt;GoLand&lt;/li&gt;
&lt;li&gt;Discord&lt;/li&gt;
&lt;li&gt;Slack&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://www.perforce.com/downloads/helix-visual-client-p4v&quot;&gt;Perforce P4V&lt;/a&gt; is my favorite merge conflict resolver.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In PowerShell, &lt;code&gt;wsl --install&lt;/code&gt; and &lt;code&gt;wsl --update&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Windows Terminal is a fantastic terminal and is installed by default these days. I always set it up early with &amp;quot;Default Terminal Application: Windows Terminal&amp;quot; and &amp;quot;Interaction-&amp;gt;Automatically Copy Selection to Clipboard&amp;quot;, and set Ubuntu as default, and have it auto-start on login.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Once Ubuntu is installed:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y apt-transport-https autojump bats build-essential ca-certificates ccache clang curl dirmngr etckeeper expect git gnupg htop inetutils-telnet jq libcurl4-gnutls-dev libnss3-tools lsb-release mariadb-client nagios-plugins net-tools pipx postgresql-client unzip vim xdg-utils zip &amp;amp;&amp;amp; sudo apt upgrade -y&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo snap install --classic go&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo snap install --classic node&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;&lt;code&gt;sudo snap install ngrok and ngrok config add-authtoken &amp;lt;token&amp;gt;&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;In Windows Explorer, add my WSL2 home directory to favorites by copying it into the favorites area.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install DDEV using the &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/&quot;&gt;DDEV installation instructions&lt;/a&gt;. The new GUI Windows installer makes it easy to do any kind of install, but I always recommend WSL2 with Docker-CE.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install and test the &lt;a href=&quot;https://developer.1password.com/docs/ssh/agent/&quot;&gt;1Password SSH agent&lt;/a&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;On Windows PowerShell &lt;code&gt;ssh -T git@github.com&lt;/code&gt; to verify that the 1Password SSH agent is working. If it says &amp;quot;PTY Allocation Failed&amp;quot;, just hit &lt;code&gt;&amp;lt;RETURN&amp;gt;&lt;/code&gt; and ignore it. You should get the confirmation message from GitHub.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;1Password WSL2 adaptation:
&lt;code&gt;sudo ln -s /mnt/c/WINDOWS/System32/OpenSSH/ssh.exe /usr/local/bin/ssh &amp;amp;&amp;amp; sudo ln -s /mnt/c/WINDOWS/System32/OpenSSH/ssh-add.exe /usr/local/bin/ssh-add&lt;/code&gt; (Makes SSH use &lt;code&gt;ssh.exe&lt;/code&gt; on Windows and the 1Password SSH and Git integrations then work great. This assumes that &lt;code&gt;/usr/local/bin&lt;/code&gt; in your PATH comes before &lt;code&gt;/usr/bin&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Link p4merge: &lt;code&gt;sudo ln -s &amp;quot;/mnt/c/Program Files/Perforce/p4merge.exe&amp;quot; /usr/local/bin/p4merge&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;If you have a &lt;code&gt;dotfiles&lt;/code&gt; repository (containing your shared &lt;code&gt;.bash_profile&lt;/code&gt;, &lt;code&gt;.zshrc&lt;/code&gt;, etc.) clone it in WSL2.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Check out DDEV&amp;#39;s code. &lt;code&gt;mkdir -p ~/workspace &amp;amp;&amp;amp; cd ~/workspace &amp;amp;&amp;amp; git clone -o upstream git@github.com:ddev/ddev&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;GoLand setup:&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Set &lt;code&gt;GOROOT&lt;/code&gt; to &lt;code&gt;/snap/go&lt;/code&gt; in &lt;code&gt;Linux\Ubuntu&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;For ARM64 you have to do &lt;code&gt;go install github.com/go-delve/delve/cmd/dlv@latest&lt;/code&gt; and put this in &amp;quot;Custom Properties&amp;quot; (under help) &lt;code&gt;dlv.path=//wsl.localhost/Ubuntu/home/rfay/go/bin/dlv&lt;/code&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;DDEV repository setup&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;Run &lt;code&gt;.githooks/linkallchecks.sh&lt;/code&gt;&lt;/li&gt;
&lt;li&gt;Install &lt;code&gt;golangci-lint&lt;/code&gt; for &lt;code&gt;make staticrequired&lt;/code&gt;: &lt;code&gt;sudo snap install --classic golangci-lint&lt;/code&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;SSH configuration on Windows side: If your SSH username is different from the username automatically configured on the Windows side (or just generally different from the default you want to use) then add something like this to &lt;code&gt;.ssh/config&lt;/code&gt; on the Windows side (or at &lt;code&gt;/mnt/c/Users/&amp;lt;username&amp;gt;/.ssh/config&lt;/code&gt;). This will make it so your connection username does not have to be explicitly specified when you use &lt;code&gt;ssh&lt;/code&gt; or &lt;code&gt;git&lt;/code&gt;:&lt;/p&gt;
&lt;pre&gt;&lt;code&gt;Host *
  User &amp;lt;default-user-you-want-to-use&amp;gt;
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;code&gt;prettier&lt;/code&gt; and &lt;code&gt;mkdocs&lt;/code&gt;&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;sudo npm install -g prettier
sudo PIPX_HOME=/usr/local/pipx PIPX_BIN_DIR=/usr/local/bin PIPX_MAN_DIR=/usr/local/share/man pipx install mkdocs
&lt;/code&gt;&lt;/pre&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;code&gt;git&lt;/code&gt; for Windows (and &lt;code&gt;git-bash&lt;/code&gt;)&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Use &lt;a href=&quot;https://github.com/randyrants/sharpkeys&quot;&gt;sharpkeys&lt;/a&gt; to disable the Caps Lock key.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install NSIS and dependencies. &lt;code&gt;sudo apt update &amp;amp;&amp;amp; sudo apt install -y nsis&lt;/code&gt; and &lt;code&gt;.ci-scripts/nsis_setup.sh /usr/share/nsis&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install Homebrew for just a few uses: &lt;code&gt;/bin/bash -c &amp;quot;$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/HEAD/install.sh)&amp;quot;&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install BATS with &lt;code&gt;brew tap bats-core/bats-core&lt;/code&gt; and &lt;code&gt;brew instalil bats bats-assert bats-support bats-file&lt;/code&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Install &lt;a href=&quot;https://goreleaser.com/install/#apt-repository&quot;&gt;goreleaser pro&lt;/a&gt;&lt;/p&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;We&amp;#39;d love to hear your own hints and tips on how you set up a Windows machine (or any other computer!). You can contribute to this article with a &lt;a href=&quot;https://github.com/ddev/ddev.com&quot;&gt;PR to the blog&lt;/a&gt; or make your suggestions on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. We welcome guest blogs too!&lt;/p&gt;
&lt;p&gt;Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. And we&amp;#39;d love to have you sign up for the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;monthly newsletter&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>DevOps</category></item><item><title>DDEV November 2024 Newsletter</title><link>https://ddev.com/blog/ddev-nov-2024-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-nov-2024-newsletter</guid><description>DDEV November 2024 Newsletter</description><pubDate>Fri, 01 Nov 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/11/palisade-november-bookcliffs.jpg&quot; alt=&quot;Palisade, Colorado, USA, November 1, 2024&quot;&gt;&lt;p&gt;&lt;strong&gt;Happy November from DDEV&lt;/strong&gt;! It&amp;#39;s a beautiful fall here, but things are cooling down. We live in an agricultural area, so the first freeze is always an event.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;It&amp;#39;s Maintainer &lt;a href=&quot;https://github.com/stasadev&quot;&gt;Stas Zhuk&lt;/a&gt;&amp;#39;s first anniversary as a full DDEV maintainer!&lt;/strong&gt;. I asked him to share what he&amp;#39;s most proud of this year. I know how amazingly grateful I am to work alongside him and to such an amazingly capable co-maintainer who has full privileges on all things DDEV.&lt;/p&gt;
&lt;blockquote&gt;
&lt;p&gt;It&amp;#39;s been a great year working as an official DDEV maintainer.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;One thing I&amp;#39;m proud of is improving the &lt;code&gt;ddev composer create&lt;/code&gt; command to work just like &lt;code&gt;composer create-project&lt;/code&gt;. Even though I&amp;#39;ve done a lot with Composer as PHP developer, I still learned new things while working on this.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I&amp;#39;m also proud of adding support for &lt;code&gt;.ddev/.env.*&lt;/code&gt; files in add-ons. It seemed simple at first, but it was connected to so many other parts of the code. It took a few months and many changes to get it right.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Another feature I worked on is &lt;code&gt;ddev config --nodejs-version auto&lt;/code&gt;. This helped me better understand how &lt;code&gt;ddev start&lt;/code&gt; really works. There&amp;#39;s so much going on behind the scenes, more than just a &lt;code&gt;docker-compose up&lt;/code&gt;.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;When I started using DDEV, I already knew a bit about Docker, but I&amp;#39;ve learned a lot more by working on DDEV&amp;#39;s Docker networks. I&amp;#39;ve made a lot of PRs to improve this.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I also had my first experience with Docker multi-stage builds in DDEV. We use it to compile Xdebug for some PHP versions, and it was fun to learn.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;The &lt;code&gt;ddev launch :port&lt;/code&gt; feature has been really useful. It&amp;#39;s hard to imagine that DDEV didn&amp;#39;t have it before.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;I recently added automatic timezone detection in the web container. It seems like a small thing, but it has a big impact on simplicity and is very convenient for developers.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;blockquote&gt;
&lt;p&gt;Finally, the upcoming &lt;code&gt;ddev cd&lt;/code&gt; feature is something I’m excited about. I used to have a custom Bash script for this, but now it will be built into DDEV, with autocomplete.&lt;/p&gt;
&lt;/blockquote&gt;
&lt;p&gt;&lt;strong&gt;Advisory Group Meeting Wednesday&lt;/strong&gt;: All are invited to the DDEV Advisory Group meeting Wednesday, November 6, 9am US MT, 5PM CET.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Contributor Trainings From October (Recordings and Blogs):&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;ddev-debug-test-contributor-training.md&quot;&gt;Supporting people using &lt;code&gt;ddev debug test&lt;/code&gt; and other tools&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;tmate-github-actions-contributor-training.md&quot;&gt;Using Tmate to Debug GitHub Workflows&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes from around the web:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;release-v1.23.5-auto-port-assignment.md&quot;&gt;DDEV Release v1.23.5 Announcement&lt;/a&gt;.&lt;/strong&gt; Lots of goodies in this latest release, including automatic port assignment and automatic time zone detection.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.youtube.com/watch?v=nPJC7BbiGNw&amp;list=PLpeDXSh4nHjQOfQV-BUgoxHXlr4tHlhPO&amp;index=16&amp;pp=iAQB&quot;&gt;Mauricio Dinarte&amp;#39;s (@dinarcon) DrupalCon presentation on DDEV&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.theregister.com/2024/09/18/open_source_maintainers_underpaid/&quot;&gt;Open source maintainers underpaid, swamped by security, going gray&lt;/a&gt;&lt;/strong&gt; We all need to be working on this class of problem!&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.macstadium.com/blog/mac-open-source-hosting-spotlight-ddev&quot;&gt;Sponsor MacStadium&amp;#39;s Open-Source Spotlight on DDEV&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://docs.typo3.org/p/praetorius/vite-asset-collector/main/en-us/&quot;&gt;Vite in Practice (TYPO3)&lt;/a&gt;&lt;/strong&gt;&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://ddev.com/blog/working-with-vite-in-ddev/&quot;&gt;Working with Vite in DDEV&lt;/a&gt;&lt;/strong&gt; continues to be updated and maintained by the fabulous &lt;a href=&quot;https://dev.to/mandrasch&quot;&gt;Matthias Andrasch&lt;/a&gt;.&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;Upcoming Major Release v1.24.0&lt;/strong&gt; will change the defaults for new projects. PHP will be 8.3, Node.js will be v22. There will be a few new features, but I don&amp;#39;t think any other major changes in behavior.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fully funding Maintainer Stas&lt;/strong&gt;: &lt;em&gt;We need your help and your organization&amp;#39;s help! Let me know if you need help getting this into your 2025 budget!&lt;/em&gt; Our key financial goal is to &lt;a href=&quot;lets-fund-stas-maintainer.md&quot;&gt;fully fund @stasadev so he can work exclusively on DDEV&lt;/a&gt;. We’re about 30% of the way to that goal, but apparently due to market conditions, have been going backward in recent months. We need about $3700/month in increased pledges from organizations and individuals. See &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Full information about supporting DDEV&lt;/a&gt;. We’re happy to invoice you, happy to &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;do a call discussing this&lt;/a&gt;, and would love it if you’d include DDEV in your 2025 budgeting process. (Our current status: We receive about $4000-$5000/month, spend about $6000/month. Bank balance is about $9,000, down from $13,000 last month.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy November from Randy Fay, DDEV Project Lead.&lt;/p&gt;
</content:encoded><category>Community</category><category>Newsletters</category></item><item><title>Contributor Training: Tmate for Debugging GitHub Actions Workflows</title><link>https://ddev.com/blog/tmate-github-actions-contributor-training</link><guid isPermaLink="true">https://ddev.com/blog/tmate-github-actions-contributor-training</guid><description>Contributor training - Using tmate to debug and experiment with GitHub Actions.</description><pubDate>Wed, 23 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/10/github-actions-tmate-debugging.png&quot; alt=&quot;Detective Inspector studying GitHub tests&quot;&gt;&lt;p&gt;Here&amp;#39;s our October 23, 2024 &lt;a href=&quot;https://ddev.com/blog/category/training&quot;&gt;Contributor Training&lt;/a&gt; on using &lt;code&gt;ddev debug test&lt;/code&gt; to help other users:&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/ABg6Oz4WCIM?si=NuslbR5FA9YpV0Tk&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;What is Tmate?&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/mxschmitt/action-tmate&quot;&gt;mxschmitt/action-tmate&lt;/a&gt; provides a way to SSH into actual running GitHub Actions VMs to debug your tests.&lt;/p&gt;
&lt;h2&gt;Why do we need Tmate?&lt;/h2&gt;
&lt;p&gt;Often it&amp;#39;s hard to understand what has happened with an test because all we see in GitHub&amp;#39;s web UI is the output, and we can&amp;#39;t interact with it. And trying to recreate the test environment is sometimes fine, but sometimes it&amp;#39;s hard to recreate the test. GitHub runners have different memory configuration, disk space, and different packages installed, and they&amp;#39;re typically running AMD64 Ubuntu, which may not be something we have easy access to.&lt;/p&gt;
&lt;h2&gt;Alternatives to Tmate&lt;/h2&gt;
&lt;ol&gt;
&lt;li&gt;We normally will try to understand a test failure by running it locally.&lt;/li&gt;
&lt;li&gt;Running in a similar Linux/AMD64 system like GitHub Codespaceds is a pretty easy option.&lt;/li&gt;
&lt;li&gt;&lt;a href=&quot;https://github.com/nektos/act&quot;&gt;nektos/act&lt;/a&gt; is another recommended competitor to Tmate. It uses Docker and a Docker image to run an action on your local machine. I haven&amp;#39;t had luck with it when I&amp;#39;ve tried it. See Stas&amp;#39;s experience with &lt;code&gt;act&lt;/code&gt; &lt;a href=&quot;#how-to-useact&quot;&gt;below&lt;/a&gt;.&lt;/li&gt;
&lt;/ol&gt;
&lt;h2&gt;Security Concerns&lt;/h2&gt;
&lt;p&gt;If your test has secrets, then anyone who can SSH into it has access to those secrets.&lt;/p&gt;
&lt;p&gt;In addition, the owners of &lt;code&gt;ssh.tmate.io&lt;/code&gt; clearly have access to the SSH session you&amp;#39;re experimenting with, so think carefully about secrets that might be exposed. (In many tests, there are no secrets likely exposed or available. We have a couple of DDEV GitHub Actions that have sensitive secrets, and a few more that have far-less sensitive secrets.)&lt;/p&gt;
&lt;p&gt;I recommend always using &lt;code&gt;limit-access-to-actor: true&lt;/code&gt; so that only the user that has launched the test can SSH into it.&lt;/p&gt;
&lt;h2&gt;Usage Examples&lt;/h2&gt;
&lt;p&gt;These examples are all at &lt;a href=&quot;https://github.com/rfay/tmate-demos/&quot;&gt;rfay/tmate-demos&lt;/a&gt;, which you can fork and experiment with to your heart&amp;#39;s delight.&lt;/p&gt;
&lt;h3&gt;Basic on-push example with tmate running after the work is done&lt;/h3&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/rfay/tmate-demos/blob/main/.github/workflows/ddev-drupal-setup-on-push.yaml&quot;&gt;This on-push example&lt;/a&gt; just does some work (sets up DDEV and a Drupal project) and then right after that the Tmate action starts up and starts telling you how to SSH into the test.&lt;/p&gt;
&lt;h3&gt;Detached example, where Tmate starts at the end&lt;/h3&gt;
&lt;p&gt;In the &lt;a href=&quot;https://github.com/rfay/tmate-demos/blob/main/.github/workflows/detached.yaml&quot;&gt;detached example&lt;/a&gt; Tmate is set up early in the workflow, but is set to &lt;code&gt;detached: true&lt;/code&gt;, so doesn&amp;#39;t become active until everything else is done. However, if there&amp;#39;s an error, we won&amp;#39;t get to the Tmate step this way.&lt;/p&gt;
&lt;h3&gt;Failure Example&lt;/h3&gt;
&lt;p&gt;Often we have a complex step and want to be able to debug it if it fails. For this we can used &lt;code&gt;if: ${{ failure() }}&lt;/code&gt;, as shown in the &lt;a href=&quot;https://github.com/rfay/tmate-demos/blob/main/.github/workflows/on_fail.yaml&quot;&gt;failure example&lt;/a&gt;. Tmate kicks in automatically if the step &lt;em&gt;before&lt;/em&gt; it fails. It would be nicer if it kicked in on any failure, but it just kicks in when the step before fails.&lt;/p&gt;
&lt;h3&gt;Workflow Dispatch Example&lt;/h3&gt;
&lt;p&gt;The &lt;a href=&quot;https://github.com/rfay/tmate-demos/blob/main/.github/workflows/workflow_dispatch.yaml&quot;&gt;Workflow Dispatch&lt;/a&gt; is one of my favorite techniques, because you can easily restart the workflow as many times as you like, and choosing whether to invoke Tmate is just a click of a checkbox.&lt;/p&gt;
&lt;h2&gt;How to Use Act&lt;/h2&gt;
&lt;p&gt;&lt;a href=&quot;https://github.com/nektos/act&quot;&gt;nektos/act&lt;/a&gt; offers a way to locally simulate GitHub Actions workflows.&lt;/p&gt;
&lt;p&gt;In this example &lt;code&gt;.github/workflows/jekyll-gh-pages.yml&lt;/code&gt;, we deploy Jekyll to GitHub Pages with dynamic addition of JSON data to the website. Our focus is to debug the API call to GitHub using JavaScript:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;name: Deploy Jekyll with GitHub Pages

on:
  push:
    branches: [main]
  workflow_dispatch:

permissions:
  contents: read
  pages: write
  id-token: write

concurrency:
  group: &amp;quot;pages&amp;quot;
  cancel-in-progress: false

jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Checkout
        uses: actions/checkout@v4
      - name: Setup Pages
        uses: actions/configure-pages@v5
      - name: Build with Jekyll
        uses: actions/jekyll-build-pages@v1
        with:
          source: ./
          destination: ./_site
      - name: Get GitHub repositories
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const { data } = await github.rest.search.repos({q: &amp;#39;user:stasadev&amp;#39;})
            console.log(data)
            const fs = require(&amp;#39;fs&amp;#39;);
            fs.writeFileSync(&amp;#39;data.json&amp;#39;, JSON.stringify(data, null, 2));
      - name: Add JSON files to the site
        run: |
          cat data.json | sudo tee ./_site/data.json
      - name: Upload artifact
        uses: actions/upload-pages-artifact@v3
  deploy:
    environment:
      name: github-pages
      url: ${{ steps.deployment.outputs.page_url }}
    runs-on: ubuntu-latest
    needs: build
    steps:
      - name: Deploy to GitHub Pages
        id: deployment
        uses: actions/deploy-pages@v4
&lt;/code&gt;&lt;/pre&gt;
&lt;ol&gt;
&lt;li&gt;&lt;p&gt;Simplify the workflow file &lt;code&gt;.github/workflows/jekyll-gh-pages.yml&lt;/code&gt; by removing unrelated code to focus on testing the API call:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-yaml&quot;&gt;jobs:
  build:
    runs-on: ubuntu-latest
    steps:
      - name: Get my GitHub repositories
        uses: actions/github-script@v7
        with:
          github-token: ${{ secrets.GITHUB_TOKEN }}
          script: |
            const { data } = await github.rest.search.repos({q: &amp;#39;user:stasadev&amp;#39;})
            console.log(data)
            const fs = require(&amp;#39;fs&amp;#39;);
            fs.writeFileSync(&amp;#39;data.json&amp;#39;, JSON.stringify(data, null, 2));
&lt;/code&gt;&lt;/pre&gt;
&lt;p&gt;This workflow retrieves repositories for a specified user, writes them to &lt;code&gt;data.json&lt;/code&gt;, and outputs the result with &lt;code&gt;console.log()&lt;/code&gt;.&lt;/p&gt;
&lt;/li&gt;
&lt;li&gt;&lt;p&gt;Run the workflow locally with &lt;code&gt;act&lt;/code&gt; in your project&amp;#39;s root directory:&lt;/p&gt;
&lt;pre&gt;&lt;code class=&quot;language-bash&quot;&gt;act -P ubuntu-latest=catthehacker/ubuntu:act-latest \
    --bind \
    --job build \
    -s GITHUB_TOKEN=my_token
&lt;/code&gt;&lt;/pre&gt;
&lt;ul&gt;
&lt;li&gt;&lt;code&gt;-P ubuntu-latest=catthehacker/ubuntu:act-latest&lt;/code&gt;: Specifies the Docker image to use for the &lt;code&gt;ubuntu-latest&lt;/code&gt; environment. If not specified, &lt;code&gt;act&lt;/code&gt; uses the default image from its &lt;code&gt;.actrc&lt;/code&gt; file (see &lt;a href=&quot;https://github.com/nektos/act/issues/2219&quot;&gt;GitHub issue&lt;/a&gt; for more details).&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--bind&lt;/code&gt;: Mounts the current working directory into the container, allowing files generated in the container (like &lt;code&gt;data.json&lt;/code&gt;) to be accessible in the host file system.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;--job build&lt;/code&gt;: Tells &lt;code&gt;act&lt;/code&gt; to run only the &lt;code&gt;build&lt;/code&gt; job from the workflow.&lt;/li&gt;
&lt;li&gt;&lt;code&gt;-s GITHUB_TOKEN=my_token&lt;/code&gt;: Sets a secret (&lt;code&gt;GITHUB_TOKEN&lt;/code&gt;) for the workflow, where &lt;code&gt;my_token&lt;/code&gt; should be replaced with a valid GitHub token for authentication.&lt;/li&gt;
&lt;/ul&gt;
&lt;/li&gt;
&lt;/ol&gt;
&lt;p&gt;The primary advantage of using &lt;code&gt;act&lt;/code&gt; in this context is the ability to efficiently debug API calls locally in just a few seconds, without the need to commit changes, push them to GitHub, and wait for the workflow to complete, which typically takes several minutes.&lt;/p&gt;
&lt;h2&gt;Contributions welcome!&lt;/h2&gt;
&lt;p&gt;Your suggestions to improve this blog are welcome. You can do a PR to this blog adding your techniques. Info and a training session on how to do a PR to anything in ddev.com is at &lt;a href=&quot;ddev-website-for-contributors.md&quot;&gt;DDEV Website For Contributors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt; for information about upcoming user and contributor training sessions.&lt;/p&gt;
</content:encoded><category>Training</category><category>Guides</category></item><item><title>Release v1.23.5: Auto Port Assignment, Auto Timezones</title><link>https://ddev.com/blog/release-v1235-auto-port-assignment</link><guid isPermaLink="true">https://ddev.com/blog/release-v1235-auto-port-assignment</guid><description>DDEV&apos;s v1.23.5 release has support for automatically assigning ports when the default ports are already in use, automatically setting the timezone in the web container, and many other goodies</description><pubDate>Thu, 17 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/10/DDEV-v1.23.5.png&quot; alt=&quot;DDEV v1.23.5 release announcement&quot;&gt;&lt;p&gt;I&amp;#39;m happy to announce that &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.23.5&quot;&gt;DDEV v1.23.5&lt;/a&gt; was released today! This has 81 pull requests incorporated into it since v1.23.4, and a number of advances. Every single advance was pushed forward to community needs and community interaction, and we&amp;#39;re convinced that our great community is the source of DDEV&amp;#39;s strength. Thank you!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automatic Port Selection&lt;/strong&gt;: In the past, when you started up a DDEV project and the configured ports were already in use, you got an error message. This was &lt;a href=&quot;https://docs.ddev.com/en/stable/users/usage/troubleshooting/#web-server-ports-already-occupied&quot;&gt;easy to work around&lt;/a&gt;, and easy to configure for your system, but it was an unnecessary stop on people&amp;#39;s DDEV journey, especially for first-time users. Now, DDEV automatically selects an available port in this situation, and just continues starting your project using the available port. Have apache running? No problem. Have Lando running? No problem. You&amp;#39;ll probably want to use the default ports 80 and 443 as you go forward, but there&amp;#39;s no reason to stumble starting up a project for the first time. This ambitious and difficult feature was implemented by community member &lt;a href=&quot;https://github.com/agviu&quot;&gt;Alberto Viu&lt;/a&gt; and me and would never have happened without his initiative and expertise. Thanks!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Automatic Time Zones&lt;/strong&gt;: It&amp;#39;s been possible to specify the time zone for the web container for years, but automating it was suggested by community member &lt;a href=&quot;https://www.drupal.org/u/mandclu&quot;&gt;Martin Anderson-Clutz (mandclu)&lt;/a&gt; in the Drupal Slack and implemented by Stas. We think that it will &amp;quot;just work&amp;quot; for almost everybody.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;ddev get&lt;/code&gt; becomes &lt;code&gt;ddev add-on&lt;/code&gt;&lt;/strong&gt;: Community member &lt;a href=&quot;https://github.com/GuySartorelli&quot;&gt;Guy Sartorelli&lt;/a&gt; took this one on and nailed it. He noticed that &lt;code&gt;ddev get&lt;/code&gt; had outgrown its name and now had too many weird permutations, so now we have &lt;code&gt;ddev add-on list&lt;/code&gt; and &lt;code&gt;ddev add-on remove&lt;/code&gt; and things that make more sense. Don&amp;#39;t worry, the same capabilities are still there, and &lt;code&gt;ddev get&lt;/code&gt; still works the way it did, it just nags you a little bit when you use the old command.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Windows ARM64 Support&lt;/strong&gt;: Those fancy new Windows ARM64 laptops are being promoted for their AI, but they&amp;#39;re fantastic machines for performance and battery life. DDEV has full support for them, both on WSL2 and traditional Windows.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PostgreSQL 17&lt;/strong&gt; came out and is now supported by DDEV.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;PHP8.4 RC1&lt;/strong&gt; is now included. It&amp;#39;s still missing just a few extensions, which hopefully will be there at PHP 8.4 release in November.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;&lt;code&gt;ddev debug rebuild&lt;/code&gt; is the renamed &lt;code&gt;ddev debug refresh&lt;/code&gt;&lt;/strong&gt;. It&amp;#39;s a great way to test and debug Dockerfile problems and &lt;code&gt;webimage_extra_packages&lt;/code&gt; problems, and now has the ability to run for just one service or for all, with or without Docker cache.&lt;/p&gt;
&lt;p&gt;You&amp;#39;ll find loads more in the &lt;a href=&quot;https://github.com/ddev/ddev/releases/tag/v1.23.5&quot;&gt;release notes&lt;/a&gt;, but I just wanted to stop by and say thank you to our wonderful community for continuing to shape DDEV and its future.&lt;/p&gt;
&lt;p&gt;Our next release is planned to be a major release, v1.24.0, and will have PHP 8.4.0 and will change the default PHP version for new projects to PHP 8.3. We expect to have MySQL 8.4 in there as well.&lt;/p&gt;
&lt;p&gt;Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;. And we&amp;#39;d love to have you sign up for the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;monthly newsletter&lt;/a&gt;.&lt;/p&gt;
</content:encoded><category>Announcements</category></item><item><title>Contributor Training: Using `ddev debug test` to support others</title><link>https://ddev.com/blog/ddev-debug-test-contributor-training</link><guid isPermaLink="true">https://ddev.com/blog/ddev-debug-test-contributor-training</guid><description>Contributor training - interpreting and using `ddev debug test` to support others.</description><pubDate>Sat, 12 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/10/ddev-debug-test-banner.png&quot; alt=&quot;Using `ddev debug test` to support others&quot;&gt;&lt;p&gt;Here&amp;#39;s our October 9, 2024 &lt;a href=&quot;https://ddev.com/blog/category/training&quot;&gt;Contributor Training&lt;/a&gt; on using &lt;code&gt;ddev debug test&lt;/code&gt; to help other users:&lt;/p&gt;
&lt;div class=&quot;video-container&quot;&gt;
&lt;iframe width=&quot;560&quot; height=&quot;315&quot; src=&quot;https://www.youtube.com/embed/cXsCX2pBPkA?si=QgjPRkHMZUIKH2jc&quot; title=&quot;YouTube video player&quot; frameborder=&quot;0&quot; allow=&quot;accelerometer; autoplay; clipboard-write; encrypted-media; gyroscope; picture-in-picture; web-share&quot; referrerpolicy=&quot;strict-origin-when-cross-origin&quot; allowfullscreen&gt;&lt;/iframe&gt;
&lt;/div&gt;

&lt;h2&gt;What is &lt;code&gt;ddev debug test&lt;/code&gt; anyway?&lt;/h2&gt;
&lt;p&gt;&lt;code&gt;ddev debug test&lt;/code&gt; is really just a &lt;a href=&quot;https://github.com/ddev/ddev/blob/main/cmd/ddev/cmd/scripts/test_ddev.sh&quot;&gt;shell script&lt;/a&gt; embedded in the &lt;code&gt;ddev&lt;/code&gt; binary that tries to answer all the questions we&amp;#39;ve learned to ask in support sessions in our &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;DDEV Discord channel&lt;/a&gt; and the &lt;a href=&quot;https://github.com/ddev/ddev/issues&quot;&gt;issue queue&lt;/a&gt;. There are so many different things that can affect people&amp;#39;s DDEV experience, and asking the questions one by one is hard. So when people just run that one command and we can read through the results, it&amp;#39;s a big win.&lt;/p&gt;
&lt;h2&gt;What does it check?&lt;/h2&gt;
&lt;ul&gt;
&lt;li&gt;DDEV version, architecture&lt;/li&gt;
&lt;li&gt;Docker provider and configuration&lt;/li&gt;
&lt;li&gt;Operating system and context&lt;/li&gt;
&lt;li&gt;Project configuration and specialized configuration&lt;/li&gt;
&lt;li&gt;Network connectivity inside and outside the container, and DNS name lookup&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;code&gt;ddev debug test&lt;/code&gt; will often suggest what&amp;#39;s going wrong with a person&amp;#39;s DDEV/Docker/OS setup, making sure we know what version they&amp;#39;re using and what context they&amp;#39;re using it in.&lt;/p&gt;
&lt;h2&gt;How can I contribute to it?&lt;/h2&gt;
&lt;p&gt;Add to the script with a PR. Make sure you&amp;#39;ve manually tested it.&lt;/p&gt;
&lt;h2&gt;Contributions welcome!&lt;/h2&gt;
&lt;p&gt;Your suggestions to improve this blog are welcome. You can do a PR to this blog adding your techniques. Info and a training session on how to do a PR to anything in ddev.com is at &lt;a href=&quot;ddev-website-for-contributors.md&quot;&gt;DDEV Website For Contributors&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Follow the &lt;a href=&quot;https://ddev.com/newsletter&quot;&gt;DDEV Newsletter&lt;/a&gt; for information about upcoming user and contributor training sessions.&lt;/p&gt;
</content:encoded><category>Training</category><category>Guides</category></item><item><title>DDEV October 2024 Newsletter</title><link>https://ddev.com/blog/ddev-oct-2024-newsletter</link><guid isPermaLink="true">https://ddev.com/blog/ddev-oct-2024-newsletter</guid><description>DDEV October 2024 Newsletter</description><pubDate>Tue, 01 Oct 2024 00:00:00 GMT</pubDate><content:encoded>&lt;img src=&quot;https://ddev.com/img/blog/2024/10/mount-garfield-palisade.jpg&quot; alt=&quot;Mount Garfield above Palisade&quot;&gt;&lt;p&gt;&lt;strong&gt;Happy October from DDEV&lt;/strong&gt;! I just got back from DrupalCon Barcelona and things are finally starting to cool down here in Palisade, Colorado, USA.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Podcast&lt;/strong&gt;! &lt;a href=&quot;https://www.linkedin.com/in/chadwcarlson/&quot;&gt;Chad Carlson&lt;/a&gt; of &lt;a href=&quot;https://ddev.com/blog/platform-sh-becomes-a-lead-sponsor-of-ddev/&quot;&gt;DDEV Lead Sponsor&lt;/a&gt; &lt;a href=&quot;https://Platform.sh&quot;&gt;Platform.sh&lt;/a&gt; had me on the Change Mode podcast and we had loads of fun. Learn more about the history of DDEV (and my TRS-80 Model 1 Level 2) on the &lt;a href=&quot;https://www.podcastics.com/podcast/episode/chmod-106-code-community-and-ddev-randy-fays-journey-311577/&quot;&gt;Change Mode Podcast&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DrupalCon Barcelona&lt;/strong&gt;: I got to see lots of friends old and new in Barcelona. Four training session BoFs, a full-day contribution mentoring session, and loads of fun. &lt;strong&gt;&lt;a href=&quot;https://ddev.com/blog/drupalcon-barcelona-2024&quot;&gt;Read about it on ddev.com&lt;/a&gt;.&lt;/strong&gt;&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;GitHub Codespaces is working well with DDEV&lt;/strong&gt;: We used to add a lot of caveats about Codespaces, but the problems were fixed with a new workaround shown in the &lt;a href=&quot;https://docs.ddev.com/en/latest/users/install/ddev-installation/#ddev-installation-codespaces&quot;&gt;DDEV docs&lt;/a&gt; say how to do it. Give it a try!&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;DDEV Notes from around the web:&lt;/strong&gt;&lt;/p&gt;
&lt;ul&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://ddev.com/blog/ddev-in-gitlab-ci&quot;&gt;Using DDEV in GitLab CI Tests&lt;/a&gt;&lt;/strong&gt; - Jochen Roth sorted out the difficulty and made this available to all. (Note that lots of people use DDEV for automated tests of their websites in GitHub Workflows using the &lt;a href=&quot;https://github.com/ddev/github-action-setup-ddev&quot;&gt;github-action-setup-ddev action&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://misterdigital.es/instalar-prestashop-en-ddev/&quot;&gt;Install Prestashop in DDEV&lt;/a&gt;&lt;/strong&gt; (in Spanish, but Google Translate makes it very accessible).&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://craftcms-launchpad.mandrasch.eu/&quot;&gt;CraftCMS Launchpad&lt;/a&gt;&lt;/strong&gt; by prolific contributor &lt;a href=&quot;https://mandrasch.dev/&quot;&gt;@mandrasch&lt;/a&gt;. Interactive CraftCMS demos in your browser, powered by DDEV.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://github.com/s2b/ddev-vite-sidecar&quot;&gt;DDEV Vite Sidecar add-on&lt;/a&gt;&lt;/strong&gt; by @s2b. A fresh approach to Vite with DDEV. (See also the authoritative and maintained summary of Vite approaches on &lt;a href=&quot;https://ddev.com/blog/working-with-vite-in-ddev/&quot;&gt;ddev.com&lt;/a&gt;.)&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.drupal.org/docs/develop/local-server-setup/windows-development-environment/installing-drupal-with-ddev-in-wsl2-on-windows&quot;&gt;WSL2 with DDEV And Drupal&lt;/a&gt;&lt;/strong&gt; on drupal.org: This outstanding and detailed explanation is a gift to anybody using WSL2 and Drupal.&lt;/li&gt;
&lt;li&gt;&lt;strong&gt;&lt;a href=&quot;https://www.velir.com/ideas/2024/09/17/how-we-contributed-a-quality-of-life-improvement-to-ddev&quot;&gt;How We Contributed a Quality of Life Improvement to DDEV&lt;/a&gt;&lt;/strong&gt; by &lt;a href=&quot;https://kevinquillen.com/&quot;&gt;Kevin Quillen&lt;/a&gt;. An inspiration for anybody who wants to scratch an itch on DDEV!&lt;/li&gt;
&lt;/ul&gt;
&lt;p&gt;&lt;strong&gt;DDEV on Windows ARM64&lt;/strong&gt; (the &lt;a href=&quot;https://www.qualcomm.com/news/onq/2024/06/what-on-earth-is-a-copilot-plus-pc&quot;&gt;Qualcomm Snapdragon Windows Copilot&lt;/a&gt; machines you’ve been hearing about.) I bought a Microsoft Surface Laptop on my own dime to see how it would do with DDEV, and it’s great on WSL2, not ready for traditional Windows. The &lt;a href=&quot;https://docs.ddev.com/en/stable/users/install/ddev-installation/#windows&quot;&gt;preferred install technique&lt;/a&gt; (docker-ce inside WSL2) works fine except that it stumbles installing &lt;code&gt;ddev.exe&lt;/code&gt; on the Windows side. I hope to spend some time on the open &lt;a href=&quot;https://github.com/ddev/ddev/issues/6344&quot;&gt;Windows ARM64 issue&lt;/a&gt; before I need to decide whether to send it back or not. Overall, it’s a delightful machine and does great with DDEV.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Add-On Registry funding&lt;/strong&gt;: We applied to the TYPO3 community’s grant process to fund the initiative to &lt;a href=&quot;https://github.com/ddev/ddev/issues/6383&quot;&gt;add a web-based DDEV Add-on Registry&lt;/a&gt;. Thanks to those of you who voted! We came in 5th and the top 4 projects were funded. This remains a priority though, and we’d love to have your participation and your organization’s participation.&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;Fully funding Maintainer Stas&lt;/strong&gt;: Our key financial goal is to &lt;a href=&quot;https://ddev.com/blog/lets-fund-stas-maintainer/&quot;&gt;fully fund @stasadev so he can work exclusively on DDEV&lt;/a&gt;. We’re about 35% of the way to that goal, but have not been making progress on that in recent months. We need about $3000/month in increased pledges from organizations and individuals. See &lt;a href=&quot;https://github.com/sponsors/ddev&quot;&gt;Full information about supporting DDEV&lt;/a&gt;. We’re happy to invoice you, happy to &lt;a href=&quot;https://cal.com/randyfay/30min&quot;&gt;do a call discussing this&lt;/a&gt;, and would love it if you’d include DDEV in your 2025 budgeting process. (Our current status: We receive about $4000-$5000/month, spend about $6000/month. Bank balance is about $13,000, down from $15,000 last month.)&lt;/p&gt;
&lt;p&gt;&lt;strong&gt;THANKS to all of you who are supporting DDEV’s path to sustainability&lt;/strong&gt; and who have gotten your organizations to do so.&lt;/p&gt;
&lt;p&gt;Want to keep up as the month goes along? Follow our &lt;a href=&quot;https://ddev.com/blog/&quot;&gt;blog&lt;/a&gt;, &lt;a href=&quot;https://www.linkedin.com/company/ddev-foundation&quot;&gt;LinkedIn&lt;/a&gt;, &lt;a href=&quot;https://fosstodon.org/@ddev&quot;&gt;Mastodon&lt;/a&gt;, and join us on &lt;a href=&quot;https://ddev.com/s/discord&quot;&gt;Discord&lt;/a&gt;.&lt;/p&gt;
&lt;p&gt;Happy October from Randy Fay, DDEV Project Lead.&lt;/p&gt;
</content:encoded><category>Community</category></item></channel></rss>