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.

4 Likes

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

3 Likes

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.

3 Likes

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.

4 Likes

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.

4 Likes

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.

1 Like

Would you accept a personal message?

certainly! Please use jfc@blik.tf. Sorry for the delay, I was not home and created it to be blik+ specific.

1 Like

no news from you? Would you have a problem with my mail address?

No problems, except juggling 10 apples with 2 hands.

I’ll be in touch this week!

Hi ,
Can I chime in?
I’m learning Elixir right now and I’m in love with the language. It would be great to contribute to some project, and doing WIKI from start seems like a great idea.

I have >10yrs experience in C++ (various industries, mainly telecom and finance). So not exactly a junior, although Elixir is like a breath of fresh air to me.

Do you think I can help with the project ?

1 Like

Sorry for the delay in reading this. I entered “MediaWiki elixir” in Google and this popped first! If you still interested my current conclusion (but I have not started yet learning elixir, as I do not have inputs about it able to fit the job) is to develop an “intellipage manager” that can embody and capability protect wikitext pages, blobs, mail, json entries, etc. and an “intellipage user agent” able to correlate, use, massage send, receive and display them.

The key issue would probably be to be wikitext (mediawiki text editor compatible due to the huge “installed” compendium).