ฟีดคือที่ที่โพสต์หนึ่งโพสต์เห็นได้ชัดที่สุด และแทบทุกอย่างที่ Korat ทำ ทั้งกลุ่ม เพจธุรกิจ story และการแชร์ ถูกสร้างบนแถวโพสต์แถวเดียว ไม่ใช่ระบบสี่ระบบที่วิ่งขนานกัน โพสต์ในกลุ่มคือโพสต์ธรรมดาที่พกไอดีของกลุ่มไปด้วย โพสต์ของเพจธุรกิจคือโพสต์ธรรมดาที่พกไอดีของธุรกิจไปด้วย การตัดสินใจนั้นคือเหตุผลที่การแสดงความรู้สึก คอมเมนต์ การแท็ก @ และการแจ้งเตือน ทำงานเหมือนกันหมดทุกที่ และเป็นเหตุผลที่การแก้ที่หนึ่งมีผลกับทั้งหมดพร้อมกัน หน้านี้จึงเป็นคำอธิบายของสิ่งที่ส่วนอื่นทั้งแอปทำมาจากมันจริงๆ
โพสต์ลงฟีดและสตอรี่ได้สี่แบบ
โพสต์เป็นข้อความเปล่าก็ได้ เป็นข้อความบนพื้นหลังสีก็ได้ สำหรับประโยคสั้นๆที่ถ้าปล่อยเป็นย่อหน้าสีเทาจะดูจมหายไป หรือเป็นรูปได้ถึงสี่รูปที่จัดเป็นกริดแบบ X ซึ่งปรับตามจำนวนรูปที่แนบมา คุณเผยแพร่ในนามตัวเองก็ได้ หรือในนามเพจธุรกิจที่คุณดูแลอยู่ก็ได้ และจะเผยแพร่ลงในกลุ่มแทนที่จะลงฟีดหลักก็ได้
ทุกโพสต์พกการตั้งค่าการมองเห็นของตัวเองมาด้วย คือสาธารณะหรือเฉพาะเพื่อน และค่านั้นเปลี่ยนได้หลังเผยแพร่แล้ว ไม่ได้ถูกแช่แข็งไว้ตั้งแต่วินาทีที่กดส่ง คนตัดสินกลุ่มผู้อ่านผิดกันตลอดเวลา เรื่องที่เขียนไว้ให้เพื่อนอ่านกลายเป็นเรื่องที่ควรให้ทุกคนเห็น หรือกลับกัน อีกชั่วโมงต่อมาก็เห็นชัดว่าไม่ควร ข้อยกเว้นเดียวคือโพสต์ที่เผยแพร่ในนามเพจธุรกิจ ซึ่งเป็นสาธารณะเสมอ เพราะโพสต์ของร้านที่ลูกค้าบางคนเท่านั้นที่เห็นคือเรื่องร้องเรียนที่รอวันเกิด
โพสต์ คอมเมนต์ และ story ทุกชิ้นรายงานได้ โดยเลือกเหตุผลจากรายการที่กำหนดไว้ การรายงานวิ่งผ่านฟังก์ชันที่รันด้วยสิทธิ์ของ*คุณเอง* ไม่ใช่สิทธิ์ของเซิร์ฟเวอร์ โพสต์ที่คุณเปิดดูไม่ได้กับโพสต์ที่ไม่มีอยู่จริงจึงตอบกลับมาเหมือนกันเป๊ะ ปุ่มรายงานจึงไม่กลายเป็นเครื่องมือสำหรับไล่ถามว่าเนื้อหาที่คุณไม่มีสิทธิ์เห็นมีอยู่หรือเปล่า และการจำกัดจำนวนครั้งต่อชั่วโมงถูกบังคับอยู่ในฐานข้อมูล ไม่ใช่ในแอป คุณแก้โพสต์ของตัวเองหลังเผยแพร่ได้และลบได้ คอมเมนต์รองรับการแท็ก @ ที่ผูกกับบัญชีจริง การแท็กจึงเป็นลิงก์ไปหาคนคนหนึ่ง ไม่ใช่ข้อความที่บังเอิญขึ้นต้นด้วยเครื่องหมาย @ และคนที่ถูกแท็กจะได้รับการแจ้งเตือน
แสดงความรู้สึกได้หกแบบ คนละหนึ่ง
มีการแสดงความรู้สึกหกแบบ 👍 ❤️ 😄 😮 😢 😡 และแต่ละคนได้แบบเดียวต่อหนึ่งโพสต์ กดอันเดิมซ้ำคือเอาออก กดอีกอันคือย้ายความรู้สึกไปอันนั้น ไม่มียอดที่กดรัวๆแล้วปั่นขึ้นได้ และไม่มีบัญชียอดไลก์กับยอดรีแอ็กชันสองชุดให้มาไล่กระทบยอดกัน
เหตุผลที่มีหกแบบแทนที่จะมีแบบเดียว คือปุ่มไลก์เดี่ยวๆมันกำกวมเมื่อไปอยู่กับข่าวร้าย และเหตุผลที่ไม่มีสามสิบแบบ คือหางยาวๆของรีแอ็กชันที่แทบไม่มีใครใช้ทำให้ยอดอ่านไม่รู้เรื่อง หกแบบพอที่จะแยกความเห็นด้วยออกจากความเห็นใจและออกจากความโกรธ ซึ่งเป็นความแตกต่างที่คนต้องการจริงๆ
ฟีดและสตอรี่ เรียงยังไง และอะไรดันโพสต์ขึ้นบน
ฟีดหลักไม่ได้เรียงตามใหม่สุดก่อนเสมอไป มันเรียงด้วยฟังก์ชันจัดอันดับที่อยู่ในไฟล์เดียวในซอร์สของแอป คือ data/Ranking.kt และทุกน้ำหนักในนั้นถูกบันทึกไว้ในเอกสารอัลกอริทึมหลักของโปรเจกต์ อยู่ข้างๆน้ำหนักที่ใช้กับการแนะนำเพื่อน Dating และการค้นหา เมื่อน้ำหนักเปลี่ยน เอกสารนั้นก็เปลี่ยนตาม
ที่พูดถึงเรื่องนี้เพราะ “อัลกอริทึม” มักเป็นส่วนที่ไม่มีโซเชียลเจ้าไหนยอมอธิบาย การจัดอันดับคือชุดตัวเลขที่มีคนเลือกมา การเขียนมันลงในที่เดียวคือความต่างระหว่างการจัดอันดับที่คุณเถียงกับมันได้ กับกล่องดำ ส่วนโพสต์ในกลุ่มถูกกันออกจากฟีดหลักที่จุดเดียวเป๊ะๆในไปป์ไลน์นั้น เพราะมันเป็นของกลุ่ม และมันอยู่ตรงนั้น
อัลบั้มรูป และรูปของคุณเก็บไว้ที่ไหน
รูปถูกจัดเป็นอัลบั้มที่พกการตั้งค่าการมองเห็นของตัวเองมาด้วย คือสาธารณะ เฉพาะเพื่อน หรือส่วนตัว แยกอิสระจากโพสต์ที่เอารูปนั้นไปใช้ แต่ละอัลบั้มมีรูปหน้าปก เปลี่ยนชื่อหรือลบได้ และมีอัลบั้มเริ่มต้นสามอันตั้งแต่แรก คือรูปโปรไฟล์ รูปหน้าปก และรูปในโพสต์ การอัปโหลดรูปเข้าโพสต์จึงไม่ได้แอบสร้างคลังรูปสำเนาที่สองไว้ในที่ที่คุณมองไม่เห็น
อัลบั้มส่วนตัวเป็นส่วนตัวในความหมายที่ว่าหน้าจอของ Korat จะไม่แสดงมันให้คนอื่น ไม่ได้เป็นส่วนตัวในความหมายเชิงการเข้ารหัส ซึ่งพาเรามาถึงส่วนที่ต้องพูดตรงๆ
สื่อที่อัปโหลดขึ้นมาเปิดอ่านได้แบบสาธารณะผ่าน URL Korat ไม่ได้ใช้ signed URL และไม่ได้ใช้บัคเก็ตจัดเก็บแบบส่วนตัว ใครก็ตามที่ถือ URL ไฟล์ตรงของรูปหนึ่งเปิดดูรูปนั้นได้ ไม่ว่าโพสต์หรืออัลบั้มที่มันสังกัดจะตั้งค่าการมองเห็นไว้อย่างไร การตั้งค่านั้นคุมว่าใครเห็นมัน*ในแอป* ไม่ได้คุมว่าใครดึงไฟล์ได้
ไม่มีอะไรใน Korat ที่เข้ารหัสแบบ end-to-end และไม่มีการเข้ารหัสระดับแอปพลิเคชันขณะจัดเก็บ ขอให้ถือว่ารูปที่อัปโหลดขึ้นมาคือสิ่งที่ใครก็ตามที่ได้ที่อยู่ของมันไปจะเข้าถึงได้ และอย่าอัปโหลดสิ่งที่ผลลัพธ์แบบนั้นจะร้ายแรง
แชร์โพสต์ด้วยลิงก์ที่ไม่บอกว่าใครแชร์
อะไรก็ตามที่แชร์ได้ ส่งเข้าแชทเป็นการ์ดได้ ลงฟีดของคุณเองได้ ลง story ได้ หรือส่งออกไปแอปอื่นในเครื่องผ่านแผงแชร์ปกติของ Android ก็ได้ และยังกลายเป็นลิงก์แชร์บน koratland.com ได้ด้วย เป็น URL รูปแบบ koratland.com/s/<token> โดยโทเคนคืออักขระสุ่ม 14 ตัว โพสต์ โปรไฟล์ ธุรกิจ และ story แชร์แบบนี้ได้ทั้งหมด
โทเคนนั้นทึบโดยตั้งใจ เมื่อมีคนเปิดมัน เซิร์ฟเวอร์จะคลี่มันผ่านฟังก์ชันที่คืนค่ามาแค่สองอย่าง คือมันเป็นวัตถุชนิดไหน และเป็นชิ้นไหน มันไม่เคยคืนค่าว่าใครสร้างการแชร์นั้นหรือถูกกดไปกี่ครั้ง ส่วนการนับคลิกทำกลับด้าน คือมีฟังก์ชันแยกไว้บันทึกคลิก และตั้งใจไม่ให้ใครเลยมีสิทธิ์ insert ลงตารางที่รองรับอยู่ ผู้เข้าชมจึงเพิ่มตัวนับได้โดยที่เขียนอย่างอื่นลงไปไม่ได้ ลิงก์ที่คุณวางลงในแชทกลุ่มจึงไม่บอกอะไรกับคนที่รับไปเลยเกี่ยวกับประวัติการแชร์ของคุณ
สตอรี่ที่หมดอายุ และรายชื่อคนดูที่ไม่หมด
Story คือรูปหรือข้อความบนพื้นสี เลือกฟอนต์ที่ฝังมาได้ วางข้อความตรงไหนบนผืนผ้าใบก็ได้ และเลือกสีตัวอักษรเองได้ การมองเห็นเป็นสาธารณะหรือเฉพาะเพื่อน สองตัวเลือกเดียวกับโพสต์ และมันหมดอายุของมันเอง คุณลบ story ของตัวเองก่อนหมดอายุก็ได้
เจ้าของ story จะได้รายชื่อคนดู คือรายชื่อคนจริงๆที่เปิดดู ไม่ใช่ตัวเลข ตัวเลขบอกว่ามีคนดู แต่รายชื่อบอกว่าใครดู ซึ่งเป็นสิ่งที่คุณอยากรู้ และเป็นสิ่งที่ทำให้ทุกคนเห็นชัดไปด้วยว่าการดูไม่ได้ไร้ตัวตน กิจกรรมจากโมดูลสุขภาพก็แชร์ลง story ได้ พร้อมคำบรรยายบนพื้นหลังที่คุณเลือก ซึ่งก็คือวัตถุ story ตัวเดิมที่เทเนื้อหาคนละอย่างลงไป