Symbian Source Code
github.com
github.com
And for that he needed quite a few people to agree and he had to sign an NDA (again, as an employee, not a subcontractor!). Then, of course the whole thing was pretty hard to make work on his machine.
Later on I did some work with the (public) SDK as well. The build system was based on the GNU toolchain. More precisely, a windows port of the GNU toolchain, so it would only work on windows. But even on windows it had a lot of warts (because these tools were build for unix in the first place, so e.g. drive letters and back slashes were problematic). As far as I can remember, a lot of the build tools were written in perl. There was some script to generate makefiles for your project and even that, as far as I can remember had a front end script. (I remember something called MAKMAKE.BAT, but I may be wrong.)
The whole thing was a pretty frustrating experience. And we haven't talked about the libraries, the OS (cooperative multi tasking, everything is a callback) or memory management ('descriptors' that made trivial string operations a pain). No wonder it couldn't keep up with android and ios. Now, to be fair, the OS was based on a core and concepts created in the mid 1990s to allow software development on devices with 64k of memory or something. But even with several megabytes of RAM (so the early 2000s), that programming model was obviously way too constraining.
About a decade ago I worked on a project for a South Korean cellphone vendor whose name I'll not cite for somewhat obvious reasons. The build system was similar to what you describe: a poor port of unix tools for windows that required windows xp which was already obsolete in 2011. I asked why don't we use linux since the build was probably more adequate for that environment. The answer was something like "because they spent a lot of money and time to make this port so we can use windows." Korea was mostly a windows-only country at the time. They had to change because of android, but for them it seemed already too little too late.
LineageOS said it was out of date, but it worked for me on Ubuntu 22.04.
I vaguely remember in the very late days there might have been some simplifications, but the train had gone already at that time.
You could always tell who was using it in the office because their laptop fans would be at full blast.
Of course all of this was labelled as research and wasn't taken too serious by the business units until it was too late. A pity, because a lot of the stuff that NRC produced wasn't bad. There was a thing called friendview that existed before foursquare was a thing where you could share your location on a map with friends. The team that did that also did another app that allowed people to share photos. Instagram was not a thing yet back then. Another team was doing a thing called sports tracker. These were tiny teams doing amazing things. Sports tracker basically was allowed to take their software outside of Nokia and create a company around it. Nokia shipped a lot of stuff like this via Nokia Betalabs. A lot of that stuff came from teams in Nokia Research Center.
Unfortunely, the project did not have a real business use case. People believed that peer-to-peer is a thing (XMPP, BitTorrent, IRC) and this would drive mobile-to-mobile interactions. Unfortunately, it turned out not to be true.
Later me and my friend ported Python to Series 60 with our own rewrite, as Nokia’s official port had many issues. Unfortunately by this time Series 60 was already losing market share for iPhone and Android. Furthermore we found that because of module import delay, Python will never be a good run-time for mobile applications, unless you do some sort of a binary dump/prewarmed up interpreter.
If you really care about the startup time, you could pre-compile it. Nuitka and Cython could do this with different limitations.
The problem you mention can be significant because some design patterns in Python encourages this. Eg function arg with a default that’s expensive. Unfortunately this whole speeds up repeatedly calling the func, the cost is paid at first import.
I painfully remember all the hoops that Symbian went through during those years until the last days of Carbide.
Yet, sometimes I still miss it when comparing with NDK development experience on Android.
My understanding, as someone who was peripherally in contact with Symbian in 2007-2011, is that the multitasking concepts were based on the Actor model [1]. This is indeed a kind of callback-based cooperative multi-tasking, but it fits very well in Symbian's tasks-as-C++-objects concept.
C/C++ strings are a nightmare from a memory-management and reliability perspective, so I can't blame them for doing it differently. However their tooling was indeed not up to the challenge.
I remember that concatenating a string to print a log message required several lines of code. (And I mean something simple like: `print("Request took", length, "seconds")`.)
It may have been OK or maybe an absolute necessity for EPOC, when it was running on PSION PDAs with 64-128k of RAM. It was also probably even manageable, because the apps must have been of a smaller code base.
The 3650 was the first S60 phone, IIRC. It came with 4MB of RAM. A decade or so earlier one could run Linux with a GUI on a similar machine and without the insane memory management tricks. And I'd say that the 3650 was still OK, nobody knew whether it would be problematic to develop software for this OS or whether even if people would really use apps. But it was apparent after a few years that Symbian was very constraining and that it would cause serious issues in the future and Nokia did (would) have the time to act and maintain a healthy market share. It would have been risky, of course, but inaction proved fatal.
There was a "gmake" and "cmake", one of them written in Perl and one written in shell, which wrapped make on a Windows port of the GNU toolchain, and the makefiles were generated (as far as I can tell) using Make as a scripting language. Hard-coded drive letters, company-internal packaging systems, Cygwin mount points, multiple terminal windows, etc. The build system dated back a couple decades and was ported from Unix.
If you tracked down the actual rules that Make executed, you'd find something like this:
$(TARGET_1): $(DEPS_1)
$(RECIPE_1)
Copy/pasted a hundred times.I have no idea of the actual history for this software. Few teams used it. I can only imagine that it was slowly modified, over decades, by people who did not understand the system that they were modifying. By this point in history computers were plenty fast and had plenty of memory, so I can only imagine how much of a pain it must have been to work with back in the 1990s. During the short time I was there, I managed to reduce the build time by a factor of about 100x, there were so many easy opportunities for improvement. I heard from someone who still works there that my improvements were removed, which doesn't surprise me at all--after all, I wasn't there to support those improvements.
At some point I realized that I was cleaning up bugs introduced by other members of the team, and I was on the losing side. My direct manager had almost zero knowledge of software engineering, as far as I could tell (only seniority & some domain expertise). Some other people on the team were figuring out how to provide proper support, and a couple others were doing stuff with Node.js.
I’ve continued being a server-side programmer though :)
I remember my first few years of Android/iOS, There would occasion where the 'old Nokia(Symbian) could do it better'; On Android it was largely limited to battery management(similar screen size), Multitasking and on iOS it was everything from SMS forwarding to bluetooth sharing.
Except for two critically important features: user experience and developer experience. (Actually, the first version iOS/iphones didn't even allow 3rd party apps.)
It was a classic case of market disruption: a product (well, two products) inferior to the dominant, incumbent product in almost every respect gets a few things right while missing the mark on just about everything else. And the funny thing is that we'd bean hearing the term "disruption" for years from managers when they talked about strategy. In just about every meeting. They kept quoting Christensen, saying "we have to be disruptive" and even that didn't prevent the company from being disrupted big time. Now don't ask me how we would have been supposed to "disrupt" as the largest incumbents, the market leaders, but it was obvious that the management was not willing to take the required chances. (Hence they stuck with Symbian, despite what should have been obvious to anyone with a decent knowledge of software development.)
It's considerably more mature than that. :-) (For the avoidance of doubt: this is a good thing.)
Symbian was a rebrand of the Psion 5 and 5MX OS, which was called EPOC32. It also ran on some other hardware, including the Ericsson MC218, Oregon Scientific Osaris, and Geofox One.
The first EPOC32 device was the Psion 5 in 1997:
http://www.computinghistory.org.uk/det/5300/Psion-Series-5/
Succeeded by the 5MX:
https://uxdesign.cc/psion-pda-how-does-it-look-today-327e01b...
https://thenewstack.io/retrocomputing-in-modern-times-redisc...
In other words, this OS was out there in the real world, in use by hundreds of thousands of people, five years before the first Symbian device (Nokia 7650).
So, four years earlier, not five. :-)
I have seen comments from people who worked at Accenture in the last days of Symbian, about the difficulty of putting together the build system today. Apparently bits need a specific MS C++ compiler that only runs on WinXP.
I think it would be wonderful to see this resurrected and ported to the RasPi or something. Symbian was capable of SMP, and there were a lot of 3rd party apps back in the day.
One of the things that crippled Symbian in the market was the range of UIs, all incompatible. I owned devices running Series 90 (Nokia 7710), Series 60 (E90 Communicator), and UIQ (Sony-Ericsson P910i). There was also Series 80 (earlier Communicators), and MOAP and OPP in Japan only.
AIUI all needed different programming tools and apps from one couldn't run on the other.
Frankly, none of that matters any more. Whatever is in this FOSS release and can be used with modern FOSS tooling is all that matters. Nobody needs early-noughties phone apps on a RasPi. Just something that can be used on a desktop with a mouse and keyboard.
I suspect a few old Psion and Symbian enthusiasts would appear and enjoy modernising their own apps to get them working again. It's not that long ago.
EPOC32 and Symbian were great OSes to use: fast as hell, stable, and low-resource. On a RasPi 4 I think it'd stomp all over Linux, and it's vastly more modern than RISC OS.
C++ has come a long way, too, since Psion chose it. The rough edges have been smoothed away.
All of them were good. I'm not arguing about the pros and cons of any particular UI.
The problem was that there were about half a dozen different Symbian UIs, and the devices were totally incompatible. You couldn't run an app from one UI on another device with the same OS version but a different UI.
Apps even had to be developed with different toolchains. Some GUI toolkits were entirely proprietary, some used Qt, some used Java. Apps weren't even portable between UIs!
That was disastrous.
Under the skin, Symbian was quite remarkably good in some ways. For instance it was the only phone OS where the main CPU could also run the GSM comms stack: its realtime support and multitasking made this viable. Every other smartphone dedicates a separate, loosely-couple CPU with its own OS to running the comms.
Symbian devices with say a 16MHz ARM and 8MB of RAM were entirely usable. That is unachievable with any UNIX-based smartphone OS.
No, it doesn't matter any more in efficiency terms, when a $5 computer has a gig of RAM and 4 cores. (I am thinking of the Raspberry Pi Zero W here, for clarity.)
But think of attack surfaces. Think of size of stack to be ported to a new platform. Think of the amount of code to learn before making changes. Think of amount of code to verify. Think of the rebuild time. Think of team sizes. Think of there being any chance that a small team can study and learn the entire codebase.
This is meaningfully impossible with any modern xNix-based OS. It's too vast. It would take a lifetime to study the whole source tree.
Whereas Symbian was built by a tiny team in a few years, in a then-new state-of-the-art language, and it scaled from a single-CPU machine with 1 core in the double-digit MHz and a few megabytes of RAM, and a decade later, it was still competitive against machines with multiple gigahertz-class cores and hardware 3D processors running a truecolour GUI, using a desktop OS sized in the gigabytes developed by teams of hundreds of thousands of coders.
That is a remarkable achievement.
It's remarkable not that it died, but that it lasted so long and held up so well.
I disagree. All of them were used on different devices, with S60 being the most popular and used on most phones, just regular market differentiation.
For example: https://www.theregister.com/2011/01/12/symbian_history_part_...
(From my employers, but not by me and before I worked there.)
This whole series is well worth a read.
Or do we have better alternatives and rewrites for everything that can be found in this repo?
There are only a handful of C++ OSes out there.
• EPOC32/Symbian.
• BeOS (now lost somewhere inside of Access) and Haiku, its FOSS recreation.
• Genode (still in prototype stage, really)
• Serenity OS (not yet self-hosting, & barely able to run on bare metal.)
Symbian is by far the most successful, long-lived, best-selling C++ there has ever been.
By 21st century standards, it is tiny, simple, low-resource, fast, and stable. It is SMP-aware and multimedia-friendly, yet realtime-capable.
Symbian, in a way, is what many next-gen OS projects have been aspiring to be for decades.
It also uses standard filesystems, ran on a wide variety of industry-standard hardware, and was built using fairly standard PC tooling: Windows, C++ etc.
If there is nothing to be learned from this, we may as well all give up and go home, because computing is over.
macOS uses C++ as driver and Metal subsystem.
IBM mainframes usually get to write new modules in C++, alongside their classical languages (PL/I dialects and such).
ARM mbed also makes use of C++.
Although not an OS proper, the Arduino bare metal libraries are C++.
https://hackaday.com/2022/04/08/wordle-comes-to-the-nokia-n-...
I remember the N-Gage being lambasted when it came out, but recently I realized that those same people also lambasted the iPod, and maybe I can't trust those people's judgment about tech. You know, the Slashdot crowd.
Maybe it was a good system that was just poorly positioned in the market against the Game Boy Advance. $200 for a phone + gaming system doesn't sound so bad, and the more recent comments I've heard about it are along the lines of "underrated system that was ahead of its time". It was competing against a $100 Game Boy Advance, though.
* They put the phone microphone and speaker on the side of the device, which meant holding the top of the gadget to your head if you wanted to use it as a phone without a headset -- this was both awkward physically and looked phenomenally stupid.
* You had to remove the battery to get to the game cartridge slot! Again, really awkward. Really, the ergonomics overall were kind of baffling.
* It had a portrait orientation screen that was slightly lower resolution than the Game Boy's, which made doing ports of games designed for the landscape orientation more common everywhere else more difficult.
The updated "QD" version fixed a lot of the weirdness, and it's possible that if it had been the original N-Gage, things might have gone a lot differently.
Of course, that's kind of a theme in the Nokia story in the mid-to-late 2000s, I think -- they got really good at shipping terrific products just a couple years later than they should have. If Symbian^3 and the N8 had come out in 2008 instead of 2010, Nokia's fate might have been pretty different. (Emphasis on "might," to be sure.)
> They put the phone microphone and speaker on the side of the device.
I actually drilled a few tiny holes in the side of my N-Gage so that I could hold it like a normal phone. The actual speaker was not near the edge, and was mounted such that its natural direction was towards the rear of the device. The N-Gage had a channel moving sound from the speaker out towards the side.I have no idea why they engineered the device like that. It would have been easier to just put a grill right where I drilled my holes.
It always had a following, but the thing flopping wasn't because of the Slashdot crowd, it's because it just wasn't very good out of the gate.
The N-Gage has an awful form factor that made it suck both as a gaming device and as a phone. Game cartridges were hidden behind the battery, button placement was awkward, and sidetalking became an early internet meme for very good reason.
Nokia fixed a lot of the problems with a second generation release, but at that point the brand was largely poisoned.
I miss the form factor though. Typing this text on a virtual keyboard feels like something is amiss. A real keyboard IMHO just can't be replaced by an on screen keyboard.
[0] https://www.mediafire.com/folder/79jhy594xb3uk/Symbian_Devel...
I ended up doing mobile development anyway, but not until Qt was a viable option for Symbian.
Here is a list of active Symbian software developers* (+ links to its projects).[2]
P.S. I'm luckily archived/mirrored LCG's X-plore[3] & ProfiMail[4] apps source repos in time when it was released into Public Domain by LonelyCatGames* team (now official repos is disabled).
[0] https://mrrosset.github.io/Symbian-Archive/index.html
[1] https://github.com/mrRosset/Symbian-Archive
[2] https://github.com/mrRosset/Symbian-Archive/issues/10
A few examples of my childhood experiences making a game for Symbian:
1) Debugging that one problem which would cause the whole OS to crash
The crash log didn't help cause it wouldn't flush the logs to disk in time. My under developed concepts of multi-threading didn't help much either not that I know much more today 10 years later.
2) Overriding OS memory safety to read accelerometer data from memory in phones that didn't have APIs for it
The patience and creative thinking you learn tackling with such high levels of uncertainty and painful problems is incredible.
I am not aware of how engineers learn engineering (I am self taught) but this kind of patience and endurance does shape a lot of my engineering skills today.
And by “earlier” I mean from Win 3.1 and up to W8 era or thereabouts, when the documentation finally started to improve.
https://www.youtube.com/watch?v=gqXTzlDZmhU https://www.youtube.com/watch?v=mjtKHPwTWsc
Edit:
As you write they were expensive. So while Nokia was the undisputd leader in the segment for a couple of years the absolute numbers were not that big. I remember some year the worldwide phone market was 400 million a year. Nokia had over 100 million of them, but smart phones (Symbian) only single digit millions.
They had a lot of the right ideas very early. They started building a high-resolution graphical mobile OS for 32-bit ARM in the mid-1990s, when most phones barely could display two lines of text and receive an SMS. Many concepts in iOS and Android today were pioneered by Symbian.
IMO, the biggest failing of Symbian was to disown the UI and focus on the lower layers of the operating system. Symbian's licensees like Nokia, Motorola and SonyEricsson wanted to control the GUI layer themselves, so they had annoyingly incompatible GUI libraries for Symbian. The platform was already hard to develop for, and then you had multiple vendors piling gunk on top like Nokia's Series 60 which was a terrible piece of work.
In a parellel universe Symbian would have acquired the BeOS team in 2003 and kept them in Silicon Valley, tasked with building a truly excellent mobile GUI on a five-year time horizon independent of Nokia's meddling. A well-designed high-level UI framework in a reasonable language could have made the embedded C++ underpinnings of Symbian mostly irrelevant — basically shipping Android a couple of years before the fact.
I know that they made stuff like the 9x00 communicators but they where never intended as mass market products.
Nokia was never able to craft a desirable product that brought applications to the mainstream user, most people who got their smartphones only used them as phones.
This is one of the things that I think modern techies have forgotten. No matter what you think of Apple, they were the only ones with enough market power to force carriers out of that position (Apple having been newly minted at the king of digital music) . It’s why the iPhone was exclusive to AT&T — because Verizon was the market leader and AT&T had to make the deal to get the iPhone. And Jobs wouldn’t make the deal with any carrier that insisted on adding crapware to the phone.
Symbian didn’t screw up the UI and it certainly was “too open”. It was so common to have malware and viruses on nokia phones. Bluetooth was scary.
The biggest issue of all was the incompatible app ecosystem. Each phone and OS and sometimes even models were different. Some were Java, others were Symbian and then the whole world of blackberries and windows.
Insert the usual disclaimer that Europe has a lot of countries with different legislation, but the carrier stranglehold was a US specific problem.
I never experienced that and don’t know anyone who did. Was it really a thing?
https://en.wikipedia.org/wiki/Cabir_(computer_worm) https://en.wikipedia.org/wiki/Commwarrior
NB tho, Symbian already knew (see 1998) how to make a "truly excellent mobile GUI" - sure, it was a PDA, but we were already making phone UIs with phone licensees then, and could happily have made a "well-designed high-level UI framework".
I'd've loved that "parallel universe".
Alas, the Symbian deal nixed it, and our new owners simply wanted us to make their kind of phone platforms for them: four whole new ones, in 18 months (heh right), mainly to their specs, while recruiting 100 new devs and 10 new designers.
So I feel it's a little harsh to say "the biggest failing of Symbian was to disown the UI" -- we never had the option to keep control of it. (It was a major failing of the Symbian deal itself, sure.)
I like to look back and note some of the companies I helped in that little window of time I could contribute, but those contributions are long gone.
We don't build bridges in this business, thats for sure.
Software Manufacturing is a term that best captures my impression of the industry today.
By then, Nokia had been working on a Linux based OS for years. (That would become Meego.) But, if I'm not mistaken, at least a thousand people were working on Symbian and Symbian based products. So switching away from it was simply out of question. It would have been too bold a move. (Especially, since Nokia was dominating the market and these products brought in a very nice profit.)
[1] https://www.alexanderjarvis.com/memo-nokia-ceo-stephen-elops...
The problem was that in the mid 2000s things were going just too good and management didn't want to see how it could become problematic, or at least take the risk. We were selling smart phones, that weren't really phones anymore (heck, we called them mobile terminals!) but it was pretty hard and painful to develop software for these. This made hard to convince external, indie/hobbist developers (they ended up creating most of the apps for ios and android) and, of course made internal development pretty expensive. Worse, it must have made experimenting and thus innovation slow. Hence the UI was stuck. Not as if Nokia ever put too much effort into innovating the UI. Touch screens were somewhat frowned upon. Though that may in part have related to the existing UI, the effort needed to try out something new and the fact that those touch screens were still resistive back then. Which is really not a great UX.
Though I remember once trying a prototype phone at an internal conference with a touch screen providing haptic feedback (through some piezo efect). So you could kind of feel the on-screen buttons.
The Symbian teams had finally managed to bring app developers along with platform improvements on Carbide, Qt integration, better POSIX support via PIPS, Symbian was finally looking more modern and then management dropped the bomb.
Naturally it was the last drop for many of those small app developers that had enough of the Symbian SDK changes from the last set of years, now being asked to drop C++ and Java, and rewrite everything into Silverlight/XNA for WP7.
Instead of adopting WP7, most decided it was time to go elsewhere.
https://www.amazon.co.uk/Smartphones-beyond-Lessons-remarkab...
When I say detailed, I mean detailed... David Wood seems to have copies of every email and memo he ever wrote when he was there... and he doesn't hold back when it comes to sharing them.
Required reading for anybody seeking to build a platform business.
Here is the single-page view:
https://www.theregister.com/Print/2014/09/12/blockbuster_boo...
A friend of mine had one. He said he spent a few days in the countryside watching films he copied to an SD card on an old tube TV with it. He also told me how he could play MP3 files and listen it on the old FM radio that was available in the house he was in. It was also possible for him, once in a city a few kilometers away, to answer e-mails and read news using WiFi. You could just plug the mini HDMI to a modern TV, plug a keyboard on it and use a Bluetooth mouse to get a fully functional computer where you could even write and run python programs. All this at a time when basically nobody even talked about "convergence".
We've been walking backwards since then. These days the only devices able to give similar power are the still unpolished linuxphones. That's why we should support them or else we will continue walking backwards.
It's not obvious in Nokia's carefully crafted screenshots, but the N8 UI was very static, slow, and unfriendly to touch actions. It was fundamentally designed around menu navigation on phone keypads. That's not something you can simply fix by making the menu items touchable instead of using arrow keys, yet that's basically what Nokia tried to do.
I had an N8. Really nice device. A 13 megapixel camera in 2010? was pretty awesome and the aluminium body plus oled screen were pretty amazing as well. It actually had a screen saver mode that would stay on during the night where they'd only light a few pixels to show a clock.
But it was crippled by the OS; Symbian just wasn't great. And of course it still featured the resistive touch screen instead of a capacitive one (which Apple used).
Meego eventually shipped via the N900 (nice but very awkward form factor) and the only device that could have been great, the N9. Except they launched that years late and with the announcement that whole platform was being cancelled and the phone was for developers only. A misguided UI switch from GTK to QT, which Nokia bought to rescue Symbian did not help either.
Then windows phone started happening and and they unceremoniously killed Symbian. Then they handed the keys to MS. Somewhere in between, Nokia actually shipped a Nokia Android device, which MS promptly killed. Nokia also had another Linux platform (called Meltemi) under development aimed at feature phones. But that whole department got layed off a few months before the MS acquisition. I actually got caught up in that particular round (despite never having worked in that department). In the years after that, tens of thousands of engineers were shown the door. Probably the most bizarre and one of the largest layoff round of highly qualified hardware and software engineers in recent history.
Nokia had a great thing and they ran it straight into the ground. Arrogance and incompetence lead to a lot of bad decision making. The N8 is probably the key moment it went wrong for Nokia. They had all the solutions ready for market and then they chickened out and stuck with Symbian. There was more than a little bit of anger inside the company about that decision. The Symbian camp won and killed the company. Absolutely nothing they tried in the nearly three years that followed worked out.
What's more, even if somebody did understand this, any concerns would have fallen on deaf ears as Nokia also had a culture of corporate arrogance. It saw itself as too big & successful to fail. They could make whatever mistakes, but it was alright because they could always revisit and make better decisions later. I don't think they fully realized how wrong they were even years after the Android/iOS duopoly had already solidified - considering how immense amounts of money they kept spending (under M$) in trying to bootstrap the Windows Phone ecosystem that was always destined to fail.
I loved my N8. Built-in FM transmitter was awesome. And don't get me started on how many times it got dropped and laughed it off. At least 50 times onto concrete and such.
On the other hand, Maemo, the predecessor to Meego, required a pen-like pointer to comfortable use at the time as the UI elements were designed to be small. Only after they completely overhauled the UI (and renamed the Linux based OS Meego) it could have worked on the N8.
Meego/maemo had several UI redesigns. The issue was that Nokia just kept ripping it apart instead of just fixing it. The reason for the pen was resistive screens. Bigger buttons would have been an OK solution. The later n900 had the same issue. Ultimately, they bought QT to fix Symbian and then made the Meego team switch to that. They wasted years on the UI. Jolla emerged out of the ashes of that and is still around. Samsung's Bada is another descendant.
Of course, both are simultaneously true.
As you say, this phone was definitely ahead of its time as an open computing platform.
I had no idea that it even had an FM transmitter and support for composite video as well as HDMI. Thank you for sharing that.
However since everything in Symbian was designed first and foremost to minimize power use and memory requirements, the framework actively recommended against use of threads. Instead they asked you to schedule things on the app's main thread which gave the framework more control over when to run your callbacks. This wasn't a terrible idea at all, but the implementation of this system as a C++ multiple inheritance contraption was pretty confusing as I recall.
I would love to, but the reality is that unless you're in the Android/iOS duopoly ecosystem, you're increasingly unable to participate in some parts of society. Talking to people, banking, food delivery, parking, public transport...
As an active developer in a programming language with a small ecosystem, I scream this to the clouds all day: great software doesn't become well-supported until somebody has the gall to use it.
No thank you, I will never buy or use any hardware from Purism. They are openly hypocritical and I have zero trust for them.
Quoting from: https://puri.sm/posts/librem5-solving-the-first-fsf-ryf-hurd...
> The RYF has a “secondary processor” exclusion that can be granted on a case by case basis. We will leverage this exclusion to load and train the DDR PHY on the i.MX 8. We will use a secondary processor to keep binary blobs out of u-boot and the kernel.
Add extra silicon, to lock the user out of updating the firmware. Because the FSF will grant you an arbitrary badge of honour if the firmware is closed source, but not user-updatable. This is some next-level bullshit.
This is on top of the hardware being utter crap in terms of protecting user security or privacy; marcan_42 explains it quite well: https://news.ycombinator.com/item?id=30761886
If you want a reasonable trade-off between freedom and security, GrapheneOS is actually the only viable contender I'm aware of.
> If you want there to be a viable competitor to Chrome, use Firefox.
The IE monopoly was broken, because Mozilla made a better product. Also, it took Chrome to fully displace IE.
This is why FOSS can't "win". You have to have a better product, not just a feel-good badge. Look at the FOSS projects out there that are actually successful: they all have a good product strategy behind them. But for most FOSS activists, designing a better product is apparently much harder than indoctrination.
> This is why FOSS can't "win".
I'm not really sure what "win" means in this context. If "winning" is what Chrome is doing right now, I don't want Firefox to "win" either. Competition is good.
If your argument here is that FOSS can't produce a "better" product, Firefox is as much a counterpoint now as it was when it broke the IE hegemony. For the user, it's just as good as Chrome. It even provides some features Chrome doesn't have (for example, popping out videos and actually-good ad block). Nobody cares about how chrome is 50% (i.e. 0.8ms) faster at responding to thing X.
This is the problem. You advise on something, but you barely look beneath the surface.
> If "winning" is what Chrome is doing right now, I don't want Firefox to "win" either. Competition is good.
Please take a good look at what Mozilla has been busy with, this past decade or so.
https://www.jwz.org/blog/2022/01/mozilla-blinked/ https://www.jwz.org/blog/2020/09/this-is-a-pretty-dire-asses... https://www.jwz.org/blog/2018/12/mozilla-mourns-microsoft/ https://venturebeat.com/2015/06/09/mozilla-responds-to-firef... https://en.wikipedia.org/wiki/Firefox_OS
All this happened while Firefox struggled to modernise the rendering engine, introduce process isolation, address stability and performance issues... Yes I know Quantum eventually delivered on these - but it was too little, too late, and still isn't great.
The only reason Mozilla is still alive, is because Google is throwing money at them - to avoid too much attention from regulators looking at Chrome's market share.
> Nobody cares about how chrome is 50% (i.e. 0.8ms) faster at responding to thing X.
I care. Just put it on any older hardware. Like my 2012 Thinkpad (3rd gen i5; OpenBSD), or my partner's 2017 MBP (infamous for its poor thermal design), running Firefox on either is a miserable experience compared to Iridium (Chromium fork) or Safari. The hardware is still pretty good for our needs.
Don't get me wrong: I dislike Chrome just as much as you do. I want to like Firefox, and I do agree with Mozilla's stated goals and values. But I won't (and wouldn't advise anyone to) personally suffer over this, in fact doing so is doing Mozilla a disservice - they need to get the message, fix their act, and deliver a better product; rather than blowing cash on CEO bonuses, sealing deals to screw their users, or engaging in planet-incinerating ponzi schemes.
That was in 2007, around the time of the first iphone, but was so much more capable. Incredible at that time having all that power in your pocket. I never got lost in foreign cities because I could just get a GPS lock on the train station and find my way back, without using very expensive data in a foreign country. It was a strange thing being able to access the internet anywhere back then. In some ways it was a better time - social media networks hadn't cottoned on to the ability to deliver dopamine from the pockets of world's population, so the device felt powerful, but not like a ball and chain, or distraction-device like my pixel does these days.
[1] https://www.independent.co.uk/news/why-is-bill-gates-so-scar...
Twenty years ago my grandfather gave me his old Psion 3c. To a curious 10-year-old, the novelties of a world clock, spreadsheet and diary grew old after a few hours — but OPL caught my imagination…
Here I am now, two decades later, programming professionally full time as a startup founder — all thanks to a dinky little BASIC-like language on a pocket organizer from the early 90s :)
A hacker friend of mine carries around his pixel, which he has set up to use DAS KEYBOARD (ohne buchstaben) as his Linux development workstation.
This is a wonder to see, honestly. Truly a cyberpunk scenario out there on the edge of linuxphones.
Apropos, I flunk out with my PinephonePro+KB setup, which doesn't work nearly as well as his rig. Grr, power management "last 1%" ..
<math result="sf.spec.sbs.numberofjobs" operand1="${env.NUMBER_OF_PROCESSORS}" operation="" operand2="2" datatype="int"/>
instead of
numberofjobs = NUMBER_OF_PROCESSORS 2
Talk about a headwind to productivity.
However, as someone who is currently pushing bytecode on the wire in place of such things, because reasons, I can only tell you the madness is just a toolchain away.
I do wonder if this code is enough to build a working firmware image for a Nokia phone, but most probably some of the required parts are missing.
IIRC you are supposedly able to build and run this source dump on some BeagleBoard.
I was there, coding multimedia stuff for the last generation of Symbian smartphones. I remember this dump was originally released on Gitorious (later acquired by GitLab) some 10++ years ago.
Fun fact: the source was originally supposed to be licensed under a different roll-your-own open source license (I think it was named "Symbian Foundation License" or something like that) but Nokia switched to Eclipse Public License 1.0 before the public release.
It was one of my first roles outside of Uni, boy getting exposed to everything from low level system software and kernels to application development, and API creation. I learnt so much. Much of which, in principle is still valid.
I learnt a lot from the other developers and engineers a met.
Remember sitting a room with David Wood, where we talked through the creation of a book about Python development / entry level development on the platform. I still recall David's view that we should use the best, easiest, and also most expensive tooling in the book. But that seemed to lock so many people out of the ecosystem.
Anyway - to many memories, and so much I learnt. Meeting PhDs, and Grads today who struggle with how C/C++ works, I'm really lucky I got the chance to work on it when I did. And now I've a craving for a Series 5mx... ebay here I come...
But then again, remember the somewhat deserved reputation for awareness of that other product line in the software/techie world...
https://www.penny-arcade.com/comic/2003/06/30/also-known-as-...
We were lucky enough to be able to bootstrap some things with the Mono/Xamarin .NET implementation. Initially we created an interpreter but then created a full JIT compiler. It was not easy, to say the least, getting things to work on that platform.
What also didn’t help was the level of support we got from Symbian/Nokia; our project/startup was mostly met with indifference. By the time we had a viable, mostly functioning .NET Compact Framework v2 running the writing was on the wall vs iPhone.
https://github.com/SymbianSource/oss.FCL.sftools.dev.build/t...
In the end what killed my interest in them is that the cheapest you can get those is like 30 USD and for that price you can also get X86 thin clients that are just better in every single way.
Still, if you want to get your feet wet I suggest you start with RK3318. Those boards are much harder to brick than AmLogic and are the only ones with at least some support from Armbian: https://forum.armbian.com/topic/17597-csc-armbian-for-rk3318...
https://github.com/SymbianSource/oss.FCL.sf.os.kernelhwsrv/b...
1998 - 2010
Compared to iOS and Android development, Symbian was extremely hard, and iOS was much easy even with a whole new language (Objective-C, not the shiny Swift) to learn.