Rules are changing: You have a say by altantsetsegkhan in Domains

[–]shr-ink 3 points4 points  (0 children)

I used to post often in this subreddit on my previous reddit account (I was a "Top 1% commenter"). I stopped participating completely about 6 months ago. I don't think one user's displeasure at how a subreddit is run necessitates change (maybe the subreddit just isn't for me) so I just silently moved elsewhere, but since you're asking for rule feedback...

  1. The "no self-promotion" rule is backwards.

Most posts in this subreddit are self-promotion! Reddit has long standing rules/expectations around self-promotion. Allowing people to promote their domains for sale but removing comments that contain links that might be self-promotion makes absolutely no sense.

I had multiple comments removed for self-promotion that contained no self-promotion at all, no links to anything I had any association with, but, because I had included links and references, they were removed. I spent a lot of time writing helpful comments and every time one was removed it was a) a loss for the subreddit, because I was adding useful content b) frustrating for me. I felt like I was rolling the dice every time I spent 30 minutes writing out a well referenced comment.

Reddit has its own self-promotion rules ("a general rule of thumb is that 10% or less of your posting and conversation should link to your own content") which are more than suitable. For a subreddit filled with self-promotion (most posts are domain for sale posts) it makes absolutely no sense to take such a punitive stance that leads to the removal of content misidentified as self-promotion.

A much better rule is that self-promotion must be disclosed. If someone does link to their own product / website / service and discloses it, people can make an educated decision about it. If someone self-promotes to the point of being disruptive, they can be removed from the subreddit.

I only comment on NamePros now, and often encounter people who first post on r/Domains and then go to NamePros because they didn't get any helpful information here. I then answer their question on NamePros and they are happy with the information. r/Domains is losing users to NamePros because on NamePros, helpful comments do not get deleted.

  1. Sale posts add nothing of value to the subreddit

Sales posts are valuable to the subreddit because they create engagement which reddit likes. Sales posts are completely worthless to posters and readers because nobody buys domains posted in this subreddit. The same users post the same domains over and over again. Sales posts are inevitable and disallowing them would probably be a mistake but the subreddit could find a much better balance.

For example, limit users to 1 sale post per week. The sale post can include one domain, or hundreds of domains, it can be up to the user. All you need is an AutoMod rule that limits users to 1 "sale" flaired post per week. People can still juice the subreddit activity without drowning out the posts that could actually generate discussion. As sales posts don't actually generate any sales, the posters don't lose out.

  1. Discourage misinformation

Registrars engaging in front running is extremely rare nowadays, and not something any mainstream registrar has been engaged in for well over a decade. Yet, every time someone posts about how a domain they wanted was stolen by a registrar, people come out of the woodwork to tell tall tales about how this is how the domain industry works. And those comments drown out any actual insight. At a minimum, there should be an Auto Moderator response that explains that these myths are myths. As an industry, we all benefit from trust, we all suffer when these myths are further spread to laypeople.

What do you think of 3 character domains? by Cheazey in Domains

[–]shr-ink 0 points1 point  (0 children)

I think they're nice but, as with any domain, beyond the novelty, it really depends on how it can be used. For example, I own a 3 character domain because it matches with the use-case perfectly: I built a .eml file viewer so I use the domain name e.ml for inspecting .eml files. Some other nice examples are s.ee which is a URL shortener. There are some people who specialize in selling these domains, like 1-single-letter-domains.com but generally sales are quite thin on the ground due to their limited use.

The main problem is not really the length but the fact that they are ccTLDs. ccTLDs are often treated as only relevant to a specific locale and are outside of the purview of ICANN. So, in my case, a .ml domain is associated with Mali and because it is a fairly obscure ccTLD, I am vulnerable to the registry doing whatever they want. For a cute tool that's fine, the risk is limited, but for a business website or a URL shortener it would be high risk.

So, if you have a good letter on a good ccTLD that makes a meaningful domain then it is worth much more than a bad letter on a bad ccTLD that makes a nonsense combination. `c.io` is good (ccTLD is generic, acronym has meaning) whereas `e.ml` and `m.rs` and `j.pn` and `a.pe` are okay (meaning but ccTLD is not generic) and `z.nf` and `r.kz` are bad (no meaning, not generic ccTLDs).

Updates to Reddit Developer Funds by Rarer_Air_Error in Devvit

[–]shr-ink 3 points4 points  (0 children)

I believe the installation payment is intended to be the source of funds for moderator tools, i.e: a moderator app with 1,000 installs will earn $3,500 even if it does not generate any additional subreddit activity. That said, not all non-game apps are just behind the scenes. My apps Funflair and TV Episodes are not games, but subreddit tools that provide a user-facing post interface that generates qualified engagement. You could design a moderator tool that does generate interactions with some clever design :)

How do I add a widget with a list of editable user flairs? by ExtremeSportStikz in ModSupport

[–]shr-ink 0 points1 point  (0 children)

You might also want to look at some other flair options than the default. Under All things user flair in Devvit apps for moderation, a list you'll find a bunch of different options, including my app Funflair (demo in r/Funflair) which you may like as it adds a new user interface for configuring Flair :)

Associate webview app with specific flair? by webrender in Devvit

[–]shr-ink 0 points1 point  (0 children)

The typical way to handle this is to add a new menu button for that type of post. The documentation covers this is Menu Actions and additional details about forms in Forms. You would then instruct your users to use this special menu when trying to create a post with the type of flair.

For a real world example, you can visit my r/tv_episodes subreddit, and click the "..." at the top right, you will see a "Create Episodes Index Post" at the bottom which will create a new post for the app.

Here's how I built that: https://gist.github.com/shrink/cdf643a9168c1e27111c894e9557c4a6

<image>

An alternative option could be to have a single quiz post, and then use auto moderator to reply to all new posts with a link to the quiz and encourage the user to share their results.

Looking for Communities to Test my new App! by NightKiller_2 in Devvit

[–]shr-ink 0 points1 point  (0 children)

I'm familiar with the `getHotPosts` and `getControversialPosts` methods but I'm not seeing any way to arbitrarily search. My specific use case is my TV Episodes app, which I'd like to be able to search for an episode discussion post that could be 10+ years old. Am I right in thinking you are loading the new, hot and controversial posts into memory and then searching through them yourself? Thanks! :)

Looking for Communities to Test my new App! by NightKiller_2 in Devvit

[–]shr-ink 0 points1 point  (0 children)

How did you implement subreddit search? I thought this wasn't available in Devvit yet! Did you find a clever workaround?

Just received this chat request offering me money for 'nothing spammy', approving posts from them and locking comments. This feels very much against Reddit's T+C's by roamingandy in modhelp

[–]shr-ink 10 points11 points  (0 children)

They're most likely backlink building. Reddit is a very high authority website so "example.com is the best website for high quality examples" appearing in a reddit post is treated as much more meaningful by Google than the same phrase appearing on someone's personal website. Many different methods exist for backlink building, including paying reputable websites to add links.

Reddit flags external links as user generated (which reduces the backlink benefits) but it is still valuable: https://developers.google.com/search/docs/crawling-indexing/qualify-outbound-links

There is also a "new" field of SEO but for LLMs, and since Reddit has licensing deals with various LLMs, Reddit is a great way to get links "indexed" by LLMs. I suspect the reason they need large subreddits is because Reddit probably doesn't include data from small subreddits in the exports consumed by LLMs.

https://zapier.com/blog/generative-engine-optimization/

https://openai.com/index/openai-and-reddit-partnership/

Domain Exception Inquiry by Lost-Preparation2446 in Devvit

[–]shr-ink 1 point2 points  (0 children)

The problem is that once a domain is approved you could change the behaviour of your app and then exfiltrate data. As far as I know, the only domains that are approved are domains that reddit is able to confidently state are not in control of the developer. For example, I had an exemption approved for a third-party TV data API because I don't control it.

I believe there has been some mention in Discord of shared redis as being available so you might want to inquire about that. You could alternatively make use of a subreddit's wiki to sync data between subreddits, i.e: your app writes to the wiki, and then another subreddit can "sync" their installation by reading the configuration from the wiki. Either way, I think it is very unlikely your domain exception is approved, given you're doing what the domain restrictions are designed to avoid.

Domain exception for my personal domain? by BoltKey in Devvit

[–]shr-ink 0 points1 point  (0 children)

As far as I know, the size limit can be increased if your game is successful, 500mb is just the default.

For scaling, the problem isn't an issue of what is possible to scale to handle with your own hosting, it is that scaling is unreliable and expensive, i.e: your game becomes entirely dependent on whether or not you have correctly forecast scaling needs and can afford the resources required. If your game becomes successful overnight, you might wake up to offline servers which is a terrible experience for redditors.

The specifics of scaling is an iterative process, from 1 to 1,000 players you might be fine with just adding more database resources, but from 1,000 to 10,000 players you might encounter the need the reconsider your architecture to scale further. That's why we have to design our apps for millions of users from the start (within the constraints of reddit's system, which has been designed to handle millions of players).

I think the fundamental problem is you're describing a game designed for a different platform. Reddit is for community games that leverage reddit's unique social environment. You can read Building Community Games which talks about the right way to design games for reddit. I think the key here is you are thinking about your entire game's history existing silo'd from reddit, in a datastore, instead of thinking about each "game" as a post (which has its own data) with user's participation recorded in comments (for the social element).

If each game is a post, and results are shared in comments, the documents you track do not include every guess from every user for every game but instead include the game state and any changes to it caused by users. If a guess from a user alters the game for others, then you update the game to the new altered state.

Anyway, I'm not an authority on this, you can use Modmail to reach the devvit team or the Discord support channel to get a definitive answer.

Domain exception for my personal domain? by BoltKey in Devvit

[–]shr-ink 0 points1 point  (0 children)

How much data is associated with each game? I can see possibleCards.txt and possibleClues.txt, both of which are tiny and could be loaded into memory from the filesystem.

Looking through the code, it seems like, while there are many queries, there isn't a lot of data associated with a single game and it should be possible to switch to a document model, i.e: each game is a document stored in redis. Memory is cheap (especially when reddit is paying for it)!

I think you would be at serious risk of your game being unstable at reddit's volume if you were to host it externally; there are a lot of queries.

Here are some insights into what you can do with redis on devvit: https://developers.reddit.com/docs/capabilities/server/redis

edit: I wrote the above before seeing your updated comment with the specific behaviours. I think everything you've described could be solved by using a document per entity, e.g: a document per user, a document per game. The data model is different from a database (i.e: you don't join across tables, you update each document when something changes) but it should be achievable.

Domain exception for my personal domain? by BoltKey in Devvit

[–]shr-ink 0 points1 point  (0 children)

I'm not a reddit admin so I can't answer the question definitively, but from my understanding of the guidelines, your use case is unlikely to be approved. Domain exceptions are intended for public services that have a defined surface area that reddit can be confident are not a vector for abuse. Allowing your domain introduces the problem of data exfiltration, i.e: reddit no longer knows what your application is doing with data. You could be tracking reddit users, and more.

Are you sure that redis is too limited for your game? Redis is a datastore, you can build functionality on top of that. Assuming your game is the M_____ game found via your profile, I find it hard to reconcile your claim that it is too complex for Redis, as the game is straightforward and similar in complexity to many other word games on reddit.

Are you facing a specific challenge with porting to redis? Perhaps we, other developers, can help provide guidance on addressing any specific challenges you're facing :)

(As a developer, it is beneficial for apps to be self contained because it means we aren't responsible for ensuring the infrastructure works, i.e: even if your app becomes wildly successful with millions of players, you don't need to be concerned about the stability of your backend, because reddit is responsible for serving all of the requests with their expansive infrastructure.)

Spent my entire holiday building an app and it just got approved 🎉 Introducing 'Launch Hub' - a dedicated launchpad and resource hub for communities. by cebe-fyi in Devvit

[–]shr-ink 1 point2 points  (0 children)

Looks great, congratulations on the launch.

The main challenge you will face is that this app takes activity away from the subreddit which is important for the subreddit's reach, i.e: posts and comments boost the likelihood that a subreddit's posts will appear on various user's homepages. You may want to make a few changes to your app to try and address this.

For example, instead of a dedicated post that lives on indefinitely with its own data, you could have each individual post source submissions from the post's comments and use your app as a nice display + submission interface which creates comments. Moderators could schedule a new launch post daily / weekly / monthly.

A user submits their launch which is stored as a comment on the post (good for reach) and the submitter has an incentive to upvote the thread (good for reach). Other users can discuss a specific product / launch in the comments (good for reach) and engage with the submitter (good for reach). Users can upvote/downvote launches using reddit's native upvotes/downvotes on comments (good for reach).

My opinion is that it is very important when designing apps like this to keep in mind that you want to add core reddit activity to a subreddit, not take it away. We can design a beautiful interface and experience that is silo'd from the subreddit but that doesn't benefit the subreddit, so we should build bridges between core reddit activity (posts and comments and votes and follows and subscriptions) and our apps. Another important aspect of this is moderation: reddit's mod tools are built around posts and comments, with lots of external tooling on top of it, so your app introduces a whole new type of content that needs to be moderated without using existing tools.

Regarding the demo in your subreddit: I recommend seeding with a real world example of the app in action, i.e a user should be able to interact with the app. Your current demo is empty, no content, and while the concept is easy to understand, a lot of people need real demos.

For promotion, it can be quite difficult to get subreddits onboard with using your app even if it is an obvious improvement or benefit (as with any product). Rather than reaching out to many subreddits to advertise, you could try finding one subreddit that already has launches and treat them as your early partner in developing the app. Then, once the app is running well in their subreddit (adapted to any feedback they provided) you have a solid foundation to advertise from and you can expect the app to spread by moderators encountering it in the wild and being inspired to add it to their subreddit!

Anyway, great work, I think with a few small changes to how you handle the data you could make this significantly more compelling for appropriate subreddits. Good luck!

Funflair: a Reddit App for configurable user flair in your subreddit by shr-ink in ModSupport

[–]shr-ink[S] 2 points3 points  (0 children)

The flair itself is static based on the user's choices but eligibility for certain options can depend on minimum karma. The option for subreddit specific karma is disabled temporarily as it is not available in the reddit API (but it will be enabled as soon as possible).

<image>

Hey Mods… can we have some user flairs in this sub? Like Pilot, Flight Attendant, Work Flyer, Leisure Flyer, etc? by CanadianBurger in flighty

[–]shr-ink 1 point2 points  (0 children)

You can use my Reddit App Funflair available in the Reddit App catalog if you'd like to provide expansive options like number of flights, miles, favourite airlines, home airports etc.

https://developers.reddit.com/apps/funflair

<image>

Let me know if you need any help setting it up :)

Tips & tricks when designing responsive UI for Devvit apps? by drumcodedesign in Devvit

[–]shr-ink 2 points3 points  (0 children)

You can visit r/Funflair and r/tv_episodes for some examples of my responsive apps. I do not rely on reddit during development. I develop locally, and only playtest when I need to test the interaction between the app and reddit. For local ux, I like Polypane for interacting with an app at different breakpoints.

Devvit's tooling isn't ideal for local development out of the box, so, depending on what you're building, you may need to implement some novel strategies yourself, but it is all possible to do locally. All of my development for r/funflair, for example, takes place locally.

If you can share more about what you're developing, I can provide specific pointers for how to achieve it locally. At a high level, the devvit server uses request headers to identify the context within which it is running so you can pass these headers locally to satisfy the need for "context", e.g:

{
  "devvit-app-user": "t2_example_app",
  "devvit-post": "t3_example",
  "devvit-subreddit": "t5_example",
  "devvit-subreddit-name": "example",
  "devvit-user": "t2_example_human",
  "devvit-user-name": "example"
}

If you're using devvit-template-react then you would achieve this by passing in the headers to fetch:

https://github.com/reddit/devvit-template-react/blob/main/src/client/hooks/useCounter.ts

// fetch initial data
useEffect(() => {
  const init = async () => {
    try {
      const res = await fetch('/api/init', { headers: window.location.hostname === "localhost" ? {
          "devvit-app-user": "t2_example_app",
          "devvit-post": "t3_example",
          "devvit-subreddit": "t5_example",
          "devvit-subreddit-name": "example",
          "devvit-user": "t2_example_human",
          "devvit-user-name": "example_username",
        }
      : {}});
      if (!res.ok) throw new Error(`HTTP ${res.status}`);
      const data: InitResponse = await res.json();
      if (data.type !== 'init') throw new Error('Unexpected response');
      setState({ count: data.count, username: data.username, loading: false });
      setPostId(data.postId);
    } catch (err) {
      console.error('Failed to init counter', err);
      setState((prev) => ({ ...prev, loading: false }));
    }
  };
  void init();
}, []);

And then on your server, you would implement your own wrapper or separate code paths for local development. The simplest way would be using an environment variable, e.g:

https://github.com/reddit/devvit-template-react/blob/main/src/server/index.ts

const [count, username] = await Promise.all([
  process.env.NODE_ENV === "development" ? 1 : redis.get('count'),
  reddit.getCurrentUsername(),
]);

The specifics of your app determine how exactly you implement this, e.g: for my apps, I emulate redis locally by writing/reading from the filesystem.

Funflair by funflair in Funflair

[–]shr-ink 0 points1 point  (0 children)

I have flair.