GithubHelp home page GithubHelp logo

ravynsoft / ravynos Goto Github PK

View Code? Open in Web Editor NEW
5.4K 103.0 180.0 2.38 GB

A BSD-based OS project that aims to provide source and binary compatibility with macOS® and a similar user experience.

Home Page: https://www.ravynos.com

License: Other

freebsd macos cocoa objective-c desktop osdev unix c cpp operating-system

ravynos's Introduction

What is ravynOS? Build Status Contributor Covenant

ravynOS is a new open source OS project that aims to provide a similar experience and some compatibility with macOS on x86-64 (and eventually ARM) systems. It builds on the solid foundations of FreeBSD, existing open source packages in the same space, and new code to fill the gaps.

The main design goals are:

  • Source compatibility with macOS applications (i.e. you could compile a Mac application on ravynOS and run it)
  • Similar GUI metaphors and familiar UX (file manager, application launcher, top menu bar that reflects the open application, etc)
  • Compatible with macOS folder layouts (/Library, /System, /Users, /Volumes, etc) and perhaps filesystems (HFS+, APFS) as well as fully supporting ZFS
  • Self-contained applications in App Bundles, AppDirs, and AppImage files - an installer-less experience for /Applications
  • Mostly maintain compatibility with the FreeBSD base system and X11 - a standard Unix environment under the hood
  • Compatible with Linux binaries via FreeBSD's Linux support
  • Eventual compatibility with x86-64/arm64 macOS binaries (Mach-O) and libraries
  • Pleasant to use, secure, stable, and performant

Please visit ravynos.com for more info: Release Notes | Screenshots | FAQ

Join us!

Packages hosted by: Cloudsmith


FreeBSD Source:

This is the top level of the FreeBSD source directory.

FreeBSD is an operating system used to power modern servers, desktops, and embedded platforms. A large community has continually developed it for more than thirty years. Its advanced networking, security, and storage features have made FreeBSD the platform of choice for many of the busiest web sites and most pervasive embedded networking and storage devices.

For copyright information, please see the file COPYRIGHT in this directory. Additional copyright information also exists for some sources in this tree - please see the specific source directories for more information.

The Makefile in this directory supports a number of targets for building components (or all) of the FreeBSD source tree. See build(7), config(8), FreeBSD handbook on building userland, and Handbook for kernels for more information, including setting make(1) variables.

For information on the CPU architectures and platforms supported by FreeBSD, see the FreeBSD website's Platforms page.

Source Roadmap:

Directory Description
bin System/user commands.
cddl Various commands and libraries under the Common Development and Distribution License.
contrib Packages contributed by 3rd parties.
crypto Cryptography stuff (see crypto/README).
etc Template files for /etc.
gnu Commands and libraries under the GNU General Public License (GPL) or Lesser General Public License (LGPL). Please see gnu/COPYING and gnu/COPYING.LIB for more information.
include System include files.
kerberos5 Kerberos5 (Heimdal) package.
lib System libraries.
libexec System daemons.
release Release building Makefile & associated tools.
rescue Build system for statically linked /rescue utilities.
sbin System commands.
secure Cryptographic libraries and commands.
share Shared resources.
stand Boot loader sources.
sys Kernel sources (see sys/README.md).
targets Support for experimental DIRDEPS_BUILD
tests Regression tests which can be run by Kyua. See tests/README for additional information.
tools Utilities for regression testing and miscellaneous tasks.
usr.bin User commands.
usr.sbin System administration commands.

For information on synchronizing your source tree with one or more of the FreeBSD Project's development branches, please see FreeBSD Handbook.

ravynos's People

Contributors

amotin avatar avg-i avatar bapt avatar bdrewery avatar brooksdavis avatar bsdimp avatar bsdjhb avatar bsdphk avatar cbrueffer avatar dag-erling avatar darkhelmet433 avatar delphij avatar dimitryandric avatar emaste avatar glebius avatar gwollman avatar hselasky avatar juikim avatar kevans91 avatar kostikbel avatar markjdb avatar mjguzik avatar ngie-eign avatar pgiffuni avatar rwatson avatar sleffler avatar sparcplug avatar trasz avatar tuexen avatar zxombie avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

ravynos's Issues

How can I contribute

I am interested on this project, but never had participate in larger project like this before.

Code wise, so far I can only help on the Python part. I am not sure where to start, and how to setup the development environment for this project.

Would like to ask for a simple guide on this, thank you.

Not all wireless cards are supported-- realtek

I use a realtek card on a toshiba satellite and native freebsd loads the urtw driver. This however recognizes the card, but the driver requires rtwn(4) in order to establish connection. Including the driver in the installer would fix this issue and I believe this is what furybsd achieved in their installer iso.
Another freebsd-specific issue is the matter of connecting different wireless configurations, like open or wpa-psk but this is something to bring up to freebsd.

Include libunwind by default

libunwind is needed by Foundation for exception handling (stack traces) and should be installed in /usr/lib by default instead of having to install the package to /usr/local/lib after installation.

Reconsider Linux as base

With the introduction of Syscall User Dispatch in Linux 5.11, it is now possible to implement foreign system calls in a less hackish and performant manner. One example for this https://github.com/meme/limbo ( a mach-o loader and XNU syscalls translator for Linux). Of course, the benefits vs drawbacks of implementing syscalls in userspace still has to be considered.

The benefit Linux brings in terms of hardware support cannot be understated. Imagine Linux with coherent desktop experience with the ability to ride on macOS app ecosystem success. That's a winner in my book.

Helium Window Manager

Create the heliumwm - a compositing window and desktop manager that will manage desktop wallpaper, icons, window placement & decorations, and the global menu bar. This can ideally be built off an existing WM as lots have tried to be Mac-like.

Prevent `pkg` from installing stuff now in base system

A side effect of abusing the ports collection to build some parts of the base system is that pkg will try to install "missing" dependencies which are actually already present outside of /usr/local. (Nothing shipped in the base system should be in /usr/local - that's reserved for end user stuff.) Dummy packages might prevent this: https://dan.langille.org/2021/02/16/preventing-a-given-package-from-being-installed/

Kudos to helloSystem for this idea.

NSLog has wonky timestamp

Either I've invented time travel or something's going on with NSTimeZone or NSLog here

NSLog(@"testing things"); produces:
2157-04-10 14:44:06.230 hello[37844:800a92000] testing things

Actual time was Thu Mar 4 08:25:59 EST 2021

Apple ARM compatibility

Just curious, of course I don't expect now to be happen: Will this project happens to be Apple ARM compatible in the future? And how difficult will be to make the current ARM64 FreeBSD compatible with Apple ARM?

Since Apple shifted to its own chip and can foresee many apps will eventually move to Apple ARM support as their priority.

Foundation should transitively include its dependencies when linked

Foundation needs CFNetwork for kCFStreamPropertySSLSettings and CFNetwork needs CoreFoundation.
Foundation also needs libunwind for exception handling and libobjc2 for obvious reasons.
These should all be transparently linked to any executable using Foundation - with appropriate RUNPATHs etc.

Options

  1. We could make the linker copy DT_RUNPATH and DT_NEEDED entries from any shared obj being linked to the resulting executable, then make sure Foundation has entries for the above.
  2. We could simply make the linker add the above libs and RUNPATHs to any app linking Foundation.
  3. We could make the dynamic loader (ld-elf) resolve the dependencies at runtime using DT_NEEDED and DT_RUNPATH from the linked shared objects.

2 is the easiest but most hacky, and 3 is probably the most elegant.

PoC: build Helium on top of helloSystem image

Create a Live CD ISO of helloSystem containing all the Helium changes from stock FreeBSD.

Success criteria:

  • boots & installs
  • working GUI
  • Bar.app compiles and runs from Filer
  • working clang/LLVM that understands frameworks
  • fonts in /System/Library/Fonts (maybe symlinked for now)

How to use Helium_M1_v0.1.2.iso?

Tried running Helium_M1_v0.1.2.iso on a machine with a Nvidia GPU. Drops me to a non-GUI login prompt where I can log in as root, but there is no startx command nor Xorg that I could find...

Support AppDir bundles with embedded Frameworks via relative shared object paths

Supporting AppDir (.app) folders with relocatable executable bundles requires the dynamic linker (LLVM's ld) to know how to find libraries within the app bundle, even when it moves around the disk. This is done by making them relative to the executable. Relative paths are indicated in the .dynamic section with a 'rpath' annotation instead of a fixed path.

Install default zsh config so user isn't prompted at first login

Something like this, but with the right /Users path :)

yuki% cat .zshrc
# Lines configured by zsh-newuser-install
HISTFILE=~/.histfile
HISTSIZE=1000
SAVEHIST=1000
bindkey -e
# End of lines configured by zsh-newuser-install
# The following lines were added by compinstall
zstyle :compinstall filename '/Users/zoe/.zshrc'

autoload -Uz compinit
compinit
# End of lines added by compinstall

Bar.app: Shared object "libjpeg.so.62" not found

Thank you very mich for uploading https://github.com/mszoek/helium/releases/download/M1/Bar.app.tgz, an example application to see whether it can run on helloSystem. So exciting!

This is what currently happens when you run it:

ld-elf.so.1: Shared object "libjpeg.so.62" not found, required by "libOnyx2D.so"

Please add libjpeg.so.62 to the bundle, since it doesn't seem to be a standard library on FreeBSD?

I tried this workaround:

sudo pkg install libjpeg-turbo
sudo cp /usr/local/lib/libturbojpeg.so.0.2.0 /usr/local/lib/libjpeg.so.62

But it is not sufficient:

image

Thanks to the launch command, we now get the message on screen:

This application requires at least version LIBJPEGTURBO_6.2 of libjpeg.so.62 to run.

(For double-clicking to work in helloSystem Filer, I symlinked the main executable to the top-level directory of the .app bundle.)

Choose reasonable default fonts

Choose reasonable default fonts in Onyx2D/O2Font.m initialize(). Make sure these fonts are installed in the base image. Update BASEFONT defined in framework.common.mk.

Call `layoutDidUpdate` whenever the menus are updated

Our global menu system relies on the DBus LayoutUpdated signal or ItemPropertiesChanged signal whenever menu items or the menu bar are changed. DKMenu in DBusKit is wired in to NSApplication:setMenu and sends the LayoutUpdated whenever the root menu is assigned. Problem is: this won't catch changes to the menu items or menus within the root, including changes to the Services or Window menus which are dynamically updated as e.g. windows map and unmap. Needs moar hooks.

Xorg fonts not in correct directories

[   571.446] (==) Max clients allowed: 256, resource mask: 0x1fffff
[   571.446] (WW) The directory "/usr/share/fonts/misc/" does not exist.
[   571.446]    Entry deleted from font path.
[   571.446] (WW) The directory "/usr/share/fonts/TTF/" does not exist.
[   571.446]    Entry deleted from font path.
[   571.446] (WW) The directory "/usr/share/fonts/OTF/" does not exist.
[   571.446]    Entry deleted from font path.
[   571.446] (WW) The directory "/usr/share/fonts/Type1/" does not exist.
[   571.446]    Entry deleted from font path.
[   571.446] (WW) The directory "/usr/share/fonts/100dpi/" does not exist.
[   571.446]    Entry deleted from font path.
[   571.446] (WW) The directory "/usr/share/fonts/75dpi/" does not exist.
[   571.446]    Entry deleted from font path.
[   571.446] (==) FontPath set to:
        catalogue:/usr/etc/X11/fontpath.d

Fonts are actually in /usr/share/fonts/X11/

ld-elf.so.1: Shared object "libAppKit.so" not found, required by "CocoaDemo"

Thanks for starting this project, excellent (helloSystem too) 👍. I wanted to try CocoaDemo but I got the next error:
ld-elf.so.1: Shared object "libAppKit.so" not found, required by "CocoaDemo"
Do I need to do something before running the demo?

Thanks!

Note: Running inside Gnome Boxes v40.

Greetings!!!

airyx_system

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.