68
I Use This!
Activity Not Available

News

Analyzed 4 months ago. based on code collected 6 months ago.
Posted 2 days ago by anirudhm
Hello World. This is an update to my previous blog post which dealt with the introduction to the GSoC project which I’ll be working this summer - Preferences GUI Refactoring. It’s been two weeks since the first post went live, so here’s the report ... [More] for the weeks after that. This being the Community Bonding period, I pretty much did what the title says. Got to know about fellow GSoCers, they really are friendly and helpful. Myself, my mentors (waddlesplash and Sean), PulkoMandy, jua_ and humdinger had our first meeting, infact a very long meeting. The meeting was more of a discussion on the last blog post’s comments. Last blog post received so many suggestions and constructive criticisms, let me thank everyone for their valuable feedback. We did take everything into concern. The major changes that are done to the project after the blog post: The control panel (we call it SuperPrefs for now) will be segregating preference panels category wise, along with an inner search implementation (as explained in last blog post). We’re dropping off the Preview pane, at least for now, it doesn’t seem to make many changes and there were more major things to be addressed. Incase you missed the last post, here’s a link to that. Note that SuperPrefs is not the final name; the final name will probably just be “Preferences”. Hurdle #1: Last week, messed up my Mac by updating Xcode via App Store. I’ve never had problems with updating apps through App Store until last week. I had to pause my download couple of times in between the download progress, and resume it. I’m not sure whether it was because of that, the Command Line tools got messed up, and I wasn’t able to even build Haiku. It seems that the compiler got crashed. There’s even an article about this stating why not to update Xcode through App Store. Xcode Upgrades: Lessons learned. The solution was to completely uninstall Xcode and its Command Line tools and had to reinstall it from the Apple’s developer site downloads page: developer.apple.com/downloads. So, if any macOS users are reading this, do not pause or terminate it in the middle of the update, had to learn it the hard way. Progress: Coming back to Haiku, I learned how the menu entries of the deskbar menu are being fed, and working of Jam. I did a small work on adding SuperPrefs to the menu entry list. Most probably, SuperPrefs will be getting a place in the main menu rather than amongst Preferences menu entries. Here’s a preview: In further weeks, I’ll be working on the implementation of the SuperPrefs’ app window. The major learning and coding part is yet to come, and am excited about it as well. The changes will be going here at my GitHub profile: AnirudhMurali. No changes as of now, you can see changes in the coming weeks. Thank you! [Less]
Posted 3 days ago by digib0y
Hello everyone, As you already know I am working on HarfBuzz Support on Haiku this summer. You can find my introduction post here. In this post I will be you a brief details of my last 2 weeks with Haiku. Getting to know people: Considering the fact ... [More] I have been in Haiku Community earlier I already knew a lot of members. I just wanted to mention a few who helped in these past 2 weeks. Stippi(Stephan): He is one of the coolest guy I have met, apart from questions related to the project. I messaged him with some questions related to my personal computer and guess what? He was happy to help. PulkoMandy: It wasn't the first time I was communicating with Pulkomandy. I learned more about PulkoMandy in these 2 weeks and trust me, his hands are dirty, dirty with codes. He one of the guy with knowledge of everything related to Haiku.Humdinger: He is the best when it comes to merging my PR xD Waddlesplash: Got any issue related to website? Ping him and he will fix it in a gist. Project update: I devoted my last two weeks on learning more about Harfbuzz and testing Hindi Language on Haiku.I promised to share screenshots of Hindi and other languages on various operating systems in my proposal.This image is self-explainatory and tell you what's wrong with rendering on Haiku right now. I have also prepared a video which gives details on how this project will help Haiku. Next Goal: With the help my mentors I will be working on a small application that can render text using Harfbuzz.Overall, my interest is directly proportional to the learning done in the project. Trust me, right now it is at a steap hike. Thank you for choosing me for this project. [Less]
Posted 4 days ago by hyche
Hello everyone, This is my second report about my project "Adding write supports for BTRFS". There hasn't been much coding in this week and previous week, just some researchs, some style fixes in btrfs code base, and I have managed on setting up ... [More] fs_shell for btrfs, or now you can say btrfs_shell, based on bfs_shell work. fs_shell is a framework containing all the kernel emulation and the user and scripting interface (Thanks Ingo for the info), this allows to compile and run filesystem (Haiku's, for example btrfs) in userland under Linux or any host systems that can build Haiku. With fs_shell, now I can test btrfs in many files with different size after only 5 second of building. Initialy, I had to build btrfs source, made hpkg for it, move the package to /system/packages and restart to get it kicked in, luky for me that Haiku took few seconds to boot. Thanks axeld for recommending me fs_shell, and pulkomandy for helping me compile zlib for btrfs_shell and fix code styles. Also in this week, I learnt more about Git and Jam. Before attending GSoC, I only knew git clone, commit and push with no arguments. The first blog of my introduction is also my first pull request. Now I know I should sync my local repository with the upstream haiku repository with git pull --rebase instead of normal git pull, this help clean the git history. Moreover, git commit --amend to fix the HEAD commit, or git rebase --iterative to fix previous commits that are before HEAD. I recommend this link for who want to learn about Git. With Jam, I know more some rules, some Haiku's built-in variables for example HOST_LINKFLAGS, it help me link zlib to compile btrfs_shell. Next week works Because I have set up my development evironment sucessfully, next I will continue dive into code base, read more about btrfs to understand more about it and will do some code if necessary. I made a branch for my work in my Haiku’s fork, still there is nothing there. If someone is interested, you can have a look at anytime and give me some comments if possible. That's all, thanks and have a nice day, see you again next week. [Less]
Posted 4 days ago by vivek
Hello again My previous blog post was a brief introduction to my project - 3D Hardware Acceleration in Haiku. The second week of GSoC demands the second post and so here we go. Bonding Well, there hasn’t been a lot of coding work in the last two ... [More] week, as much as I would have liked, primarily because I wasn’t well for a couple of days. But, I did do what I am supposed to do at this period, i.e. “Bonding with the Community”. I was regular to the IRC before GSoC started, so I was already familiar with the names. Last two weeks I came to know the people even better. Adrien (PulkoMandy), Fredrik (tqh), James Taylor (Duggan) and Alex (kallisti5) have helped me a lot, among others. I also made friends with my fellow interns - Akshay (akshay), Anirudh (anirudhm), Ayush (a-star), Deepanshu (digib0y), Hy (ugen) and Joseph (return0e). Good luck to all of them. Progress I started off, thinking of trying to generate an include dependency graph (every node in the graph represents a header/source file in the project and every directed edge from file1 to file2 indicates that file1 has included file2). The motivation was if I could generate such a graph, then I could easily move up from the leaf nodes to the highest-connectivity node in the graph, without breaking the compilability of the source. I tried to generate the graph using Doxygen, running it on DragonflyBSD’s sources. It looked good for some files, like drm_atomic.h shown below. But it failed for drm_auth.c (drmP.h has a fairly large list of dependencies, which I expected to see in the graph, but unfortunately did not). I asked people on the mailing list for help, and surely enough, received a lot of it. PulkoMandy suggested some more tools, but none of the seemed to work the way I wanted them to. At last, on PulkoMandy’s and Duggan’s suggestions, I decided to add files to the source and rely on the compiler generated error files to proceed. I have set up the development environment. The Jamfile for building DRM is ready and populated with the files required for DRM. The way I am moving forward from here is as follows: Uncomment a file in the DRM Jamfile, so that an attempt is made to compile it. The compiler complains about some missing file. Try to add the missing file to the source tree. Repeat At some point, when everything actually compiles, then we will start the testing phase, as successful compilation does not mean everything will work. Hamish Morrison (hamishm) started working on DRM Drivers in Haiku about 2 years back. His repository[1] has been the starting point of my work. Duggan integrated hamishm’s work into his fork[2] of Haiku’s latest code base and cleaned up a few files. I wanted to take things one-file-at-a-time. So, in my fork[3], I started adding the source files and headers that are absolutely required for DRM one-by-one from Duggan’s repo and DragonflyBSD’s Linux Compatibility Layer, tweaking them as required. You can track the changes I make by looking into the ‘drm’ branch of my fork[3]. I have just started with this iterative process and I do not expect it finish quickly, but the effort is being made to be done with it as quickly as possibly, the road ahead is long. References Hamish Morrison’s haiku-drm repo James Dewey Taylor’s fork My fork’s drm branch [Less]
Posted 5 days ago by akshayagarwal007
Hello Everyone! In my previous post I introduced you all to the Calendar Application project that I would be working upon as a part of GSoC 2017. In this post I would be focusing on my first two weeks of the community bonding period. Getting to ... [More] know people The first few days were spent in exploring more about the Haiku community, getting to know the mentors and fellow students, and learning in details about their project through their blog posts. All the projects are geared to take Haiku forward and it would indeed be an awesome summer for Haiku. I would like to thank the community members for their feedback on my introduction blog post. Their excitement for a Calendar application makes me even more excited to develop a lovely Calendar application for the community. Haiku has a beautiful community. All the members are cool and helpful, I would like to mention about a few of them. PulkoMandy: He's always there for you. Any issue you face and he'll resolve it in seconds. I am getting to learn a lot from him. Scott: Very helpful and motivating, will always point you to the right direction. I have a nice time talking to him. waddlesplash and humdinger: Always ready to help, and have helped me a lot with my PRs to apps in Haiku Software Archives. anirudhm, digib0y and vivek: Awesome guys, it's nice discussing stuff with them. Things successfully done I worked on fixing style formatting issue with BDurationFormat and BTimeUnitFormat classes which are a part of Locale Kit. BDurationFormat is used to format time intervals in a localised way i.e it takes in a time interval and converts it to a string such as "10 hour, 2 minutes, 28 seconds". There are two formatting styles supported: full name and abbreviated name. For example, for English, the full name for hour duration is "3 minutes", and the abbreviated name is "3 min". But the abbreviated style didn't work because the BTimeUnitFormat class didn't incorporate the same. I submitted a patch to resolve this and it got successfully merged (thanks to PulkoMandy). The abbreviated style works fine now. Screenshot of TimeTracker app showing abbreviated style: Issues that I faced and how I resolved them: I faced difficulties in pointing to the changed headers (rather than the one in system/develop) while compiling the test application. I used the -I flag with gcc pointing to the changed headers to get it done. I was not able to link the test application to the newly built libbe.so. I fixed it by adding the newly built libbe.so inside a lib folder next to my executable. For getting a new build of libbe.so after my changes to files in the locale kit, I simply did jam libbe.so from within root of my Haiku clone instead of compiling the entire source. Initially I was compiling the entire source and it was taking a lot of time. I was able to resolve the issues quickly with PulkoMandy's help. The Calendar App I have started experimenting with the GUI. I am currently putting my code here: AkshayAgarwal007/Calendar . I started with adding a simple toolbar to a window and adding some vector icons to the toolbar buttons. Issues that I faced and how I resolved them: I took one of the icons from here, exported it as HVIF Rdef using Icon-O-Matic, copied the hex representation into a .rdef file. Loaded the vector icon into a BBitmap object and passed it as a parameter to BToolBar::AddAction(). But the icons were not aligning properly in the toolbar buttons.The reason for the same was that the icons have transparent area to the right and bottom i.e they are 32x32px in size but only a 22x22px area in the corner is used. So I rendered the icon to a 32x32px bitmap and copied the required region in the corner to a 22x22px bitmap using BBitmap::ImportBits(). Finally, it got aligned perfectly. Also I wasn't the handling the BBitmap object properly. BBitmaps are expensive, since they create a full drawing context and thread in the app_server. B_BITMAP_NO_SERVER_LINK flag can be used while creating a BBitmap object to make it cheap to create but such a bitmap is not drawable. BBitmap::ImportBits() would work fine with this bitmap. The following two commits can be helpful for anyone facing similar issues: AkshayAgarwal007/Calendar@3f565bd AkshayAgarwal007/Calendar@8b7128f Stippi and PulkoMandy helped me in getting it done right. The icons are just placeholder icons. Next I would be doing some more experimentation with the GUI, and dive into doing some base work/research towards the Google Calendar integration and storage part. Also would be working towards finalising the left mockups. Learnings Bitmaps are expensive and should be handled properly. While creating a BBitmap object, B_BITMAP_NO_SERVER_LINK flag can be used when calling the constructor to make it less costly, but they are not drawable. i18n and L10n in general, ICU, and Haiku Locale kit. Writing good software (source: Haiku HIG). Compiling Haiku components and testing them. Altogether, it's a nice experience till now, and I am enjoying working on the project very much. [Less]
Posted 13 days ago by return0e
Introduction Hello everyone! I'm Joseph 'Calvin' Hill, (irc nick: return0e) a third year computer science student at the University of Hull and one of the 7 GSoC students participating with Haiku. I'm also a active contributor to the HaikuPorts ... [More] organisation, by porting over useful cross-platform software found on other platforms, to be made available on Haiku. This summer, I'll be porting the Swift programming language to Haiku with my mentors Jérôme Duval 'Korli' and Julian Harnath 'jua', with the intention of merging these changes upstream. Project Description Haiku has ports for several modern programming languages available to developers, but some of them are in the form of version specific patches, which haven't been upstreamed yet. As new releases of programming languages come by, maintenance of platform support through patches becomes increasingly difficult and Haiku misses out on official support for those languages. By working directly with the Swift community, this task aims to add Haiku support specifically for Swift and its sub-projects in the effort to not only improve Haiku's programming language diversity for future developers, but to make swift a possible alternative programming language to develop Haiku apps in. Once the compiler and its standard library is built, it will be possible to compile and run Swift code on Haiku which will then allow developers to build libraries and applications that are written in Swift. If this is achieved early, the other utilities Swift uses such as debugging/REPL support (LLDB), package management and its testing frameworks will follow afterwards. The following will be done within the duration of the GSoC: Building swiftc and its standard library. Porting the core libraries to Haiku. Ability to compile/run simple swift programs. Run tests against the newly built standard library and swiftc. As this task only focuses on the bare-minimum needed to get swift functional, I will further maintain Haiku support after GSoC and include: Porting libdispatch. Package Manager support on Haiku. (requires llbuild) Support for LLDB debugging. About Swift Swift is a general-purpose programming language built using a modern approach to safety, performance and modern software design patterns [1]. It was recently open-sourced by Apple in 2015 with goals such as being a C/C++ and Objective-C alternative, maintaining source compatibility with future releases and increasing portability with various platforms by leveraging the LLVM compiler for code generation and optimisation of source code. Swift is commonly used in the iOS/macOS communities for writing GUI apps, but it is also suitable for other scenarios, from teaching programming to server-side development. It has several language features such as: Closures (unified with function pointers) Optionals Generics Built-in REPL for debugging (LLDB) Functional programming patterns support C and Objective-C interoperability via ClangImporter Swift also provides additional libraries for functionality not included in the standard library. More information about them can be found here: [5] Goals for next week During the community bonding period, I will be in contact with the Swift team about which version I should port, as Swift 4 is scheduled to be released in late 2017. I'll also be discussing with my mentors on adding slight changes to the existing LLVM port in order for Clang to build itself, as using g++ to compile Swift is not supported. In the first two weeks (May 4th - May 18th) the following will be achieved: Add initial x86-64 platform recognition in the build script. Add Haiku as a standard library target. Haiku support for validation tests. Complete build-script support for Haiku. (Includes building only with LLVM and Clang) I’ll be continuing to patch the build-script for initial Haiku support and I aim to get the build-script patches upstreamed in late May / early June. References [1] https://swift.org/about [2] GSoC Proposal [3] Swift GitHub Repository [4] Swift Compiler Architecture [5] Swift Core Libraries [Less]
Posted 13 days ago by a-star
Hello Haiku! My name is Ayush (nick: a-star). I am really glad to have been selected for GSOC 2017 and I will be striving to optimize the tcp implementation of Haiku this summer. A little about me I am in the junior year of computer science and ... [More] egineering at VITCC, India. I am a profound Linux user. I have gained formal education on the subject while pursuing the Redhat certifications. I have always been fascinated with the intricacies behind the scene, the internal working of an operating system which makes you believe that the trivial program of ‘Hello world’ is actually trivial. Project Motivation TCP and IP together form the most ubiquitous pair of protocols used in the implementation of the internet stack. It’s really important to get them working at full throttle. When I was going through the list of issues at Trac, a lot of them complained about the network: #1958, #12815 - slow speeds during file exchange using ftp, scp, sftp #10747, #11066, #1143 - network related KDLs #1073 - requesting implementation of path MTU discovery #2967 - bug with getpeername() that succeeds on unconnected sockets #1994 - requesting implementation of urgent data for TCP and more ... RFC 7414 is a roadmap for implementors of TCP and I shall be following it closely, implementing features not already present or not fully implemented. Current state The code for TCP can be found here. It provides for all the mainframe syscalls like: bind, listen, sendmsg, etc. Needless to say, all the salient features of tcp like checksum, window, ack, fin are well implemented. So what we have is a up and running tcp implementation but it lacks much of the extensions suggested by rfc 7414 like the timestamps option, window scale option, round trip time mechanisms involving timestamps, appropriate byte counting (ABS) for congestion control, Robust header compressions, etc. I haven't had the time to go through the complete code for TCP so if I mistated something above, well sorry for that. I am currently busy with my college exams. They are ending on 24th of this month and only after that will I be able to completely devote my time to this project. What to expect For this month, I am mainly focused on porting a TCP profiler such as tcpdive to haiku. It will be necessary to benchmark the improvements I will be making in the subsequent months. There are other alternatives to tcpdive like tcpstat and google's packet driller . Let's see which one turns out to be easily portable to Haiku. If anyone has any suggestions regarding any other profiler, I would be glad to try and port that as well. During summer I will be implementing each section of rfc 7414 one after the other. There are majorly 3 sections and I will have 3 months to work on them: Section 2: describes the very fundamental functionalities of tcp. Section 3: Strongly Encouraged Enhancements - describes recommended TCP modifications that improve performance and security Section 4: Experimental Extensions - describes those extensions that are not widely but are gaining popularity For more details on the timeline, you can refer to my proposal. Thnx… [Less]
Posted 13 days ago by a-star
Hello Haiku! My name is Ayush (nick: a-star). I am really glad to have been selected for GSOC 2017 and I will striving to optimize the tcp implementation of Haiku this summer. A little about me I am in the junior year of computer science and ... [More] egineering at VITCC, India. I am a profound Linux user. I have gained formal education on the subject while pursuing the Redhat certifications. I have always been fascinated with the intricacies behind the scene, the internal working of an operating system which makes you believe that the trivial program of ‘Hello world’ is actually trivial. Project Motivation TCP and IP together form the most ubiquitous pair of protocols used in the implementation of the internet stack. It’s really important to get them working at full throttle. When I was going through the list of issues at Trac, a lot of them complained about the network: #1958, #12815 - slow speeds during file exchange using ftp, scp, sftp #10747, #11066, #1143 - network related KDLs #1073 - requesting implementation of path MTU discovery #2967 - bug with getpeername() that succeeds on unconnected sockets #1994 - requesting implementation of urgent data for TCP and more ... RFC 7414 is a roadmap for implementors of TCP and I shall be following it closely, implementing features not already present or not fully implemented. Current state The code for TCP can be found here. It provides for all the mainframe syscalls like: bind, listen, sendmsg, etc. Needless to say, all the salient features of tcp like checksum, window, ack, fin are well implemented. So what we have is a up and running tcp implementation but it lacks much of the extensions suggested by rfc 7414 like the timestamps option, window scale option, round trip time mechanisms involving timestamps, appropriate byte counting (ABS) for congestion control, Robust header compressions, etc. I haven't had the time to go through the complete code for TCP so if I mistated something above, well sorry for that. I am currently busy with my college exams. They are ending on 24th of this month and only after that will I be able to completely devote my time to this project. What to expect For this month, I am mainly focused on porting a TCP profiler such as tcpdive to haiku. It will be necessary to benchmark the improvements I will be making in the subsequent months. There are other alternatives to tcpdive like tcpstat and google's packet driller . Let's see which one turns out to be easily portable to Haiku. If anyone has any suggestions regarding any other profiler, I would be glad to try and port that as well. During summer I will be implementing each section of rfc 7414 one after the other. There are majorly 3 sections and I will have 3 months to work on them: Section 2: describes the very fundamental functionalities of tcp. Section 3: Strongly Encouraged Enhancements - describes recommended TCP modifications that improve performance and security Section 4: Experimental Extensions - describes those extensions that are not widely but are gaining popularity To more details on the timeline, you can refer to my proposal. Thnx… [Less]
Posted 15 days ago by hyche
Hello everyone, My name is Hy (Trac: hyche, freenode IRC: ugen), and this first blog is about my introduction and Btrfs. This is the first time I participate in Google Summer of Code, I also know Haiku through this event. My project in this summer ... [More] is write supports for Btrfs and my main mentors are mmu_man and tqh (Fredrik Holmqvist). During the community bonding period, I will Set up my development environment (userlandfs and fs_shell). Dig into the codebase to know more about Haiku kernel, how other support filesystems work and derive it for Btrfs. Try to fix issues to get me familiar with the existed works. Btrfs Btrfs (B-tree filesystem) is a filesystem uses B+trees as its main on-disk data structure. It is based on Copy-on-Write (CoW) principle which means it does copy only when a write is necessary. The following works will be implemented to bring off write features: Adding more Btrfs structures. Adding/Modifing tree manipulations (splitting, finding, CoW, etc). Implement file/directory operations. That's all for now. You can read more details in the reference section. Bye and have a nice day! References My GSoC proposal Btrfs wiki [Less]
Posted 15 days ago by hyche
Hello everyone, My name is Hy (Trac: hyche, freenode IRC: ugen), and this first blog is about my introduction and Btrfs. This is the first time I participate in Google Summer of Code, I also know Haiku through this event. My project in this summer ... [More] is write supports for Btrfs and my main mentors are mmu_man (François Revol) and tqh (Fredrik Holmqvist). During the community bonding period, I will Set up my development environment (userlandfs and fs_shell). Dig into the codebase to know more about Haiku kernel, how other support filesystems work and derive it for Btrfs. Try to fix issues to get me familiar with the existed works. Btrfs Btrfs (B-tree filesystem) is a filesystem uses B+trees as its main on-disk data structure. It is based on Copy-on-Write (CoW) principle which means it does copy only when a write is necessary. The following works will be implemented to bring off write features: Adding more Btrfs structures. Adding/Modifing tree manipulations (splitting, finding, CoW, etc). Implement file/directory operations. That's all for now. You can read more details in the reference section. Bye and have a nice day! References My GSoC proposal Btrfs wiki [Less]