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

LegitStack
I’m hoping you guys can give me some general advice and perhaps code examples if you’re feeling up to it. I’m very interested in Elixir,...
New
New
Harrisonl
We have an ECS cluster with 4 services, where each task joins a single cluster, via discovery ECS discovery service. Currently when I de...
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
stefanchrobot
What’s the safe way to decode a JSON string into a struct? I want to avoid calling String.to_atom. Jason.decode can give me a map with st...
New
rms.mrcs
Hi, I need to transform a list of numbers into a map where the keys are the indexes and the values are the original values of the list....
New
ovidiubadita
Hey all, I discovered Elixir and I love it. I always wanted to learn a functional programming and I intended to go for Haskell, but afte...
New
kostonstyle
Hi all I want to have a unix time, from the current time plus 1 hour. DateTime.now + 1 hour How to get it in elixir? Thanks
New
chrisalley
ExUnit now has describe blocks which is a welcome addition coming from RSpec. In the docs, it states that nested hierarchies of describe ...
New
joeerl
Hello again - after a longish gap I’ve decided I really must dig into Elixir and see what’s been happening here - so I have a few questio...
New

Other popular topics Top

dotdotdotPaul
Okay, I'm having a heck of a time trying to figure out how to best handle the validation of belongs_to associations in Ecto. I'm sure I'...
New
pmjoe
I have a relationship of love and hate with Elixir. Lots of things are just absolutely right, but there are some things that are kind of ...
New
openscript
Hello! Sorry for this astonishing simple question, but I’m really stuck. I try to set up the intellij-elixir plugin, but I don’t know ho...
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
SoCreat
i’m a new one to elixir which editor can i use vs code? or atom? Thanks! :smiley:
New
aadeshere1
I have a another noob question about loop. Since elixir is immutable, while loop is not directly possible. total = 10 while total != 0 ...
New
fireproofsocks
Forgive me if this is obvious, but how does one delete a database record WITHOUT selecting it first? https://hexdocs.pm/ecto/Ecto.Repo.h...
New
msaraiva
Surface is an experimental library built on top of Phoenix LiveView and its new LiveComponent API that aims to provide a more declarative...
564 42633 214
New
belgoros
I’m not a pro in using Regex and can’t figure out why the following behaviour happens, especially if we take into account the difference ...
New
josevalim
Hi everyone, One of the features added to Elixir early on to help integration with Erlang code was the idea of overridable function defi...
New

We're in Beta

About us Mission Statement