openneo-blog/_posts/2024-09-11-state-of-dti-2024.md

155 lines
7.6 KiB
Markdown
Raw Normal View History

---
layout: post
title: "State of DTI: 2024"
date: 2024-09-11 12:00:00 -0700
author: Matchu
---
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 😅
- When I started DTI, 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, 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](https://glitchtip.com/)!)_
- **⚙️ 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_ app 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](https://rubyonrails.org/)), instead of keeping the new Impress 2020
app (built with [Next.js](https://nextjs.org/)). 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 agreed not to talk too much about the details of, like,
what we signed and stuff… 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 my
very best, 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 in
the coming years, too.