openneo-blog/_posts/2024-09-20-state-of-dti-2024.md
2024-10-04 17:50:20 -07:00

8.1 KiB
Raw Blame History

layout title date author banner excerpt
post State of DTI: 2024 2024-09-20 13:15:00 -0700 Matchu
url width height
/assets/images/banners/state-of-dti-2024.webp 800 267
<p>After 15 years of DTI, and 15 years of changing circumstances, <strong>our primary focus is keeping DTI around for the long-haul</strong>—through stability, simplicity, and sustainability.</p>

Hi, everyone! Hough, this post is a long time coming but I have not had the power of Words—but today I do, and so we write!

First off, thank you for being so kind and helpful as you always are! Idk if y'all know that like, the community does the majority of the work for DTI? We're just doing our best to keep the lil guy chuggin' along underneath you! And thank you always for your kind words, too 🥺 It helps a lot.

After 15 years of DTI (what the heck??!), and 15 years of changing circumstances, our primary focus is keeping DTI around for the long-haul.

And, I'll be real with ya, the choices I made in earlier times weren't really designed for decades of operation 😅 (DTI I think is now officially older than I was when I started it? 🤐)

  • Back at the start, I wasn't really uhh, good at working with others? So I never put together a formal team, and I built a codebase that was difficult to share.
  • And when we rebooted as Impress 2020, I borrowed the technology and design intuition I'd gained in professional software—not realizing that's a level of complexity designed for teams of fifty to keep up with.

But now, here we are, with two apps instead of one, and just me as the operational bottleneck—and my own life focus has shifted more toward my personal household, with not even enough volunteer time to even do the work to hand over the keys 😖

So, today, DTI development is mostly a time management game. That's why I've been focusing on long-term choices I hope will change this in the years to come! The themes are stability, simplicity, and sustainability.

I also want to call out and thank TNT in particular for their help with sustainability!! The NeoPass partnership has been a genuine game changer—I'll talk about it more below!

Stability: Changes to keep the site running

At the start of the year, DTI was… uhhh, often broken 😖 We'd have multiple days of downtime, and I'll be real with ya: it was mostly an awareness and time management problem.

Issues generally got resolved within hours or minutes of my sitting down to fix them, but… my world was large, and there were a lot of messes to clean beyond just DTI 😭 So, I didn't discover issues quickly; and when I did, it would sometimes take a few hours, or even days, to become available.

When I was younger, it was easier to be on-call all the time… now, we have to be smarter about it. So, hey—we're being smarter!

  • 🔔 Alerts: We've set up automated notifications to tell us when the site goes down, or when a new kind of crash appears. (If you're curious, we're self-hosting GlitchTip!)
  • ⚙️ Auto-monitoring: For crashes that kept happening, we configured our machine to intervene. (Like, if the site's RAM usage gets high, we now auto-restart it.)
  • 🧑‍💻 Simplifying: Reducing the complexity in our whole dang architecture has been huge for stability, too. (We'll talk about it more below!)

With these changes, it's been months since our last like, major downtime event. We're still not as consistent as I'd like to be, but hey—more to come!

Simplicity: Cleaning house, clearing hallways

The high-level goal here is: I want to remove Impress 2020, but only once we no longer need it.

Right now, Dress to Impress is a weird combination of apps… I copy-pasted some of Impress 2020's best UI changes over, but it all still used the Impress 2020 server code, even when you're on impress.openneo.net.

This both doubled the danger of downtime (if either server goes down, that's a problem for both!), and added networking complexities that are hard to track down (hello, "error loading species/color"!)

Like, it's just not a great situation for stability, or for removing me as a bottleneck. There's too much happening; and too much to know that, right now, only I know! 😬

So, here's some of the changes we've been making:

  • ➡️ Porting features: We finally brought Impress 2020's improved Offering/Seeking trade listings page into the main app!
  • 🌸 Simpler rewrites: We reimplemented the item page preview in Rails and plain HTML/CSS/JS, instead of being a fragile, frankenstein-y React component using Impress 2020 behind the scenes.
  • Rewiring the wardrobe: The main outfit editor still has a couple API calls to Impress 2020, but very few! And we're exploring the possibility of other ways to simplify that page, too.
  • 🧹 Ancient code cleanups: As I wander the halls of the very old codebase, I occasionally stumble into something unused, or confusing, or way more complicated than it needs to be. And so I clean up, so my future roommates can be comfy here!

A lot of it is invisible work, toward the goal of destroying things rather than building them. And that's important for us, I think: long-term projects with small teams survive by having less stuff going on.

I won't get too much into why I chose to stick with upgrading the old app (built with Rails), instead of keeping the new Impress 2020 app (built with Next.js). Mostly just, I think the Rails app is simpler tech overall, and leans more into standards that I expect to be longer-lived—and so I expect it to be easier to maintain and welcome new collaborators into long-term!

We'll check in with y'all before retiring Impress 2020 altogether, I think there's still plenty of steps along the way! We're just doing our best, bit by bit.

Sustainability: Finding more time, with TNT's help

At the start of the year, the reality of the situation was just… I did not have volunteer hours available to give to DTI. What time I did have for coding was all going toward my technical consulting work, because our house needed the paycheck, y'know?

But you might've noticed, our site's uptime got a lot better a few months ago—as it happens, around the same time we launched NeoPass! This was because the NeoPass partnership gave us the time to invest in other changes like alerts and monitoring, which just weren't happening on their own.

The new "Shopping List" feature was also part of this partnership effort, too—though we didn't end up building all of the integrated elements we were hoping for. (We were planning an "Add all to cart" NC Mall link, as a time saver for folks, and a way to help TNT know that DTI helped you out.) Ah, well—that's product work! I hope it's been helpful in this form, too 💝

Right now, we're on a bit of a pause, as TNT's dev team focuses on the Void Within plot and the other things on their plate. But our next plan is to look into (spoiler) saving DTI outfits to your Neopets directly 😳 This is not a promise, but it is an intention! It's the main integration y'all told us you'd be excited for in that survey we sent out, thank you for that btw!!

But personally, that's why I'm excited about this partnership: I think we've done a good job threading the needle on building things that are genuinely useful for Neopians, not Worrisome, and ultimately building toward DTI's own independent goals, too. I'm glad we're not in the same stagnant place we were earlier this year, and I hope we can keep moving forward!

(By the way, TNT and I decided not to talk too much about the details of, like, what we signed and stuff… I would normally say more, y'know? But I hope this gives you enough to understand the needs and values we're bringing to it! I promise I'm giving the community the best I know how to give, always 💜)

As always, thank you!

I hope this plan makes sense, as just one guy doing her best to keep the site online! And I hope this work can help set the stage for more people to join our team of maintainers in the coming years, too.