ถูกแบนจาก Reddit เพราะพัฒนา Geddit
(buzl.uk)-
เรื่องราวที่ Reddit แบนฉันเพราะการพัฒนาแอป
-
จุดเริ่มต้น
- ในเดือนมิถุนายน 2023 Reddit ได้ประกาศนโยบายราคา API ใหม่
- ก่อนหน้านี้ใช้งานฟรี แต่ตอนนี้คิดราคา $12,000 ต่อคำขอ API 50 ล้านครั้ง
- เรื่องนี้ส่งผลกระทบอย่างหนักต่อแอปและบอตที่ไม่ใช่เชิงพาณิชย์
-
Geddit
- ระหว่างที่สำรวจ API ของ Reddit ผู้เขียนพบว่าเมื่อเติม
.jsonต่อท้าย URL ก็จะได้รับทั้งหน้าในรูปแบบ JSON - จึงสร้าง API wrapper ของ Reddit ด้วยไลบรารี JavaScript แบบเรียบง่าย และตั้งชื่อมันว่า Geddit
- มอบความสามารถในการใช้งาน Reddit แบบอ่านอย่างเดียวโดยไม่ระบุตัวตน
- ระหว่างที่สำรวจ API ของ Reddit ผู้เขียนพบว่าเมื่อเติม
-
การพัฒนาแอป
- พบกับเฟรมเวิร์ก Capacitor และ Ionic ที่ช่วยพัฒนาแอปมือถือเนทีฟได้ด้วย HTML, CSS และ JavaScript
- พัฒนา Geddit เป็นแอป Android และแชร์บน GitHub
- ถูกพูดถึงบน Hacker News, Android Police, Reddit, YouTube เป็นต้น
- มียอดดาวน์โหลดมากกว่า 25k ครั้งบนหน้า GitHub Releases
-
ตอนจบ
- ออกรุ่นหลายเวอร์ชันและเพิ่มการตกแต่งตามแนวทาง Material Design
- เผยแพร่แอปบนสโตร์ F-Droid
- ได้รับอีเมลจาก Reddit และได้อธิบายว่าโครงการนี้ไม่ใช่ผลิตภัณฑ์เชิงพาณิชย์และไม่ได้ใช้งาน API ในทางที่ผิด
- หยุดการพัฒนาไว้ขณะรอการตอบกลับจาก Reddit
-
สรุปโดย GN⁺
- บทความนี้แสดงให้เห็นผลกระทบของนโยบายราคา API ใหม่ของ Reddit ที่มีต่อนักพัฒนาแอปที่ไม่ใช่เชิงพาณิชย์
- Geddit เป็นโครงการโอเพนซอร์สที่ทำให้ใช้งาน Reddit แบบไม่ระบุตัวตนได้โดยอ้อมผ่าน API ของ Reddit
- แม้โครงการจะหยุดลงจากการตอบสนองของ Reddit แต่ยังคงใช้งานได้อยู่
- โครงการอื่นที่มีฟังก์ชันคล้ายกัน ได้แก่ Apollo และ Juno
1 ความคิดเห็น
ความคิดเห็นจาก Hacker News
ตอนเด็ก ๆ Reddit เคยเป็นเว็บไซต์โปรดที่สุดของผม ผมมักจะค้นพบซับเรดดิตใหม่ ๆ ที่น่าสนใจ แล้วอ่านโพสต์กับคอมเมนต์ไปเรื่อย ๆ
เมื่อก่อนหน้าแรกก็ยังพอดูได้พอสมควร แต่ตอนนี้รู้สึกเหมือนเป็นงานเลี้ยงบอตและเครื่องจักรโฆษณาชวนเชื่อ
ผมยังใช้อยู่ แต่ใช้น้อยลงมาก และใช้แค่อ่านซับเรดดิตสายเทคนิคเฉพาะทาง ไม่ใช่เพื่อความสนุกแล้ว
ผมปฏิเสธแอปมือถือทางการ และใช้ Baconreader กับ Relay บน Android มาโดยตลอด โดย Relay อยู่รอดมาได้ด้วยโมเดลสมัครสมาชิกหลังการเปลี่ยนแปลง API
แต่ด้วย Revanced ตอนนี้จึงแพตช์ Relay เวอร์ชันเก่าให้ใช้ฟรีด้วย API key ของตัวเองได้
HN ยังพอใช้เรียนรู้ว่าเกิดอะไรขึ้นในโลกเทคโนโลยีได้ เพราะเรียบง่ายและช่วยกรองคอนเทนต์คุณภาพต่ำจำนวนมากออกไป แต่คอมเมนต์ที่ตอบสนองแค่กับพาดหัวก็เพิ่มขึ้นเรื่อย ๆ
Reddit เหมือน Meta ตรงที่ถ้าไม่มีบัญชี ประสบการณ์ผู้ใช้ก็เลวร้ายจนใช้งานยาก ส่วน X อย่างน้อยก็ไม่แกล้งทำเป็นอย่างอื่น แทนที่จะปล่อยให้ใช้ไม่ได้เลย
ผมคิดว่าเราต้องการเว็บไซต์เรียบง่ายมากขึ้นอีกครั้ง แต่ก็ไม่แน่ใจว่าแรงจูงใจในการสร้างโครงสร้างแบบนั้นคืออะไร
เมื่อก่อนซับเรดดิตจำนวนมากมีเนื้อหาตรงกับชื่อของมัน แต่ตอนนี้ 90% เป็นคอนเทนต์การเมืองสหรัฐฯ แม้แต่ r/pics ก็ไม่ใช่ข้อยกเว้น
ไม่ใช่แค่โพสต์ แต่ในคอมเมนต์ก็มีจุดยืนทางการเมืองแทรกเข้ามาตลอด แม้ในโพสต์ที่ไม่เกี่ยวกับการเมือง จึงอ่านแล้วเหนื่อย
ดูเหมือนเป็นตัวอย่างชั้นดีของกรณีที่ฝ่ายบริหารและผู้บริหารระดับสูงพยายามแสดงอิทธิพลของตัวเองและหาเหตุผลรองรับเงินเดือน จนทำแพลตฟอร์มพัง
บอตและโฆษณาชวนเชื่อ มีอยู่ทุกที่จริง ๆ แพลตฟอร์มก็แย่ลงเรื่อย ๆ แต่ก็ต้องยอมรับว่ามันยังมีความเสพติดอยู่ระดับหนึ่ง
ค่อนข้างน่ายินดีที่ HN เป็นพื้นที่ที่โดยรวมหลีกเลี่ยงการเมือง
ผมเบื่อที่ผู้คนจำนวนมากไม่รู้แม้แต่นโยบายของผู้สมัครนายกเทศมนตรีในพื้นที่ตัวเอง หรือแม้แต่นายกเทศมนตรีคือใครและสภาเมืองทำอะไร แต่กลับคุยเรื่องภูมิรัฐศาสตร์กับการเมืองในประเทศเหมือนเป็นสงครามแฟนด้อม
ผมมองว่าสิ่งนี้มาจากการตายของหนังสือพิมพ์ดั้งเดิมที่มีฐานในท้องถิ่น และถูกแทนที่ด้วยสื่ออินเทอร์เน็ตที่โดยแก่นแล้วเป็นสื่อระดับโลก
ดูเหมือนชาวอิตาลีส่วนใหญ่จะรู้เรื่องการเมืองสหรัฐฯ ดีกว่าสิ่งที่เกิดขึ้นในละแวกบ้านตัวเอง ซึ่งกลับหัวกลับหางไปหมด
แน่นอนว่าฟางเส้นสุดท้ายคือ เหตุการณ์ API แต่ก่อนหน้านั้นก็เห็นคนที่รักคอมมูนิตี้ต่าง ๆ ของ Reddit อย่างจริงใจเริ่มทนกับลูกเล่นหรือความไม่ใส่ใจของบริษัทไม่ไหว จนยอมแพ้และจากไป
ระหว่างนั้น Reddit ก็ยังเติบโตต่อไป ดังนั้นจากมุมมองการบริหารแบบสเปรดชีตก็คงดูเหมือนไม่มีปัญหาอะไร
แต่การเติบโตส่วนใหญ่นั้นคือคอนเทนต์ใช้แรงน้อยแบบที่เห็นได้ในทุกแพลตฟอร์มโซเชียล ส่วนคอนเทนต์เฉพาะตัวที่ทำให้ Reddit พิเศษนั้นค่อย ๆ ลดลงทั้งปริมาณและคุณภาพมาหลายปี
เป็นบริการที่ผมทำขึ้นเพราะต้องใช้เอง
ดูเหมือนถึงเวลาแนะนำโปรเจกต์ fediverser [0] ที่ช่วยให้ย้ายออกจาก Reddit แล้ว
มันให้สมัครใช้อินสแตนซ์ Lemmy [1] ด้วยบัญชี Reddit และสมัครติดตามคอมมูนิตี้ทางเลือกบน Lemmy ที่สอดคล้องกันโดยอัตโนมัติ
รายการทางเลือกมาจากการคราวด์ซอร์ส และการติดตั้งใช้งานหลักอยู่ที่ https://fediverser.network
ถ้าอยากฟอร์ก ก็รันอินสแตนซ์ของตัวเองแล้วจัดการตามแบบที่ต้องการได้เลย
เมื่อไม่กี่เดือนก่อน ผมได้รับทุนสนับสนุนเล็ก ๆ จาก NLNet และกำลังทำงานเพื่อนำฟีเจอร์นี้ไปฝังในไคลเอนต์ Voyager หรือ PWA โคลนของ Apollo
หากมีบุคคลหรือบริษัทใดอยากช่วยเพิ่มเติมหรือสนับสนุน ก็ติดต่อมาได้
[0] https://fediverser.io
[1] https://portal.alien.top
Mastodon หรือแอปพลิเคชัน ActivityPub อื่น ๆ สามารถโต้ตอบกับ Lemmy ได้ในระดับหนึ่ง และในทางกลับกันก็ทำได้เช่นกัน จึงหวังว่าโซเชียลเน็ตเวิร์กทั้งสองแบบจะช่วยกันเติบโต
ผมสงสัยว่าจะเพิ่มการตั้งค่า บัญชี Fediverse ของตัวเอง เพื่อให้เมื่อคลิกคอมมูนิตี้แล้วถูกรีไดเร็กต์ไปยังเซิร์ฟเวอร์ของตัวเองได้ไหม
เช่น เมื่อค้นหา /r/switzerland ก็มีปุ่มสำหรับเปิดในเซิร์ฟเวอร์ Fediverse ของผมเองอยู่ข้าง ๆ switzerland@feddit.ch ที่ Fediverser แนะนำ คล้ายกับปุ่ม ‘Take me home’ ของเว็บไคลเอนต์ Mastodon
ตอนนี้กิจกรรมยังไม่มากพอ แต่ผมตั้งใจจะเข้าร่วมเองเพื่อเป็นส่วนหนึ่งของทางแก้
สุดท้ายแล้วในแต่ละอินสแตนซ์ก็จะมี c/linux, c/funny, c/technology, c/anime ฯลฯ แยกกัน ทำให้ใช้งานยากมาก
Geddit ยังใช้งานได้และเป็นแอปที่ยอดเยี่ยม แถมอ่านโพสต์ที่ถูกทำเครื่องหมายว่า NSFW ได้แม้ไม่มีบัญชี
แอปอื่นที่ผมรู้ว่ายังใช้ได้คือ RedReader ซึ่งดูเหมือน Reddit จะปล่อยไว้ไม่ทำให้พัง เพราะมีฟีเจอร์การเข้าถึงขั้นสูงสำหรับผู้อ่านที่มีความพิการ
แต่รายการ NSFW จะเข้าไม่ได้ และมีข้อความให้ไปใช้เว็บไซต์
IP ที่ใช้ร่วมกันถูก Reddit บล็อกในระดับเครือข่าย และการเรียกดูแบบไม่ระบุตัวตนก็ถูกปิดใช้งาน
รู้สึกเหมือนเจอ CAPTCHA วันละประมาณ 50 อัน และผมคิดถึงเว็บแบบเก่ากับ ข้อความล้วน จริง ๆ
rif is fun ก็ยังใช้งานได้ หรืออย่างน้อยตอนที่ผมเปิดครั้งล่าสุดเมื่อหนึ่งหรือสองเดือนก่อน มันยังใช้แบบอ่านอย่างเดียวได้
JSON endpoint ที่ Geddit ใช้คือ Reddit API และเปิดกว้างอยู่ ดังนั้นจึงเรียกว่า “หลบเลี่ยงข้อจำกัด API” ไม่ได้
Reddit ที่ผมค้นพบครั้งแรกตอนผู้ใช้ไหลออกจาก Digg เคยเป็นที่ที่ยอดเยี่ยม
น่าเสียดายที่มันเปราะบางเกินกว่าจะรักษาสภาพดี ๆ นั้นไว้ได้ และดราม่าที่เกิดซ้ำจาก ความผิดพลาดในการบริหาร ของผู้ดูแลก็ค่อย ๆ กัดกร่อนเจตนาดีลงไป
บริษัทตอบสนองต่อเรื่องนี้ด้วยการทำตัวเป็นปฏิปักษ์กับผู้ใช้มากขึ้น และไม่มีทีท่าว่าจะหยุดท่าทีที่พยายามบีบเค้นผู้ใช้ต่อไป ไม่ว่าจะเป็นเวลาว่าง เงิน หรืออะไรก็ตาม
เราต้องการวิธีสาธารณะในการพูดคุยเรื่อง หัวข้อเฉพาะทาง กันโดยไม่มีตัวกลางที่เป็นพิษ
น่าแปลกใจที่ยังมีคนพัฒนาโดยใช้ Reddit เป็นแพลตฟอร์มอยู่
การพึ่งพาแพลตฟอร์มก็เสี่ยงอยู่แล้ว แต่ดันเป็น Reddit อีก
ข้อดีอย่างเดียวของ Reddit คือ network effect ที่ผูกอยู่กับคอนเทนต์ดี ๆ จากผู้ใช้เท่านั้น ส่วนที่เหลือรวมถึงวิธีที่ปฏิบัติต่อนักพัฒนานั้นแทบไม่ต่างจากกองขยะ
มันฆ่า ห่านที่ออกไข่ทองคำ ไปแล้ว และธุรกิจขายไข่ก็กำลังพังลงอย่างหลีกเลี่ยงไม่ได้
มีตอนหนึ่งที่บอกว่าการได้รู้ว่าเติม
.jsonท้าย URL แล้วจะได้ทั้งหน้าในรูปแบบ JSON เป็นการเปิดโลกครั้งใหญ่ ซึ่งจริง ๆ แล้วตอนนี้ก็ยังใช้งานได้อยู่ถ้าเอาโพสต์ยอดนิยมตอนนี้อย่าง https://www.reddit.com/r/funny/comments/1ezq3po/asked_for_my... ไปเปลี่ยนเป็น https://www.reddit.com/r/funny/comments/1ezq3po/asked_for_my... ก็จะดึงคอมเมนต์ทั้งหมดเป็น JSON ได้โดยไม่ต้องยืนยันตัวตน
น่าสนใจว่าการใช้วิธีนี้สร้างไคลเอนต์ที่มี UI ดี ๆ และเลี่ยงโฆษณาทั้งหมดน่าจะง่ายมาก
ถ้าลองไล่แสดงคอมเมนต์ทั้งหมดของโพสต์จากข้อมูลที่คืนกลับมา จะจบลงที่จำนวนซึ่งน้อยกว่าตัวเลขที่เว็บ UI ของ Reddit แสดงอยู่มาก
แอป React เล็ก ๆ [2] ที่ไม่ได้แตะมา 9 ปีใช้วิธีนี้ และยังทำงานได้ดีจนถึงตอนนี้
[1] https://www.reddit.com/r/programming/comments/cxh3a/we_just_...
[2] http://insin.github.io/just-dadjokes/
ผมเลิกใช้ตอน Reddit ทำเรื่องแบบนี้ และชีวิตก็ดีขึ้นมาก
Reddit ยุคแรกมีชุมชนและคอนเทนต์ดี ๆ แต่เมื่อได้รับความนิยมมากขึ้นและเริ่มบีบรายได้ มูลค่าของมันก็ลดลง
น่าขำที่โปรเจกต์ โมเดลภาษาขนาดใหญ่ รุ่นแรก ๆ เริ่มต้นจากการ scrape Reddit
มันคงดีกว่าขยะสุ่ม ๆ จาก Common Crawl แต่โลกได้ย้ายไปที่อื่นแล้ว
ขึ้นกับม็อดมาก และอย่างเช่นที่ /r/anime ก็ไม่มีอะไรมาแทนได้
ถ้าเป็นผมคงไม่ตอบกลับด้วยซ้ำ
API ที่จำเป็นมีแค่ HTTP เท่านั้น
คนที่พยายามทำให้เราเชื่อว่าพวกเขามีสิทธิ์กำหนดได้ว่าเราจะใช้ user agent แบบไหน ก็แค่กำลังพยายามควบคุมสิ่งที่มากกว่าสิ่งที่พวกเขาเป็นเจ้าของ
ถ้าเติม
.rssต่อท้าย URL ของซับเรดดิต ก็จะได้ ฟีด RSS ด้วยโดยธรรมชาติแล้ว RSS ถูกออกแบบมาให้บอต หรือก็คือโปรแกรมคอมพิวเตอร์อ่านอยู่แล้ว เลยสงสัยว่า Reddit มีจุดยืนอย่างไร
แบบนี้ก็ถือว่าเป็น “การเลี่ยงข้อจำกัด API” ด้วยหรือเปล่า?
ฝั่ง Reddit อาจลืม RSS ไปแล้ว หรือไม่ก็ไม่สนใจเพราะมันไม่ได้ให้คอนเทนต์ทั้งหมด จึงไม่ค่อยมีประโยชน์กับแอป
เทคนิคของผมคือสมัครฟีด “ยอดนิยมประจำสัปดาห์” ของแต่ละซับเรดดิต วิธีนี้ช่วยลดจำนวนโพสต์ที่ถาโถมเข้ามาให้อยู่ในระดับที่จัดการได้พอสมควร
การปั่นแต่งเรื่องเล่า กลายเป็นธุรกิจใหญ่ทั่วโลกแล้ว
นั่นแหละคือเหตุผลที่ Reddit พยายามบังคับให้จ่ายค่า API ปีละ 30,000 ดอลลาร์ และ Twitter/X ก็ทำแบบเดียวกันด้วยเหตุผลเดียวกัน