|
||||||
Views:
11,051,221 |
Main | FAQ | IRC chat | Memberlist | Active users | Latest posts | Stats | Ranks | Online users | Search | 11-24-24 12:33 AM |
||||
Guest: Register | Login |
0 users currently in AcmlmBoard Developer Zone | 3 bots |
Main - AcmlmBoard Developer Zone - Lunarboard - Rewrite of StapleButter's ABXD fork in Python3/Django/Wagtail with Bootstrap + ReactJS (1) |
AileenLumina |
| ||
Normal User
Octorok Level: 11 Posts: 1/20 EXP: 4998 Next: 987 Since: 05-07-16 From: Hyrule Last post: 2349 days Last view: 2347 days |
It's about time that we move on to a more modern and professional coding language. That's why I decided to start rewriting Arisotura's Acmlmboard XD fork in Python 3 on top of the Django framework using the Jinja2 template engine instead of Django's. Django is a very professional web framework that allows for fast and efficient coding, and it's becoming more and more popular since ~2009.
The goal of this software project is to have a clean, efficient and well-written board software that amazes both admins and users. I made this thread mainly to tell the world about it, and to ask if anyone is interested in contributing to a powerful and beautiful board software. Just leave a reply telling me what you're good at if you feel like helping out and contributing a bit. Feel free to post questions and opinions too, of course. Let me introduce a new message board software: Lunarboard. Lunarboard is a message board software inspired by the greatest ideas of social networks, blog platforms and message board software that already exist. It combines the best ideas and finds clever ways to push them to the next level. Lunarboard combines instant messages, blogs, showcases, discussions, collaboration, communities and social interaction in a beautiful, responsive, intuitive and powerful application you and your visitors will love to use. Configurable: Permissions Users can be added to one or multiple user group(s). You are able to fine tune the permissions for each user and group. You can define exactly who can do what, and where. We try our best to keep the permission system easy to understand and intuitive to use. Customisable: Themes Users can create and submit their own themes. A powerful theme creator helps with creating beautiful themes that are a joy to look at. Themes can also be configurable, meaning that users could, for instance, choose from a list of predefined colour palettes or backgrounds. Advanced themes can also contain JavaScript to, for instance, render WebGL rain in the background of the page. Personal: Post designs and multiple avatars Users can create post designs that change how their posts look like. They can create a number of these post designs, and you can specify a maximum. When users submit a post, they can assign one of their post designs and one of their avatars (as they can have multiple) to the post. Every user is able to disable post designs if they prefer a consistent look and feel. Social: User Blogs Users can have their own personal space to talk about any topic. This is of course configurable in the permissions system. Responsive: Bootstrap and ReactJS Lunarboard uses the most popular web styling framework, Bootstrap. This results in 100% responsiveness and beautiful pages you will love to browse. The usage of ReactJS results in consistently great performance. This combination means standards compliance with the modern web across the major web browsers. In short: Lunarboard will always look beautiful and perform well, no matter which of the major web browsers your visitors may use. Flexible: Django ORM Lunarboard is built on top of Django. This means it is compatible with various database management systems such as PostgreSQL, MySQL, SQLite and many more. You have the freedom to choose the database management system you prefer. Extendable: Plugin System Plugins can extend the functionality of Lunarboard by extending its data structure, executing logic when a certain event happens (e.g. a new user was created, or a post that contains a certain word was posted, etc.), and adding new pages, or extending already existing ones (if they define places where plugins can add their widgets). Easy Development: RESTful API Lunarboard’s RESTful API allows developers to interact with Lunarboard easily. There is an extensive, auto-generated API documentation that tells you in a simple way how to use each API endpoint. Rewarding & Fun: XP System, Economy and Games (This system is fully optional as it consists of plugins.) Users earn XP (“Experience Points”) for submitting posts and chatting with others. Basically, they get rewarded for being active. Every time they gather a certain amount of XP, they “level up”. Users can also earn virtual money which they can spend on virtual items. These items can then be used in games. The higher the level of a user, the better the items they can purchase in the shop. Games can be added by plugins, as well as methods of earning XP and virtual money. Secure: Spam and Flood Prevention Lunarboard allows for the use of reCaptcha, the current industry standard for preventing automated bots from registering accounts. StopForumSpam prevents known spammers from registering accounts. Informative: Analytics Admins can view where visitors are coming from, how they were referred to your site and what parts of your site they visit the most. Plugins can add data that can be displayed on the analytics panel. Other features include: - Special pages - Upvotes/downvotes (both optional) - Instant messaging - Notifications - Custom BBCode - Polls/Surveys - User file storage - Embedded Imgur/Pastebin/etc. uploaders - Reports, warnings, temporary bans, permanent bans, IP bans Join the discussions on the Lunarboard Discord server. Feel free to tell me your opinions! |
Kawa |
| ||
Retired Staff
Not okay Prophet of Celestia Level: 94 Posts: 2042/2423 EXP: 8185515 Next: 171142 Since: 01-01-12 From: The Netherlands Last post: 2240 days Last view: 555 days |
As the original instigator of ABXD, you have my blessing. But that's all I can and will give you. |
AileenLumina |
| ||
Normal User
Octorok Level: 11 Posts: 2/20 EXP: 4998 Next: 987 Since: 05-07-16 From: Hyrule Last post: 2349 days Last view: 2347 days |
Hehe, thanks a lot!
I'm hoping I will be able to draw some interest to this project. ^-^ |
shibboleet |
| ||
Retired Staff
Porcupo no Level: 38 Posts: 207/313 EXP: 363642 Next: 6805 Since: 02-02-13 From: Maryland Last post: 2479 days Last view: 2448 days |
python isn't professional |
AileenLumina |
| ||
Normal User
Octorok Level: 11 Posts: 3/20 EXP: 4998 Next: 987 Since: 05-07-16 From: Hyrule Last post: 2349 days Last view: 2347 days |
Hm, I'm not really sure why you're stating that. I consider a coding language that is serious and powerful while also being relatively easy to learn "professional".
Just to name a few: Dropbox, Pinterest, Reddit and Quora are having their backends written in Python. It may be too slow for large-scale, power-hungry projects like, for instance, games, and the lack of static typing makes it hard to manage for bigger projects. (Did you mean that with your statement? If not, please explain it to me as it may be something I have overlooked when checking the pros and cons in order to determine what language to rewrite Blargboard in (I also had Ruby on Rails and Perl in mind). ) I admit that; still, I don't think it's "not professional". "Its design philosophy emphasizes code readability, and its syntax allows programmers to express concepts in fewer lines of code than would be possible in languages such as C++ or Java." (Wikipedia) In my opinion, Python is more modern and beautiful than most other coding languages. |
shan |
| ||
Normal User
Level: 110 Posts: 2/4003 EXP: 14117079 Next: 291807 Since: 05-23-16 Last post: 450 days Last view: 450 days |
So, what features are you implementing? Or is it a simple port? |
AileenLumina |
| ||
Normal User
Octorok Level: 11 Posts: 4/20 EXP: 4998 Next: 987 Since: 05-07-16 From: Hyrule Last post: 2349 days Last view: 2347 days |
Some words about shibboleet's statement first.
With his statement, he just wanted to say that people usually write non-professional code from what he knows. (I hope I remembered that correctly; he told me on IRC.) Well, one could argue about that but that would go a bit beyond this thread's topic I think. ^^ shan Oh, hi... Do we know each other? ^^ I don't have an exact list of features I want to implement; that means I'm open to any suggestions. (I do have some things in mind though, like for example a very powerful Post Layout Creator (which will have many more features than the Layout Maker plugin of ABXD , a similar Theme Creator and a more powerful Theme Engine). I'll try to allow anyone without any coding knowledge to enjoy pyCuccoboard in its entirety, that's what I want to achieve. ^^ |
shan |
| ||
Normal User
Level: 110 Posts: 8/4003 EXP: 14117079 Next: 291807 Since: 05-23-16 Last post: 450 days Last view: 450 days |
Nope, we don't. Nice to meet you.
Interesting, sounds like something that I could see use for. Anyway, will you perhaps make a more flexible permission system (sort-of like Acmlmboard's) in it? Or will you just leave the permission system as is/add small things into the current permission system? It having a bit more flexibility with permissions would be great. |
Emuz |
| ||
Site Administrator
11 Hit Combo: Mother's Rosario Level: 109 Posts: 2863/3393 EXP: 13567105 Next: 392540 Since: 12-30-11 From: Akron, Ohio; USA Last post: 116 days Last view: 6 days |
I would suggest the perm model Arisotura spec'd out for his later works, which isn't a flexible as AB 2.5 but isn't quite over the top and makes a lot of sense. It's more of a perm mask system instead of a database stored token system like 2.5. It's unfortunately not in anything public but it basically boils the style of 2.5 down to just the absolute core functions, and the ones that makes sense to split off. Than assigning that to groups using a hex flag system.
You are also more that welcome to take what 2.5 and make your own improvements on it. I'm still going to say more than the old user # system makes a more useful board to the right person. Please do continue with this, as I think a python version of the Acmlmboard style is a perfect fit. The Dynamic Profile Administrator™"Never Knows Best" Note: if you can see this my layout broke. ALL THE CREDITS WILL BE REVEALED!! 'Victory Noriko' by @thatsheepagain. 'Chibi Dance Noriko' by @Haru__Kitsu. 'Deity's Night Out (Featuring Gabbie)' by @thatsheepagain Noriko Emotes by @Haru__Kitsu. Side Bar Noriko by @thatsheepagain 'Noriko's Nature Walk' by @projectTiGER_ Emotive Noriko by @thatsheepagain. "Space Candy Noriko" by BerryVerrine. "Super Sharp Noriko" by Xionfes. A gift illustration from the wonderful EverKinzPony! "Magical Girl Noriko" by @cute_hospital! "Patient Chibi Noriko" by @Ruii_ki! 'Dapper '60s Noriko' by @thatsheepagain. 'Shiny Chibi Noriko' by @inioli. 'Flower Veil Noriko' by @Sushiee_. 'Noriko in Realism' by @_Sarybuu. 'Noriko's Midnight Adventure' by @projectTiGER_ 'Yukata Noriko' by @yunyunmaru_ 'Birthday Wishes Noriko' by @thatsheepagain |
Arisotura |
| ||
Developer
pancakes Level: 84 Posts: 1035/1870 EXP: 5547585 Next: 114367 Since: 01-05-12 From: France Last post: 40 days Last view: 40 days |
Posted by AileenLumina So? Facebook and Wikipedia are written in PHP. That means nothing. I find it weird to call a language "professional". You use a language because you know it well and find it adapted to what you're aiming to do (and in that case, avoiding PHP is a good idea). Just don't be like those Javascript hipsters who try to slap it everywhere just because it's 'cool'. Similarly, I find the concept of professional or non-professional code to be kind of dumb. What is professional code, code that follows today's trendy practices? Writing good code is choosing the right design strategies for your project and applying the coding practices that make the most sense. It's not about blindly applying the 'good' practices everywhere just because you can. Case in point, OOP-- if you use it where it makes sense, it helps making your code better, but using it everywhere is a terrible idea and turns your code into a big mess. Just my two cents. I don't know how you code, but "professional code" and such sound like tech buzzwords to me. Posted by Emuz One flaw of my system is that it's not easy to make local mods (requires creating a specific localmod group to put users into, because users alone can't have more perms than what their groups give them). Anyway, my system is simple but definitely not as flexible as the Blargboard one or the AB2.5 one. It's fine for me because I want simple things, but if you're going to make a forum software for public distribution, you should go for flexibility. A lot of the potential users will expect to be able to change things to their liking without touching code. Maybe this will be different in the Python scene, but dunno. The way perms are stored (bitmasks) also makes it hard to hand-edit the DB (moreso than in Blargboard). The benefits are that it takes way less entries to store permissions, and it's also faster to compute the user's final perms. To make for the lack of DB human readability, the board has a generic permission editor. Also, DB readability shouldn't be a concern for a public board software, ideally you shouldn't require hand-editing the DB at all. ____________________ Kuribo64 - melonDS want some revolution in your coffee? |
AileenLumina |
| ||
Normal User
Octorok Level: 11 Posts: 5/20 EXP: 4998 Next: 987 Since: 05-07-16 From: Hyrule Last post: 2349 days Last view: 2347 days |
First off, I'm going to write a completely new permissions system from scratch. I have lots of people to ask for ideas and help, all of whom have experience with such systems.
The database will be rewritten as well, but there'll be a simple upgrade.php that updates the Blargboard db for you, although user-specific permissions will likely be lost. What I can tell for sure is that userperms and primarygroupperms (and maybe even secondarygroupperms) will be seperated. Also, the entire database will be "third normal form" conform. I will make use OOP (a lot; heck, it's so easy to do in Python ^^), three layer architecture, and well, all the other good practices whenever they make sense (e.g. PEP8, recursion and all that). Arisotura, with professional code, I meant code that is clean, easy to read and efficient, and with "professional language", I was referring to Python's serious attempt at and their professional way of realizing their language design model. As a result of that, we as the coders are given a very easy-to-understand yet still very powerful language that eases writing professional code (recursion is taking over :p). Maybe an idea to get both flexibility and accessibility would be to give every permission a column (type would be tinyint(1)) and default those to NULL, thus: NULL = Neutral, 0 = Deny, 1 = Allow (If that's possible; if it's not, I'd need to do tinyint(2) as the type). That would result in faster SELECTing than if it was a bitmask (assuming that bitmask is stored as a VARCHAR). Arisotura, with the statement you quoted I rather wanted to say that it's not unprofessional. It was more meant to deny shibboleet's statement. The way I code is, uhm, very prototype-ish? I love to keep everything clean and maintain the readability and accessibility of the entire project yet I also want to keep everything as efficient as possible. I'm what people call a perfectionist, at most things. I'm always striving for the one, best, and (more-or-less) obvious solution. That's also why Python is a perfect fit for me (heck, I was able to learn Python in less than half a day (actually it was 11h 40min :p)). I know about the importance of many coding practices and habits but I think I also know when to go out of my usual path to either accomplish a better readability/accessibility or improve efficiency or whatever. I have really little experience but I'm learning really fast and have a great understanding of how IT works. Sorry for the messy reply. ^^ |
shibboleet |
| ||
Retired Staff
Porcupo no Level: 38 Posts: 209/313 EXP: 363642 Next: 6805 Since: 02-02-13 From: Maryland Last post: 2479 days Last view: 2448 days |
Bitmasks aren't integers. Also, you'll be doing a lot of == to relate. That's not a good idea at all. |
Arisotura |
| ||
Developer
pancakes Level: 84 Posts: 1039/1870 EXP: 5547585 Next: 114367 Since: 01-05-12 From: France Last post: 40 days Last view: 40 days |
actually, my bitmasks ARE ints. Each bitmask int can only hold up to 32 bits though-- to make up for that, the code can handle multiple bitmask fields. If you ever need more than 32 permissions, you'd add another bitmask field to the perms table.
also, the number in tinyint(2) (or int field declarations in general) doesn't affect the length of the field. tinyint is always one byte, int is always 4 bytes, etc. The number only affects how the data is displayed in the MySQL console. you can only specify a size for variable-size data types, like char or varchar. granted, that's misleading. ____________________ Kuribo64 - melonDS want some revolution in your coffee? |
AileenLumina |
| ||
Normal User
Octorok Level: 11 Posts: 6/20 EXP: 4998 Next: 987 Since: 05-07-16 From: Hyrule Last post: 2349 days Last view: 2347 days |
Comparing a bit to 0, 1 and NULL is unmeasurably fast so I'm not really sure if I got your statement the right way, shibboleet.
I'm really sure about that I will write a new permission system from scratch. I didn't even start with the database model yet though; I'll tackle the very core stuff first and practise coding in Python/Django. Also, there's still various decisions to be made: I am planning to use a CSS framework because using frameworks seems like a good practice to me ("Don't reinvent the wheel"). So, I'm wondering which one to choose: Semantic UI, Foundation or Bootstrap? Oh, JavaScript stuff will mostly be rewritten in Python too (see Brython) if the benchmarks are showing good results. Another thing I want to do is saving the version with all the bbcode replaced and all alongside the pre-rendered version in the database to speed up loading a lot and reduce the amount of queries. I'm not sure if I overlooked a vulnerability this causes though... And a more dirficult thing: the licence. I can't decide between BSD, Simplified BSD and MIT. Any advice would be appreciated as I have zero experience with licensing. |
Nicole |
| ||
Administrator
Goddess of the Apocalypse Level: 200 Posts: 9538/14042 EXP: 114173214 Next: 956175 Since: 01-03-12 From: Boston, MA Last post: 470 days Last view: 469 days |
♥9538 ✿4708 ★52 Posted by AileenLumina As far as I know all these licenses are basically equivalent; the differing language doesn't actually result in any real differences in rights. (Unless by BSD you mean the original "advertising clause" license, I guess) |
Arisotura |
| ||
Developer
pancakes Level: 84 Posts: 1050/1870 EXP: 5547585 Next: 114367 Since: 01-05-12 From: France Last post: 40 days Last view: 40 days |
Posted by AileenLumina ...a Python interpreter in Javascript? Oh my god. I can't even imagine that being fast or efficient in any way. Posted by AileenLumina Aren't the 'version with all the bbcode replaced' and the 'pre-rendere version' the same thing? You probably meant something else. Regardless, it wouldn't really reduce the amount of queries. It would only save time when rendering posts. ____________________ Kuribo64 - melonDS want some revolution in your coffee? |
RanAS |
| ||
Normal User
Rare Level: 21 Posts: 2/84 EXP: 42681 Next: 7262 Since: 06-25-16 Last post: 1535 days Last view: 98 days |
If I actually knew Python or JavaScript I could actually be able to do something, but welp. I am learning web design rather quickly though, and I've had a little bit of experience with programming in general.
Not sure if I like these "multiple frameworks" thing though, I guess I don't "reinvent the wheel" if we're going to use this analogy, but I don't just grab a premade general-purpose one either. I like making a wheel using other wheels as comparison and carving what remains. ...uh translation for that: I like testing things out and figuring out coding on my own, but I don't mind having to look up any help/examples online. That's more or less what I do with actual languages too. I can't say I'm not interested on the project at least. "The quieter you become, the more you are able to hear." --Ram Dass |
shan |
| ||
Normal User
Level: 110 Posts: 74/4003 EXP: 14117079 Next: 291807 Since: 05-23-16 Last post: 450 days Last view: 450 days |
Posted by StapleButterPosted by AileenLumina I think she meant that the Javascript stuff was going to be rewritten in Python for the most part, but I could be wrong. Anyway, I think a good idea would to have multiple choices of the board layout. You could possibly go with Acmlmboard's general layout, or Blargboard's layout, and/or the Lunarboard default (dunno if there will be one, though). It'd be a nice feature for those who want the board to look more like an Acmlm or Blargboard. |
Arisotura |
| ||
Developer
pancakes Level: 84 Posts: 1063/1870 EXP: 5547585 Next: 114367 Since: 01-05-12 From: France Last post: 40 days Last view: 40 days |
yeah, the JS is rewritten in Python, but browsers can't run Python scripts natively. So it uses a Python->JS translator, which is the Brython thing that was linked.
it's nothing but an excuse for lazy fucks to not learn Javascript. and if you already have Javascript to begin with, there is no point in doing that kind of thing, you will only waste your time and nothing good will come out of it. ____________________ Kuribo64 - melonDS want some revolution in your coffee? |
shibboleet |
| ||
Retired Staff
Porcupo no Level: 38 Posts: 210/313 EXP: 363642 Next: 6805 Since: 02-02-13 From: Maryland Last post: 2479 days Last view: 2448 days |
I'd recommend portability to python 2 and 3 tbh, since people use both for some reason |
Main - AcmlmBoard Developer Zone - Lunarboard - Rewrite of StapleButter's ABXD fork in Python3/Django/Wagtail with Bootstrap + ReactJS (1) |
Acmlmboard v2.5.6 (06/11/2024) © 2005-2024 Acmlm, Emuz, et al. |
MySQL - queries: 244, rows: 590/622, time: 0.073 seconds. |