-
Notifications
You must be signed in to change notification settings - Fork 0
Expand file tree
/
Copy pathfeed.xml
More file actions
227 lines (135 loc) · 33.7 KB
/
feed.xml
File metadata and controls
227 lines (135 loc) · 33.7 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
158
159
160
161
162
163
164
165
166
167
168
169
170
171
172
173
174
175
176
177
178
179
180
181
182
183
184
185
186
187
188
189
190
191
192
193
194
195
196
197
198
199
200
201
202
203
204
205
206
207
208
209
210
211
212
213
214
215
216
217
218
219
220
221
222
223
224
225
226
227
<?xml version="1.0" encoding="utf-8"?><feed xmlns="http://www.w3.org/2005/Atom" ><generator uri="https://jekyllrb.com/" version="4.4.1">Jekyll</generator><link href="https://partout.io/feed.xml" rel="self" type="application/atom+xml" /><link href="https://partout.io/" rel="alternate" type="text/html" /><updated>2026-04-20T22:07:52+02:00</updated><id>https://partout.io/feed.xml</id><title type="html">Partout is the easiest way to build cross-platform tunnel apps.</title><subtitle>Partout is the easiest way to build cross-platform tunnel apps. Set up a VPN in a few lines so that you can focus on your product.</subtitle><author><name>Davide De Rosa</name></author><entry><title type="html">OpenVPN –tls-crypt-v2 and ‘Split DNS’</title><link href="https://partout.io/2026/04/openvpn-tls-crypt-v2-and-split-dns/" rel="alternate" type="text/html" title="OpenVPN –tls-crypt-v2 and ‘Split DNS’" /><published>2026-04-20T00:00:00+02:00</published><updated>2026-04-20T00:00:00+02:00</updated><id>https://partout.io/2026/04/openvpn-tls-crypt-v2-and-split-dns</id><content type="html" xml:base="https://partout.io/2026/04/openvpn-tls-crypt-v2-and-split-dns/"><![CDATA[<h2 id="on-q1-and-android">On Q1 and Android</h2>
<p>These months have seen steady yet seemingly dummy releases, but I can’t even describe <a href="https://github.com/partout-io/passepartout/milestones?state=closed">the amount of work</a> behind them to rethink Passepartout as a cross-platform application on top of a C ABI. I don’t feel like providing another deadline that I won’t meet, so I’ll just say that 99% of my work volume is towards Partout and the MVP of Passepartout for Android.</p>
<h2 id="parity-with-openvpn">Parity with OpenVPN</h2>
<p>Passepartout will <em>never</em> be a 1:1 replacement for the official OpenVPN client, and some work has to be done at some point to improve performance. What matters, though, is that Passepartout supports those features users require the most. One of them was <code class="language-plaintext highlighter-rouge">tls-crypt-v2</code>, and version 3.7.0 has finally introduced it.</p>
<h2 id="split-dns">Split DNS</h2>
<p>Passepartout 3.8.0 adds something quite unique in the Apple ecosystem, which is <em>true</em> <a href="https://github.com/partout-io/passepartout/issues/503">split DNS</a>. You will find the (paid) feature in the DNS module under the name “Only for configured domains”. By enabling this option, the search domains will act as a filter to determine whether a DNS query goes through the VPN or not. This makes sense in those scenarios where the VPN is not meant to replace the default gateway, but rather to provide access to a private network with its internally resolved hostnames.</p>
<p>Thanks to <a href="https://github.com/awein">Andrew</a> for the original report and feature request.</p>
<h2 id="exporting-configurations">Exporting configurations</h2>
<p>Another (paid) feature added in 3.7.0 is the ability to export OpenVPN/WireGuard modules as configuration files, i.e., .ovpn and .conf files respectively. The latter is supported in the official (and free) WireGuard app, but you’ll rarely find apps that export OpenVPN profiles as .ovpn or via AirDrop, at least on iOS. I’m proud to say that Passepartout is one of them.</p>
<h2 id="leaving-reddit">Leaving Reddit</h2>
<p>This is where the project was born in 2018, but it seems to me that <a href="https://www.reddit.com/r/passepartout">Reddit</a> no longer is the right place to start constructive and well-mannered conversations. Therefore, all support, bug reports, and feature requests are now handled on <a href="https://github.com/orgs/partout-io/discussions">GitHub Discussions</a>. The subreddit remains open for general discussion, but I’m out, except for the typical project announcements.</p>
<p><a href="https://github.com/partout-io/partout">GitHub</a> is now the single source of truth for the development of Partout/Passepartout.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="cross-platform" /><category term="2026" /><summary type="html"><![CDATA[On Q1 and Android]]></summary></entry><entry><title type="html">2026: One year later</title><link href="https://partout.io/2026/01/2026-one-year-later/" rel="alternate" type="text/html" title="2026: One year later" /><published>2026-01-04T00:00:00+01:00</published><updated>2026-01-04T00:00:00+01:00</updated><id>https://partout.io/2026/01/2026-one-year-later</id><content type="html" xml:base="https://partout.io/2026/01/2026-one-year-later/"><![CDATA[<h2 id="2025-was-hard">2025 was HARD</h2>
<p>Last year, I published two posts about <a href="/2025/03/rewriting-passepartout-for-v3/">the reasons for Passepartout v3</a> and the <a href="/2025/03/the-roadmap-for-2025/">challenging two months</a> it took to recover the app stability after its first release.</p>
<p>There’s been 51 releases in 2025, about one per week, and not because I deem regular updates necessary per se. In fact, weekly app updates with fake changelogs typically suggest corporate BS.</p>
<p>In my case, I refactored <em>so many</em> 1000s of lines of sensitive code that the small-to-transparent updates were my way to avoid catastrophes. It’s easy to spot regressions in short development cycles, and the new release strategy has proven to be very effective throughout the year.</p>
<h2 id="100-open-source-software-oss">100% Open-Source Software (OSS)</h2>
<p>At some point during the year, I decided to make <strong>Partout fully open-source</strong> again. The goal was for it to showcase multiple aspects of free software development, including:</p>
<ul>
<li>An open-source project that is <strong>financially sustainable</strong>.</li>
<li><strong>Reproducible builds</strong> in Passepartout CI/CD.</li>
<li>Not only coding, also <a href="https://github.com/orgs/partout-io/projects?query=is%3Aopen"><strong>planning in public</strong></a>.</li>
<li>Being a reference project for <a href="https://davidederosa.com/cross-platform-swift/"><strong>cross-platform Swift</strong></a>.</li>
</ul>
<p>The first point is pretty unique nowadays, and I’m proud that Passepartout makes the whole project survive and thrive without external support except for the satisfied customers around the world.</p>
<p>Making Partout and Passepartout open-source is how I give back to the programming community, especially to the indie developers struggling to make a dent. I wish my stories could inspire and guide others to turn their side-project into self-sustaining products.</p>
<h2 id="expectations-for-2026">Expectations for 2026</h2>
<p>Year 2025 exceeded the expectations I had at the beginning of the year, by far. Some seemingly impossible things became a reality, whereas a few existing features went off the radar.</p>
<p>For the record, these are the GitHub Projects of:</p>
<ul>
<li><a href="https://github.com/orgs/partout-io/projects/23/views/2">2026 Q1</a></li>
<li><a href="https://github.com/orgs/partout-io/projects/20/views/2">2025 Q2-Q4</a> (Closed)</li>
<li><a href="https://github.com/orgs/partout-io/projects/9/views/2">2025 Q1</a> (Closed)</li>
<li><a href="https://github.com/orgs/partout-io/projects/1/views/8">2024</a> (Closed, largely private)</li>
</ul>
<h3 id="cross-platform">Cross-platform</h3>
<p>One year ago, making Passepartout cross-platform was utopic because:</p>
<ul>
<li>I had never really considered the idea.</li>
<li>Swift is clumsy outside of the Apple ecosystem.</li>
</ul>
<p>When I decided to take my chances around March, though, I (very) patiently figured out the (many) steps to take to make it real. Today, I am at around 80-85% to bring Passepartout to all the operating systems that Swift supports (Android, Windows, Linux).</p>
<p>The Android MVP was part of the <a href="/2025/11/update-q4-2025/">previous update</a>, but it’s still in the works because I underestimated the needed effort, plus “life issues” showed up. Windows/Linux will follow later on. Cross-platform remains the top priority of 2026.</p>
<h3 id="connectivity">Connectivity</h3>
<p>Passepartout is starting to lag behind in terms of connectivity options. It’s not that I don’t care, it’s only a matter of working volume, as usual. The work for cross-platform is pretty intense, but connectivity comes next in my priorities:</p>
<ul>
<li>Increase feature-parity with OpenVPN</li>
<li>Other VPN protocols</li>
<li>Better support for proxies</li>
<li>Possibly more obfuscation</li>
</ul>
<h3 id="providers">Providers</h3>
<p>The other goal of Q4 was the umpteenth rework of the providers integration. Honestly, I’m thinking of discontinuing the feature because the cost/benefit of maintaining it is ridiculously disadvantageous.</p>
<p>The primary target of Passepartout is people using personal or company servers. Add to that, VPN providers don’t easily offer access to their public APIs. All in all, providers are a huge PITA with marginal returns on investment, and they reguarly take my time away from things that matter more to the audience.</p>
<p>For what it’s worth, and unfortunately, the <a href="https://mullvad.net/it/blog/removing-openvpn-15th-january-2026">Mullvad deadline for OpenVPN</a> will not be met. The Mullvad provider is expected to stop working in Passepartout in the upcoming weeks. Manually imported WireGuard profiles will work as usual.</p>
<h3 id="follow-passepartout-on-reddit">Follow Passepartout on Reddit</h3>
<p>Subscribe to the <a href="https://www.reddit.com/r/passepartout/">Passepartout subreddit</a> for the latest updates about the app.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="cross-platform" /><category term="2025" /><category term="2026" /><summary type="html"><![CDATA[2025 was HARD]]></summary></entry><entry><title type="html">Update: Q4 2025</title><link href="https://partout.io/2025/11/update-q4-2025/" rel="alternate" type="text/html" title="Update: Q4 2025" /><published>2025-11-04T00:00:00+01:00</published><updated>2025-11-04T00:00:00+01:00</updated><id>https://partout.io/2025/11/update-q4-2025</id><content type="html" xml:base="https://partout.io/2025/11/update-q4-2025/"><![CDATA[<p>The year is ending, and in this last quarter I had to reorganize a few priorities of the project. Let me tell you more about them.</p>
<h2 id="remote-configuration">Remote configuration</h2>
<p>A few months ago, I introduced the use of remote <a href="https://martinfowler.com/articles/feature-toggles.html">feature flags</a> in Passepartout. This was a game-changer to avoid disruption when making potentially dangerous changes to the app behavior, and allowed me to make huge leaps forward when it comes to the cross-platform initiative.</p>
<p>During September and October, I went through the activation of the new OpenVPN and WireGuard cross-platform implementations under the hood, which from time to time led to inevitable bugs. This time, though, I could turn off the faulty code instantly without going through Apple review. The approach sped up the internal app evolution immensely, and the upcoming 3.6.0 should wrap up the most difficult stage of porting Passepartout to new platforms, which was the VPN layer.</p>
<p>Thanks to all the kind users that helped me resolve the bugs that emerged along the way. I couldn’t make it without your support.</p>
<h2 id="android-mvp">Android MVP</h2>
<p>This goal alone should shed light on those cross-platform toggles in Preferences > Advanced that some users may have noticed recently in Passepartout.</p>
<p>Together with remote configurations, those toggles allowed me to live-test the new cross-platform implementations of the OpenVPN/WireGuard layers. If things went really wrong, turning off the remote configuration would immediately restore operation. Rinse and repeat until stability. The result of this process is however amazing, because it’s the living proof that Passepartout <em>will</em> work outside of the Apple platforms without going through long and flaky beta phases.</p>
<p>That’s why a stable 3.6.0 would mean that things are finally aligned to start the foundations of non-Apple apps, and <strong>Passepartout for Android</strong> is the first one in my list. We’re talking about a <em>very</em> minimal app here, but last summer I’ve done enough tests to confirm that the VPN functionality of Partout <a href="https://www.reddit.com/r/passepartout/comments/1n3l592/hey_i_made_it_work_on_android/">works on Android</a>. Windows and Linux are planned for the first half of 2026, but take it with a grain of salt, nothing is set in stone.</p>
<h2 id="interoperability">Interoperability</h2>
<p>Partout already operates on data structures that are very friendly to import/export operations, but Passepartout didn’t have a UI that exposed them. Version 3.6.0 will introduce a few features for that matter, specifically:</p>
<ul>
<li><strong>Export a profile</strong> in a human-readable Partout/Passepartout JSON format, also suitable for import.</li>
<li><strong>Share a profile</strong> via AirDrop or any other available means.</li>
<li><strong>Import a profile via text or QR</strong>, to increase feature-parity with the official WireGuard app in particular.</li>
<li><strong>Copy modules</strong> across profiles, as <a href="https://github.com/orgs/partout-io/discussions/1258">discussed here</a>.</li>
</ul>
<p>Sharing buttons will be available through the “iCloud and Sharing” paywall, a feature included in all the “Core” and “Complete” packages.</p>
<p>Going forward, the JSON format will be the universal standard for all the Partout/Passepartout apps, and regardless of the target OS. I like the idea of promoting a custom file format as a crucial step towards brand-awareness. It goes without saying, other protocol-specific formats keep being supported for import, and later versions will also be able to export single modules like OpenVPN (as .ovpn) and WireGuard (as .conf).</p>
<h2 id="farewell-to-openvpn-compression">Farewell to OpenVPN compression</h2>
<p>Compression support will be removed from OpenVPN in December 2025 due to the old <a href="https://openvpn.net/security-advisory/the-voracle-attack-vulnerability/">VORACLE</a> vulnerability. OpenVPN Inc. has deprecated compression for years, and any decently sized VPN provider shouldn’t be using compression at the time being. Some users may still be affected in legacy environments, but this is non-negotiable.</p>
<p>Therefore, by 2026, compression will be gone for good in Passepartout. Make sure to update your server settings accordingly, or encourage your providers to not use compression in case they do.</p>
<h2 id="wireguard-in-providers">WireGuard in providers</h2>
<p>Let’s get this straight. Providers are the <em>most</em> annoying feature to maintain in Passepartout, to the point that sometimes I regret having introduced it (heh). Two months ago, I was about to add the WireGuard integration to providers, but then I had to take a step back because the current implementation of the Passepartout providers bears an excessive amount of complexity compared to the value that it offers.</p>
<p>So, this had to be taken more carefully to prevent progressive rot of the codebase. The providers in general will be re-thought and simplified, once again, and only after that will the WireGuard integration be reconsidered. For what it’s worth, I’ll try my best to meet <a href="https://mullvad.net/it/blog/removing-openvpn-15th-january-2026">the Mullvad deadline</a>.</p>
<p>If you have suggestions about how you would integrate providers in Passepartout, please <a href="https://www.reddit.com/r/passepartout/">post them on Reddit</a>.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="cross-platform" /><category term="2025" /><summary type="html"><![CDATA[The year is ending, and in this last quarter I had to reorganize a few priorities of the project. Let me tell you more about them.]]></summary></entry><entry><title type="html">Update: Q3 2025</title><link href="https://partout.io/2025/09/update-q3-2025/" rel="alternate" type="text/html" title="Update: Q3 2025" /><published>2025-09-08T00:00:00+02:00</published><updated>2025-09-08T00:00:00+02:00</updated><id>https://partout.io/2025/09/update-q3-2025</id><content type="html" xml:base="https://partout.io/2025/09/update-q3-2025/"><![CDATA[<p>This post starts a trend of quarterly updates about Passepartout. Being close to the end of Q3, this is mostly an overview of what I’ve done in the recent months, with an outlook on what I’m doing next.</p>
<h2 id="rebranding-to-partout">Rebranding to <em>Partout</em></h2>
<p>Passepartout will not change its name, but it will be part of a broader project named after its backbone: <em>Partout</em>. Partout is the [Swift library][https://github.com/partout-io/partout], now also cross-platform, of which Passepartout aims to be an elegant showcase. Easier to pronounce, shorter to type, the library I’m building is the very heart of Passepartout, and aims to provide a comprehensive, portable framework to create tunneling software. This website will soon reflect this new direction, I hope you’ll like it.</p>
<h2 id="cross-platform-is-real">Cross-platform is REAL!</h2>
<p>This is the grand goal of 2025, and the intense work of Q3 has taken me incredibly close to the finish line. I drafted the simplest PoC to test VPN connectivity, and I’m thrilled to say that it worked on all the new platforms I intend to support. I managed to connect with Partout to both OpenVPN and WireGuard servers on Linux, Windows, and even Android! It will take patient polish for a public MVP, but I’m positive that something will see the light by the end of the year.</p>
<p>Considering that in January I had little hope that Swift could ever be so ubiquitous, this accomplishment feels kind of <em>legendary</em> to me. I’m proud, and despite the difficulties, the whole experience of native multiplatform has been fun and deeply satisfying.</p>
<p>If you want to learn more, I’ve been writing about this long journey in <a href="https://davidederosa.com/cross-platform-swift/">“Cross-platform Swift”</a>, a blog series that I’ve been publishing on my personal website. I promise, if you are a Swift developer willing to port your apps and libraries on non-Apple platforms, you will find my discoveries very helpful.</p>
<h2 id="new-features-wisely">New features, wisely</h2>
<p>As stability is paramount in Passepartout, I’ve taken a more conservative approach to new features. All the disruptive additions are now rolled out dynamically, in a way that I can instantly revert a faulty update without involving the tedious App Review in the process. The cross-platform initiative is taking 100% of my focus, so new features are still on hold.</p>
<p>What’s been done:</p>
<ul>
<li><strong>New paywall</strong>: Recently activated to make the purchase flow a bit less confusing.</li>
<li><strong>TV web import</strong>: Today, I restored the web QR feature on the Apple TV, which finally allows uploading profiles without an iOS or macOS device. Incidentally, without even iCloud. The feature will be under observation for 2 weeks before deeming it stable. If so, a convenient <strong>Send to TV</strong> button will be added to the native apps as well.</li>
</ul>
<p>What’s coming next:</p>
<ul>
<li><strong>WireGuard in providers</strong>: Starting with Mullvad. This is mostly done, but I’m trying not to rush it. Let’s give it a couple of weeks still.</li>
<li><strong>Interoperability</strong>: Importing and exporting profiles and modules, plus a universal format for Passepartout/Partout profiles. Sharing profiles with other people. These elements will give the project a stronger and unique identity.</li>
</ul>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="cross-platform" /><category term="2025" /><summary type="html"><![CDATA[This post starts a trend of quarterly updates about Passepartout. Being close to the end of Q3, this is mostly an overview of what I’ve done in the recent months, with an outlook on what I’m doing next.]]></summary></entry><entry><title type="html">Discontinuining support for the ProtonVPN provider</title><link href="https://partout.io/2025/07/discontinuing-support-for-the-protonvpn-provider/" rel="alternate" type="text/html" title="Discontinuining support for the ProtonVPN provider" /><published>2025-07-18T00:00:00+02:00</published><updated>2025-07-18T00:00:00+02:00</updated><id>https://partout.io/2025/07/discontinuing-support-for-the-protonvpn-provider</id><content type="html" xml:base="https://partout.io/2025/07/discontinuing-support-for-the-protonvpn-provider/"><![CDATA[<p>Recently, I realized that the public ProtonVPN API <a href="https://www.reddit.com/r/ProtonVPN/comments/1kr3yu9/byebye_api_power_users_have_been_shut_out_by/">was made private</a>, which in turn left the infrastructure in Passepartout outdated for a while. In my opinion, these are reasonable moves by public providers that don’t want their customers to use third party apps, because it would require additional customer support. While I believe that offering API plans for integrating alternative clients or resellers would be a nice addition, it’s absolutely fine if they don’t want to.</p>
<p>Therefore, the ProtonVPN provider will be removed next week from the supported Passepartout providers.</p>
<p>You can find more information <a href="https://github.com/partout-io/partout/pull/129">in the related PR</a>.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="protonvpn" /><category term="providers" /><summary type="html"><![CDATA[Recently, I realized that the public ProtonVPN API was made private, which in turn left the infrastructure in Passepartout outdated for a while. In my opinion, these are reasonable moves by public providers that don’t want their customers to use third party apps, because it would require additional customer support. While I believe that offering API plans for integrating alternative clients or resellers would be a nice addition, it’s absolutely fine if they don’t want to.]]></summary></entry><entry><title type="html">Modern cross-platform encryption</title><link href="https://partout.io/2025/07/modern-cross-platform-encryption/" rel="alternate" type="text/html" title="Modern cross-platform encryption" /><published>2025-07-11T00:00:00+02:00</published><updated>2025-07-11T00:00:00+02:00</updated><id>https://partout.io/2025/07/modern-cross-platform-encryption</id><content type="html" xml:base="https://partout.io/2025/07/modern-cross-platform-encryption/"><![CDATA[<p>As mentioned <a href="/2025/04/porting-passepartout-to-windows/">in an earlier post</a>, I’ve invested a good part of the recent months in porting Passepartout on non-Apple platforms. Version 3.5.4 quietly brings to life the first milestone of this initiative, which is opting into <em>modern cryptography</em>.</p>
<p><img src="/s/posts/2025-07-13-01.png" alt="Snapshot of the new preference" /></p>
<p>By enabling the “Modern cryptography” preference, Passepartout will prefer the new cross-platform implementations over the historical Apple-only code. This is an experimental feature today, which means that connectivity might still be unstable, but the payoff is a dramatic boost in networking performance, more features, and prompt bugfixes.</p>
<h2 id="a-way-to-support-cross-platform-development">A way to support cross-platform development</h2>
<p>Testing modern cryptography today is a great way to support the project, as Passepartout will default to modern cryptography on non-Apple platforms. Switching to it and providing feedback will contribute to a robust Windows/Linux/Android MVP in the future.</p>
<p>The feature is available to everybody, free and paying customers.</p>
<p>You can read articles on my website about how I’m making Passepartout and its backend, <a href="https://github.com/partout-io/partout">Partout</a>, a cross-platform application.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="app-store" /><category term="cross-platform" /><category term="openvpn" /><category term="swift" /><summary type="html"><![CDATA[As mentioned in an earlier post, I’ve invested a good part of the recent months in porting Passepartout on non-Apple platforms. Version 3.5.4 quietly brings to life the first milestone of this initiative, which is opting into modern cryptography.]]></summary></entry><entry><title type="html">The Passepartout Mac app is now available outside the App Store</title><link href="https://partout.io/2025/06/the-mac-app-is-now-available-outside-the-app-store/" rel="alternate" type="text/html" title="The Passepartout Mac app is now available outside the App Store" /><published>2025-06-02T00:00:00+02:00</published><updated>2025-06-02T00:00:00+02:00</updated><id>https://partout.io/2025/06/the-mac-app-is-now-available-outside-the-app-store</id><content type="html" xml:base="https://partout.io/2025/06/the-mac-app-is-now-available-outside-the-app-store/"><![CDATA[<p>Today, I’m thrilled to announce that the Passepartout Mac app can be <a href="https://passepartoutvpn.app/#app-mac">finally downloaded without the App Store</a>, and soon even via the <a href="https://github.com/orgs/partout-io/discussions/1244">Homebrew Cask</a>. It took serious work for it to take off, but after a few weeks of daily usage it seems to behave as expected.</p>
<p>There are still limitations in that the app, for now, doesn’t support payments. This means that paid features are not available (yet), but they will be introduced at a later time:</p>
<ul>
<li>Apple TV</li>
<li>iCloud</li>
<li>Network settings</li>
<li>On-demand</li>
<li>OTP</li>
<li>Providers</li>
</ul>
<p>You can read a side story about the development of this new, standalone Mac app on my website.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="app-store" /><category term="mac" /><summary type="html"><![CDATA[Today, I’m thrilled to announce that the Passepartout Mac app can be finally downloaded without the App Store, and soon even via the Homebrew Cask. It took serious work for it to take off, but after a few weeks of daily usage it seems to behave as expected.]]></summary></entry><entry><title type="html">Introducing the JavaScript API</title><link href="https://partout.io/2025/04/introducing-the-javascript-api/" rel="alternate" type="text/html" title="Introducing the JavaScript API" /><published>2025-04-24T00:00:00+02:00</published><updated>2025-04-24T00:00:00+02:00</updated><id>https://partout.io/2025/04/introducing-the-javascript-api</id><content type="html" xml:base="https://partout.io/2025/04/introducing-the-javascript-api/"><![CDATA[<p>While I invest a lot in making the software architecture as modular as I can, I haven’t spent as much time in documenting <em>how</em> to start contributing to the codebase. I know myself how intimidating it is to submit a PR to someone else’s repository, so it’s crucial that we, the maintainers, provide a viable entry point to those willing to collaborate. A welcoming, non-judging community also reduces the friction of the first public contribution.</p>
<p>One part that I’ve always found potentially accessible was the Providers API, which is how Passepartout auto-compiles VPN configurations for a plethora of provider servers. Nevertheless, no one ever contributed a single provider, and no wonder: providers were generated in CI with a convoluted set of undocumented Ruby scripts. Who on Earth would want to touch that mess?</p>
<p>When I found out about <a href="https://developer.apple.com/documentation/javascriptcore">JavaScriptCore</a> to solve a different problem, I suddenly realized how scripting could be a lower barrier to enter the Passepartout codebase, as there are way more JavaScript than Swift developers out there.</p>
<p>With the help of AI, I rapidly converted the old Ruby legacy to a brand new <a href="https://github.com/partout-io/api-source">Node.js implementation</a> that most developers would find easy to understand, develop, and test without even installing the app. Then I started documenting <a href="https://github.com/partout-io/api-source?tab=readme-ov-file#new-providers">how to submit a provider</a> step by step. This doesn’t imply that people will start adding new providers today, but offering accessible tools and documentation is a <em>strict</em> requirement for that to happen.</p>]]></content><author><name>Davide De Rosa</name></author><category term="announcements" /><category term="development" /><category term="javascript" /><summary type="html"><![CDATA[While I invest a lot in making the software architecture as modular as I can, I haven’t spent as much time in documenting how to start contributing to the codebase. I know myself how intimidating it is to submit a PR to someone else’s repository, so it’s crucial that we, the maintainers, provide a viable entry point to those willing to collaborate. A welcoming, non-judging community also reduces the friction of the first public contribution.]]></summary></entry><entry><title type="html">Porting Passepartout to Windows</title><link href="https://partout.io/2025/04/porting-passepartout-to-windows/" rel="alternate" type="text/html" title="Porting Passepartout to Windows" /><published>2025-04-14T00:00:00+02:00</published><updated>2025-04-14T00:00:00+02:00</updated><id>https://partout.io/2025/04/porting-passepartout-to-windows</id><content type="html" xml:base="https://partout.io/2025/04/porting-passepartout-to-windows/"><![CDATA[<p>As <a href="">Partout</a>, my Swift framework for VPN and network configuration on Apple devices, has slowly gained shape, I set foot in an ambitious and novel, pioneering goal: <strong>making Partout a truly multiplatform Swift library</strong>.</p>
<p>It’s challenging, but it’s fun, and it’s the way to port <a href="">Passepartout</a> beyond the Apple platforms. So, here, I will progressively share my discoveries and encourage other people to give Swift a chance as a portable language. The language itself is fantastic. Using it outside Xcode? Not as much, but I’ve observed the trends over the years, and overall, things are getting better.</p>
<p>Bear with me, this is a <em>very experimental</em> work in progress, that’s why I’d rather start with architectural concepts, and delve into technical details only after confirming that my approaches do well in practice.</p>]]></content><author><name>Davide De Rosa</name></author><category term="cross-platform" /><category term="development" /><category term="swift" /><category term="windows" /><summary type="html"><![CDATA[As Partout, my Swift framework for VPN and network configuration on Apple devices, has slowly gained shape, I set foot in an ambitious and novel, pioneering goal: making Partout a truly multiplatform Swift library.]]></summary></entry><entry><title type="html">Who cares about performance?</title><link href="https://partout.io/2025/03/who-cares-about-performance/" rel="alternate" type="text/html" title="Who cares about performance?" /><published>2025-03-25T00:00:00+01:00</published><updated>2025-03-25T00:00:00+01:00</updated><id>https://partout.io/2025/03/who-cares-about-performance</id><content type="html" xml:base="https://partout.io/2025/03/who-cares-about-performance/"><![CDATA[<p>While many people copy and paste unoriginal thoughts about AI and the so-called “vibe coding”, it seems that what used to make software valuable is constantly put aside. If you try to argue that tech <em>does</em> matter in a tech-oriented product, they will tell you that:</p>
<ul>
<li>Business is more important than engineering</li>
<li>Software is useless if it doesn’t make money</li>
<li>Users only care about features</li>
<li>Devices are powerful, performance doesn’t matter</li>
<li>Internet is fast, a few more GBs won’t hurt</li>
</ul>
<p>And many more dumb takes. This is the typical mentality by which consultancy firms produce the most mediocre products you will ever find.</p>
<p>I don’t want to delve into this endless – and hopeless – topic. Instead, I want to tell you a little story of how easy it is to lose control of software <em>performance</em>, and how the understanding of programming fundamentals keeps us in touch with reality. This has never been more important with the fast-paced opportunities that LLMs offer today.</p>
<h3 id="can-you-afford-low-performance">Can you afford low performance?</h3>
<p>I’m far from being a low-level programmer, yet I know C and the fundamentals of how things happen below the code.</p>
<p><a href="">Passepartout</a> is a networking app mostly dealing with VPN connections. At least in the tunnel context, performance <em>does</em> matter. When it comes to OpenVPN in particular, it’s very hard to compete with a pure C codebase – the official library – when you also have to account for the overhead of the Swift runtime. Let’s not forget about the <a href="https://developer.apple.com/forums/thread/73148">strict memory limits</a> of Network Extension either. The time I spent on profiling to improve efficiency, resolve memory leaks, and reduce the crash rate, among other things, is pretty massive.</p>
<p>Two months ago, a user reported a regression in the OpenVPN negotiation where the handshake would never complete. I could implement a fix quickly, yet the handshake took 4x longer than with the obsolete TunnelKit. A whopping and unacceptable 20-25s vs 5s negotiation!</p>]]></content><author><name>Davide De Rosa</name></author><category term="development" /><category term="swift" /><summary type="html"><![CDATA[While many people copy and paste unoriginal thoughts about AI and the so-called “vibe coding”, it seems that what used to make software valuable is constantly put aside. If you try to argue that tech does matter in a tech-oriented product, they will tell you that:]]></summary></entry></feed>