jfc

jfc

Elixir alternative to mediawiki?

I am a networking and C veteran and a could-be elixir/erlang programmer. I run 100+ small mediawikis on specific topics. Is/was there any attempt to develop an elixir clone I could use to start extending with new capacities? But first, would that be a good idea? I have a real need but not the PHP competences nor the wish to lock myself in an old non-functional programming context and a big framework like MediaWiki (I am tied by their page format with thousands of pages text). Years ago I started developing a QNX extension to that end. The architecture was interesting, but they kept the OS propriétary.
Thank you for the comments and suggestions.

Most Liked

dimitarvp

dimitarvp

Hello, and welcome to this awesome community.

I am very, and I really mean it – VERY interested in your project. I am an archivist by soul and a senior programmer by profession. :slight_smile: Jokes aside, I love programming. But I quite like information archiving in general.

Lately I am working on bringing in a more contemporary sqlite support to Elixir. There’s a good library but it doesn’t support Ecto 3 which is the upgraded and better version of Ecto 2, which is a data mapper library, or an ORM if you will. Since Elixir is dynamically typed (still strongly typed but not checked at compile time) I’m also pondering adding a stricter typing to my library to make things a bit safer in general. Especially if you keep in mind that sqlite is weakly, or rather, value-typed, and not as strict as Postgres.

Where I am getting with this is that I very much would like to author a Wiki-like software in Elixir, backed by Ecto – which in combination with my other effort, will open it up for being backed by sqlite as well (not only by Postgres and MySQL which are the best supported DB backends for Ecto).

I happen to believe Wikis are way too huge and bloated software packages in general and I’m seeking to bring Elixir’s speed to this area (I mean, it’s not the speediest language but it’s definitely beating Ruby, Python and PHP, and sometimes JS). Fault tolerance and transparent parallelism, too. Elixir is also quite lightweight.

Between Elixir’s releases (self-contained packages) and sqlite (serverless DB) I think Wikis can be made very lean and mean. I’d love working on that.

jfc

jfc

Dimitar,
This is great! My interest is in what I name “humanumerism”, i.e. the way people can take advantage of new tech in the today life.

I started with that idea and the need for an intl network to support the first people and small corps being able to be interested in … 1977. I selected Tymnet to work with (other four I knew off were US ARPANET and French Gov Cyclades, and French Transpac and US Telenet). Tymnet was the only one thinking deep networking (inter processus).

We made it 100% of the public packet switch international services before we were purchased and reduced to the Internet by McDonnell Douglas. My own job was “extended services”, i.e. “the layers above” the 7 OSI layers (in network data processing) while TCP/IP was only 4 lower layers. So I left and tried to build a functional architecture transparent to lower layers in extending QNX. This was very promising but it required dedicated (proprietary) QNX machines.

So I worked (some in the IETF would call it fought) on standardization precautionary concepts to keep the layers above (language, semantic, etc.) independent. In the process I used wikis to document things. More and more wikis as it became clear that the need is for an inter process and human interdisciplinary ontology and a replacement for the concept of only one version "document.” I name it the concept “perligent” (a Cicero’s idea), not the document the author sends, but what the destiny receives, after many may have (directly, indirectly, in parallel) contributed to. Like one does when composing an RFC.

I started publishing one per topic of interest of mine. I named it a “blik” (bliki, book in line, a can of data in Danish/German) and I have 00s I need to sort :-). I focused on the needs I have and anyone working home/independently/in groups may have. You are right: SQLite to be portable, using smart pages, each being independent in the person’s or community’s neb (private nebularity with a gateway on the web). From my QNX days, I know that Erlang/elixir IS the right solution for people (I do not need big power) with a good DNS like (IETF calls it DDDS), a simple accepted (set of) page formats. etc.

I happen to be in Montpellier, France, where there is a university lab which works on smart archiving issues, interdisciplinarity, etc. and the action you do when you write, read what you wrote, formated on the screen, adapt it and mark-it up simultaneously. I am a member of the national archivist’s association.

My idea is to build an entire personal environment to write, read, archive, work, manage, publish, administer, live with it, etc. for a person/couple/family/home/small business under beam. So it can be installed and run the same everywhere. I know it is a huge task. I also know that you cannot succeed it with non-functional architecture. The question is: is it feasible? Technically, and in the open source? I learned a few things in my life, I try to build a team to learn “erlix” (http://erlix.fr), tried to set-up a meet-up to jointly train… Did not rise interest enough, yet! I am trying my last bet: a $10 LLC "senior entreprise,” next week.

mindok

mindok

Hi @jfc, and welcome to the forum.

I’m not aware of any wiki engines built in Elixir / Phoenix (after a brief search, but I’ve also been snooping around these forums for a while and think I would have noticed). The gitgud (GitGud, GitHub clone entirely written in Elixir) has wiki on the to-do list.

MediaWiki is a pretty big codebase so your pathway forward will depend on how you use it and the user base. Search the forums for CMS - you might get inspired by something that isn’t a wiki, but is close enough for what you need (e.g. https://changelog.com/posts/changelog-is-open-source or https://github.com/infinitered/thesis-phoenix).

Converting to/from MediaWiki markup format shouldn’t be too bad, so don’t let that hold you back. Pandoc (https://pandoc.org/) has all kinds of conversion options if you don’t want to code your own. It’s pretty fast too. I use it for quite a few documentation related things - e.g. I can write MS Word docs without using MS Word.

As it happens, John MacFarlane, who wrote pandoc, also wrote a Haskell based wiki - https://github.com/jgm/gitit

jfc

jfc

Hi! Mindok,
Thank you for the welcome, advice and tips! I will look right now into gitit! And your two links.
My basic simple idea is to consider that as “everything is interconnected” there is an “interligence” - interligent space (i.e. universal metanetwork) where everything has a format, a name/address, a way to work and exchange and there can be methods to make them interrelate in a concerted manner. (e.g. the DNS). The concept is to make each page/file a server with a set of presentation/capability parameters, shareable services, and a common search engine.

jfc

jfc

Dimitar,
Just an addition. I built the site “http://blik.tf” as a master for building my bliks. Click on the “-” in the middle of the last line of the first page to get at the technical scripts.

Where Next?

Popular in Questions Top

srinivasu
How to handle excepions in elixir? Suppose i have A, B, C ,D, E modules. and each module has get() function. A.get() method will call th...
New
vonH
In asking this question I am more interested about the expressiveness of the language itself and less concerned about the availability of...
New
aalberti333
As the title describes, I’m trying to run Enum.map() over a list of key/value pairs, where the value is a map. My data looks like this: ...
New
fireproofsocks
I’m working on defining a simple Ecto schema for a table (in PostGres), but I don’t see where I can define a column as NOT NULL. Conside...
New
dokuzbir
Hello, I am trying to convert my lists to string without losing brackets.For start i have 3 map. They look like these buyer = %{ id: ...
New
vac
Hi, I'm quite new in Elixir and I'm trying to format a string to a PEM format. I have the certificate value like MIIDBTCCAe2...... and ...
New
mcarvalho
What is the difference between System.get_env and Application.get_env? For example, what are best practices to use one versus another.
New
stefanluptak
Hello everybody, usually, I use a 29" ultra-wide monitor for VSCode which can easily accomodate explorer (files panel) + file with code ...
New
lucidguppy
I have a super simple question about elixir - how would I take a file like this foo bar baz and output a new file that enumerates th...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New

Other popular topics Top

JakeBecker
TL;DR: I’ve just released an implementation of Microsoft’s IDE-independent Language Server Protocol for Elixir. It adds language support ...
1140 51847 244
New
bsollish-terakeet
Credo is smart enough to check for (something like) this: assert length(the_list) == 0 with this response: Checking if an enum is empt...
New
chrismccord
This release brings a number of exciting features, including integration with the new Phoenix LiveDashboard and Phoenix LiveView. There h...
New
vertexbuffer
Hello, can anybody help here..? I have a list of players and I what to delete an element, but every for loop the list is reverting to ori...
New
chrismccord
As promised, the first release candidate of Phoenix 1.3.0 is out! This release focuses on code generators with improved project structure...
New
alice
Hey, Just curious what are the main benefits of Elixir compared to Clojure? When is Elixir more useful than Clojure and vice versa? Th...
New
qwerescape
Is there a way to get the call stack or stack trace at any point in the code? Not from exceptions, but an expression that returns how the...
New
Qqwy
Original source of discussion: This topic on the Pragmatic Programmers' Functional Web Development with Elixir, OTP, and Phoenix forum. ...
New
siddhant3030
Hi, I have to write a raw query for one of my project. But till now I have used ecto queries and don’t have much experience writing raw ...
New
lanycrost
Hi everyone! I need implement if…else if…else condition from my elixir code, and anymore of this control flow structures not work proper...
New

We're in Beta

About us Mission Statement